Поименованый тип данных в С и работа с ним!

Тема в разделе "Общие вопросы по С и С++", создана пользователем Nadin85, 8 апр 2008.

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

    Nadin85 Гость

    Цель программы обработка массива таким образом, что вычислить процент иностранных студентов отличников.
    У меня есть решение, но этот код работает не коректно, тоесть когда я меняю оценки, результат программы не меняеться, а ведь должен то процент меняться. Вот привожу пример этого кода:

    [codebox]#include <conio.h>
    #include <stdlib.h>
    #include <stdio.h>

    void main ()
    {
    enum citizenship {ukr, rus, eng}; // это национальности студентов, иностранных я обозначила eng

    struct t
    { citizenship c; //гражданство
    char rate; //курс
    int ball; //бал
    };

    t stud [7];
    char rate [] = { '1', '2', '3', '4', '5', '2', '1' }; //массив курсов
    int ball [] = {1, 4, 5, 4, 5, 3, 5}; // массив оценок
    for (int i = 0, k = 0; i < 7; i++, k++)

    {
    if(k==2)k=0;
    stud .c = citizenship (i);
    stud .rate = rate ;
    stud .ball = ball ;
    }

    int cnt = 0;
    for(i = 0; i < 7; i++)

    { if(2 == stud.c && stud.ball == 5)cnt++;

    }
    float pr = ((7.0/100.0)*cnt)*100;
    printf("Cnt = %d Pr = % f\n", cnt,pr);

    getch ();

    }
    [/codebox]
    Мой вопрос заключаеться в следующем, какие ошибки я допустила в листинге, что не получаю результата?
     
  2. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Вероятно, при заполнении массива структур студентов, для гражданства Вы хотели использовать индекс "k", а используете "i"
     
  3. Nadin85

    Nadin85 Гость

    Если поставить вместо индекса "к" индекс "i", то цикл будет проходить безконечно и программа не будет работать :(
     
  4. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Вы не так меня поняли. Я имел в виду:
    Код (Text):
    stud [i].rate = rate[k];
     
  5. biz

    biz Гость

    ну во-первых скорее всего не
    Код (Text):
    stud [i].rate = rate[k];
    , а
    Код (Text):
    stud[i].c = citizenship( k );
    а во-вторых зачем там вообще массив курсов!??

    и раз уж на то пошло, то должно быть немного не так, а вот как:
    Код (Text):
    for ( i = 0, k = 0; i < 7; i++, k++ ) {
    stud[i].c = citizenship( k );
    if ( k == 2 ) k = 0;
    stud[i].rate = rate[i];
    stud[i].ball = ball[i];
    }
     
Загрузка...
Статус темы:
Закрыта.

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