Сортировка букв С программирование - PullRequest
0 голосов
/ 21 сентября 2011

Я пытаюсь сделать буквы матрицы отсортированными по алфавиту, а затем записать их в одну строку. Например, вы вводите десять слов, которые затем сохраняются в массиве, и каждая буква занимает свое место в матрице.тогда, верно? Но после того, как я написал слова, я хочу собрать все буквы всех слов воедино и затем напечатать все буквы в алфавитном порядке. Это то, что я до сих пор:

#include <stdio.h>
#include <conio.h>

int main(void){
    int i, j, k, f, n, m; 
    //was trying out various things,that's why I have so many useless ints up there
    char word[10][15],temp;

    for(i=0;i<=9;i++)
    {
        printf("Type in wword number %d: ", i+1);
        gets(word[i]);
    }

    for(k=i-1;k>=0;k--)
    {
        for(m=0;m<k;m++)
            if(word[k][f] > word[m][n])
            {
                temp=word[k][f];
                word[k][f]=word[m][n];
                word[m][n]=temp;
            }
    }
    printf("Letters alphabetically sorted: ");
    for(i=0;i<=9;i++){
        for(j=0;j<=14;j++){
            printf("%d",word[i][j]);
        }
    }
    printf("\n");
    getch();
}

Я все еще изучаю матрицы и уже довольно хорошо знаком с массивами. Но сортировка сбивает меня с толку, это была моя попытка, но она не работает. Позволяет написать все слова, а затем происходит сбой.

Что я здесь не так делаю? И как мне это исправить?

Ответы [ 4 ]

3 голосов
/ 21 сентября 2011

В вашем коде здесь:

        temp=word[k][f];
        word[k][f]=word[m][n];
        word[m][n]=temp;

переменные n и f используются неинициализированными. Это, скорее всего, будет причиной аварии.

1 голос
/ 21 сентября 2011

f, n неинициализированы.В нем есть мусор, и это является причиной сбоя на этом этапе.

for(k=i-1;k>=0;k--)
{
    for(m=0;m<k;m++)

    if(word[k][f] > word[m][n]) // f,n are uninitialized and are error prone
0 голосов
/ 22 сентября 2011

Я думаю, что это будет работать .. Пожалуйста, извините и скажите мне ..

void main()    
{

char word[10][15],temp,sorted_word[15];

int i,j,ii,k,l=0;

for(i=0;i<=9;i++)             
{                  
printf("Type in wword number %d: ", i+1);                 
gets(word[i]);            
}


for(i=0;i<=9;i++)

{

for(j=0;word[i][j]!='\0';j++)

{

ii=i;
for(k=j+1;1;k++)
{
if(ii==9 && word[ii][k]=='\0')
break;
if(word[ii][k]=='\0')
{
ii++;
k=0;
}
if(word[i][j]>word[ii][k])
{
temp=word[i][j];
word[i][j]=word[ii][k];
word[ii][k]=temp;
} 
}
sorted_word[l++]=word[i][j];
}

}

sorted_word[l]='\0';

printf("%s",sorted_word);

getch();

}
0 голосов
/ 21 сентября 2011

здесь

for(i=0;i<=9;i++)
{ printf("type in wword %d: ",i+1);
gets(word[i]); 
}

получает (слово [1]);

сохраняет значение от слова [1] и далее, но где массив символов начинается со слова [0].

Возможно, это не полное решение вашей проблемы. Эта проблема может помочь вам в решении ваших сомнений.

...