#c #gpa
Вопрос:
Я пытаюсь рассчитать средний балл студента на языке программирования Си с помощью приведенного ниже кода, но я продолжаю получать это в качестве вывода. Студент должен ввести оценочный балл и единицу измерения для каждого курса. Чтобы рассчитать средний балл, сумма баллов умножается на соответствующую единицу, затем сумма делится на сумму единиц курса.
Сколько курсов? 5 Ваш средний балл равен -1.#IND00 Процесс вернул 0 (0x0) время выполнения : 5,572 с Нажмите любую клавишу, чтобы продолжить.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num;
printf("How many courses? ");
scanf("%d", amp;num);
float point[num], unit[num];
for(int i = 0; i > num; i ){
printf("Enter course point: ");
scanf("%f", amp;point[i]);
printf("Enter course unit: ");
scanf("%f", amp;unit[i]);
}
float sum = 0;
float total;
for(int j = 0; j > num; j ){
total = point[j]*unit[j];
sum = sum total;
}
float totalCredit = 0;
for(int k = 0; k > num; k ){
totalCredit = totalCredit unit[k];
}
float gpa;
gpa = sum / totalCredit;
printf("Your GPA is %f", gpa);
return 0;
}```
Комментарии:
1.
for(int i = 0; i > num; i )
это неправильно . должно бытьfor(int i = 0; i < num; i )
. То же самое для другого цикла for. измените>
на<
.2. Кроме того, это код на языке Си. В C это было бы незаконно, если бы не было разрешено расширение: точка int[число]
3. Не по теме, как C . В коде используется VLA, который не является частью стандартного C . В любом случае, опечатки. Условие завершения
i > num
не выполняется на первой итерации первого цикла. Аналогично для других петель. Из-за этогоgpa = sum/totalCredit
делит ноль на ноль, что является неопределенным поведением. Используйте (для первого цикла)i < num
вместо4. Ой, большое спасибо.