Помогите с простой задачей.

Тема в разделе "Общие вопросы по С и С++", создана пользователем Donat, 22 ноя 2005.

Статус темы:
Закрыта.
  1. Donat

    Donat Гость

    Программа принрмает ФИО, год рождения и т. д. Хоршо все выводит, но я никак не могу понять, почему метод пузырька тут не работает.(Я надеюсь, что здесь найдется человек, который увидит здесь ошибку или хоть как-нибудь подскажет)(С++ v 3.1):
    #include <stdio.h>
    #include <string.h>
    void main(){
    const int max = 50;
    int Number, i;
    struct Students{
    char Name[40];
    int Year;
    char Tel[15];
    }Spisok[max];

    printf("\nVvedite kolichestvo stydentov N =");
    scanf("%i", &Number);

    for ( i = 0 ; i<Number; i++){
    printf("Vvedite FIO\n");
    scanf("%s", &Spisok.Name);
    printf("Vvedite God\n");
    scanf("%i", &Spisok.Year);
    printf("Vvedite Telefon\n");
    scanf("%s", &Spisok.Tel);
    }


    {for (i = 0; i<Number-1; i++);{
    int imin = i;
    for ( int j = i + 1; j < Number; j++){
    if(strcmp( Spisok[j].Name, Spisok[imin].Name) < 0)
    imin = j;
    char a[40]; strcpy(a, Spisok.Name);
    strcpy(Spisok.Name, Spisok[imin].Name);
    strcpy(Spisok[imin].Name, a);}
    } }

    printf("\nSpisok vsex vvedennix stydentov\n");
    printf(" FIO");
    printf(" God rogdenia");
    printf(" Telefon\n");
    for ( i = 0 ; i<Number; i++){
    printf("\n%30s%8i%20s", Spisok.Name, Spisok.Year, Spisok.Tel);
    }
    }
    Заранее благодарю за ответ.
     
  2. Anton Chik

    Anton Chik Гость

    во-первых правильно ли будет писать scanf("%i", &Number); ??? в частности %i вместо %d ,
    во-вторых после ввода данных(перед сортировкой) выводи эти данные ,чтобы посмотреть правильно ли они ввелись,
    а в-третьих мне кажется описанная тобой сортировка больше смахивает на "последовательный отбор" нежели на "пузырика" (судя по структуре циклов сортировки).
    вижу косяк - цикл j надо закрыть после

    if(strcmp( Spisok[j].Name, Spisok[imin].Name) < 0)
    imin = j;

    ,а не после

    strcpy(Spisok[imin].Name, a);} как у тебя

    еще,кстати,замечены лишние скобки (зачем выделять само тело сортировки???)

    p.s. плохой тон "сто" раз в цикле (а у тебя даже в двух вложенных) объявлять char a[40] ...
    ,а хорошим тоном считается писать скобки одного тела друг под другом - читать будет удобнее B)

    вобщем ,разберись со всем этим для начала...
     
  3. Donat

    Donat Гость

    Все, вроди разобрался, все работает. Спб
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей