1

入力された名前と年齢をアルファベット順に並べ替えるプログラムを書いています。年齢は別々に入力されるので、ポインターの配列を使用して年齢を名前の配列に結び付ける必要があることはわかっていますが、それを行う方法がわかりません。何か案は?

これまでのところ、私のプログラムは名前をアルファベット順に並べるだけです。

/* program to alphabetize a list of inputted names and ages */

#include <stdio.h>
#define MAXPEOPLE 50
#define STRSIZE 

int alpha_first(char *list[], int min_sub, int max_sub);
void sort_str(char *list[], int n);

int main(void)
{
    char people[MAXPEOPLE][STRSIZE];
    char *alpha[MAXPEOPLE];
    int num_people, i;
    char one_char;

    printf("Enter number of people (0...%d)\n> ", MAXPEOPLE);
    scanf("%d", &num_people);

    do
        scanf("%c", &one_char);
    while (one_char != '\n');

    printf("Enter name %d (lastname, firstname): ", );
    printf("Enter age %d: ", );
    for (i = 0; i < num_people; ++i)
        gets(people[i]);

    for (i = 0; i < num_people; ++i)
        alpha[i] = people[i];
    sort_str(alpha, num_people);

    printf("\n\n%-30s5c%-30s\n\n", "Original List", ' ', "Alphabetized List");

    for (i = 0; i < num_people; ++i)
        printf("-30s%5c%-30s\n", people[i], ' ', alpha[i]);

    return(0);
}

int alpha_first(char *list[], int min_sub, int max_sub)
{
    int first, i;

    first = min_sub;
    for (i = min_sub + 1; i <= max_sub; ++i)
        if (strcmp(list[i], list[first]) < 0)
            first = i;

    return (first);
}

void sort_str(char *list[], int n)
{
    int fill, index_of_min;
    char *temp;

    for (fill = 0; fill < n - 1; ++fill){
        index_of_min = alpha_first(list, fill, n - 1);

        if(index_of_min != fill){
            temp = list[index_of_min];
            list[index_of_min] = list[fill];
            list[fill] = temp;
        }
    }
}
4

2 に答える 2

1

次のように、ほとんどの printfs は構文エラーです。

printf("Enter name %d (lastname, firstname): ", );
printf("Enter age %d: ", );

' 'または、 int ( ) をポインターとして渡すため、すぐに爆撃します。

printf("\n\n%-30s5c%-30s\n\n", "Original List", ' ', "Alphabetized List");

最初のステップとして、あなたの s をすべて正しいものにして、ランダムなゴミではなく、実際%にコンパイルしたものを見せてください。そして、コンパイラの警告レベルを最大まで上げる必要があります! とは

#define STRSIZE

STRSIZEが arary ディメンションとして使用される場合を意味するはずですか? 深刻なカット アンド ペーストの問題が発生している可能性があります。

于 2013-07-17T21:10:02.607 に答える