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

  • Автор темы Nadin85
  • Дата начала
Статус
Закрыто для дальнейших ответов.
N

Nadin85

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

[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]
Мой вопрос заключаеться в следующем, какие ошибки я допустила в листинге, что не получаю результата?
 
04.09.2006
2 566
2
#2
Вероятно, при заполнении массива структур студентов, для гражданства Вы хотели использовать индекс "k", а используете "i"
 
N

Nadin85

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

biz

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

и раз уж на то пошло, то должно быть немного не так, а вот как:
Код:
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];
}
 
Статус
Закрыто для дальнейших ответов.