jen.ellares Ответов: 2

Как я могу сделать это в распределительном шкафу? Пожалуйста, помогите мне сейчас, спасибо ...


#include<stdio.h>
int QZ1, QZ2, QZ3, QZ4, ME, FE, ATT, CS;
float G, PQZS=0.40, PFME=0.40, PAT=0.10, PCS=0.10, QAVE, FME, FAT, FCS, Equiv, Remark, Passed, Failed;

int main()
{    
    printf("Enter Quiz No.1:");
	scanf("%d",&QZ1);
	printf("Enter Quiz No.2:");
	scanf("%d",&QZ2);
	printf("Enter Quiz No.3:");
	scanf("%d",&QZ3);
	printf("Enter Quiz No.4:");
	scanf("%d",&QZ4);
	printf("Enter Midterm Exam Result:");
	scanf("%d",&ME);
	printf("Enter Final Exam Result:");
	scanf("%d",&FE);
	printf("Enter Grade for Attendance:");
	scanf("%d",&ATT);
	printf("Enter Grade for Class Standing:");
	scanf("%d",&CS);
	
	QAVE=((QZ1+QZ2+QZ3+QZ4)/4)*PQZS;
	printf("\nQuiz Average:%.2f",QAVE);
	
	FME=((ME+FE)/2)*PFME;
	printf("\nMajor Exam:%.2f",FME);
	
	FAT=ATT*PAT;
	printf("\nAttendance:%.2f",FAT);
	
	FCS=CS*PCS;
	printf("\nClass Standing:%.2f",FCS);
	
	G=QAVE+FME+FAT+FCS;
	printf("\nGrade:%.2f",G);
	
	switch(Grade)
	{
	    case 'G>=98':  
			Equiv=4.00;
			printf("\nEquivalent:%.2f",Equiv);
			printf("\nRemark:Passed",Remark);	
			break;  
	  
	    case 'G>=91':
			Equiv=3.75;
			printf("\nEquivalent:%.2f",Equiv);
			printf("\nRemark:Passed",Remark);
			break;
  
	    case 'G>=83':
			Equiv=2.75;
			printf("\nEquivalent:%.2f",Equiv);
			printf("\nRemark:Passed",Remark);
			break;
	
	    case 'G>=76':
			Equiv=2.25;
			printf("\nEquivalent:%.2f",Equiv);
			printf("\nRemark:Passed",Remark);
			break;
		
	    case 'G==75':
		         Equiv=2.00;
		         printf("\nEquivalent:%.2f",Equiv);
		         printf("\nRemark:Passed",Remark);
			break;
	  
	    case 'G<75':	
		         Equiv=1.00, Remark;
		         printf("\nEquivalent:%.2f",Equiv);
		         printf("\nRemark:Failed",Remark);
			break;
}

    return (0);
}


Что я уже пробовал:

Я попытался это сделать, но не побежал. пожалуйста, помогите мне сейчас, ребята, спасибо...

Patrice T

"он, но не бежал" - это не информативно.
дайте сообщения об ошибках и положение.

2 Ответов

Рейтинг:
18

KarstenK

Ваш код не будет компилироваться, потому что это так неправильный синтаксис.

Переключатели предназначены для постоянных значений, таких как

switch( i )
{
  case 0:
   break;
  
  case 1:
break;
}

для непостоянных значений необходимо использовать переключатели if-else
if( i < 0 ) {
}
 else if( i < 10 ) {
}
Имейте в виду, что это может быть сложно, потому что первый матч выигрывает!!!

Вы можете сделать одну вещь, чтобы объединить их, сделав несколько дополнительных шагов. Я называю это " обнаружение случая":
int case = -2; // non detected case 

if(value < 0 ) {
  case = -1; // case negative number 
}
 else if( i < 10 ) {
  case = 0; // case one digit number
}
Чем у вас может быть какое-то заявление switch. Но это имеет смысл только тогда, когда дело позже понадобится и каким-то образом сохранится. Чем лучше работать с перечислениями.


jen.ellares

Ты можешь показать мне, как это делается? спасибо за ответ..

Рейтинг:
11

OriginalGriff

Здесь есть ряд проблем:
1) Grade не определено. Поскольку это не известная переменная, вы не можете использовать ее в switch заявление.
2) Даже если бы он был определен, это было бы число: 14, 45.7, 100. Вы не можете использовать switch чтобы разделить числовое значение на диапазон-каждый case должно быть одно постоянное значение того же типа данных, что и switch переменная.

В принципе, вам нужен if...else if...другое утверждение, а не switch...case