оператор if — «Misplaced Else» Ошибка при переполнении стека

Нуб здесь. Я не могу исправить ошибку «неуместное другое» в приведенном ниже коде. Этот код должен собирать и вычислять оценку за семестр и давать замечания в зависимости от оценки. Любая помощь приветствуется.

#include <conio.h>
#include <stdio.h>
main()
{
char name[20];
int exam, q1, q2, q3, ass, sw, att, avgq, CS, TG;
clrscr();
printf("Name: ");
gets(name);
printf("\nExam: ");
scanf("%d", &exam);
printf("\nQuiz #1: ");
scanf("%d", &q1);
printf("\nQuiz #2: );
scanf("%d",&q2);
printf("\nQuiz #3: ");
scanf("%d",&q3);
printf("\nAssignment: ");
scanf("%d",&ass);
printf("\nSeatwotk: ");
scanf("%d",&sw);
printf("\nAttendance: ");
scanf("%d",&att);
CS=(0.4*ass)+(0.4*sw)+(0.2*att);  //class standing//
avgq=(q1+q2+q3)/3;  //average quiz//
TG=(0.4*exam)+(0.3*avgq)+(0.3*CS);  //term grade//
if(TG>=90)
printf("Term Grade: %d",TG);
printf("Remarks: EXCELLENT");
else if (TG>=80 && TG<=89)
printf("Term Grade: %d",TG);
printf("Remarks: SATISFACTORY");
else if (TG>=76 && TG<=79)
printf("Term Grade: %d",TG);
printf("Remarks: GOOD");
else if (TG==75)
printf("Term Grade: %d",TG);
printf("Remarks: PASSING");
else if (TG<74)
printf("Term Grade: %d",TG);
printf("Remarks: FAILED");
else
printf("Invalid Input.  Try again");
getch();
return 0;
}

-2

Решение

э-э-э! нуб оповещение! шучу, нам всем надо с чего-то начинать;)

так что не волнуйтесь, прекрасная дева! проблема лежит здесь:

когда вы объявляете оператор if, вы должны заключить тело оператора if в фигурные скобки. Если вы этого не сделаете, будет запущена только первая строка под оператором if. Вот пример:

// here, both do something 1 and do something 2 are being run in the if statement
if (something) {
do something 1;
do something 2;
}

// here, only do something 1 will get run inside the if statement
if (something)
do something 1;
do something 2;

Итак, вернемся к вашей проблеме. Вы должен поместите фигурные скобки {} вокруг кода в операторе if, если тело оператора if состоит из более чем 1 строки.

if (something)
do something 1;
do something 2;
else
do something 3;

эквивалентно

if (something)
do something 1;
do something 2;
else do something 3;

Вот почему вы еще оператор выдает ошибку. Каждый должен иметь перед собой if.

1

Другие решения

C ++ не использует отступы для определения концов операторов. Вам нужны фигурные скобки, если вы хотите более одного утверждения.

Вместо:

if (a)
b;
c;
else
d;

Использование:

if (a) {
b;
c;
} else {
d;
}
0

Если у вас есть более 1 строки под if или else, они должны быть заключены в фигурные скобки, например так:

if(TG>=90)
{
printf("Term Grade: %d",TG);
printf("Remarks: EXCELLENT");
}
else if (TG>=80 && TG<=89)
{
printf("Term Grade: %d",TG);
printf("Remarks: SATISFACTORY");
}
0
По вопросам рекламы [email protected]