2017-02-12 1 views
-5

안녕하세요, 강사가 학생의 평균 3 학점을 얻을 수있는 코드를 작성하고 각 평균 간격을 (예 : AVG b/w 70 cout < < "Excellent \ n"인 경우) 학생이 세 가지 테스트 중 하나를 놓치지 않는 것이 좋은 경우는 입니다. 나는 시간 동안 조정하고 두 가지 조건 (두 diff.> 평균에 대한 eqns (하나는 당신이 테스트를 놓치면 다른 하나는하지 않는 경우)을 만드는 방법을 모르겠다. 도, 나는 모른다. . 루프를 만들기 위해, 내가>은 다음 이유로 인해 문에 당신은 무한 루프가 발생하는루프 및 if else 문을 사용하는 평균

#include <iostream> 
using namespace std; 

int main() 
{ 
    double test1(0),test2(0),test3(0),AVG,AVG2,counter(1); 
    cout << " please write score of test1\n"; 
    cin >> test1; 

    cout << "Please enter test 2 grade\n"; 
    cin >> test2; 

    cout << "Please enter test 3 grade\n"; 
    cout << "if test 3 is not there please write in 0\n"; 
    cin >>test3; 

    cout << "test1 score:"<< test1<<"\n"; 
    cout << "test2 score:"<< test2<<"\n"; 
    cout << "test3 score:"<< test3<<"\n"; 

    AVG=(test1+test2+test3)/3; 
    AVG2=(test1+test2+test3)/2; 

    if (test3==0) 
    { 
     while (counter<=20) 
      cout <<" Average2 : "<<AVG2<<"\n"; 

     if (test3 <=0) 
      cout<<"Result (average of two tests):"; 

     if ((AVG2 <=100) && (AVG2>=70)) 
      cout<<"Excellent !\n"; 
     else 
      if ((AVG2 <70) && (AVG2>=50)) 
       cout << "Moderate !\n"; 
      else 
       if ((AVG2 <50) && (AVG2>0)) 
        cout << "Fail !\n"; 
       else 
        if ((AVG2 <0) || (AVG2>100)) 
         cout << "Error for avg2!\n"; 
     counter= counter +1; 
    } 
    else (!(test3==0)); 
    { 
     while (counter<=20) 
     { 
      cout<<"Average of three tests: "<<AVG<<"\n"; 
      if ((AVG <=100) && (AVG>=70)) 
       cout<<"Excellent !\n"; 
      else 
       if ((AVG <70) && (AVG>=50)) 
        cout << "Moderate !\n"; 
      else 
       if ((AVG <50) && (AVG>0)) 
        cout << "Fail !\n"; 
      else 
       if ((AVG <0) || (AVG>100)) 
        cout << "Error for avg1!\n"; 
      counter = counter +1; 
     } 

     return 0; 
    } 
} 
+1

'else' * what * ?? –

+0

if의 while 루프는 괄호 {}를 사용해야하기 때문에 영원히 지속됩니다. – peval27

+0

'counter '의 의미는 무엇입니까? 당신이하고있는 일을 분명히 할 수 있습니까? – peval27

답변

0

여기 저기에 실수를 저질렀습니다.하지만 걱정하지 마세요.

학생은 test3 만 사용하지 않는다고 가정했습니다. 그러나 test1 또는 test2도 될 수 있습니다.

주목해야 할 또 다른 것은 당신이 학생이 등장하지만이 0

을 기록하는 것이 될 수 있기 때문에이 문제를 만들 수 taken.Again되지 않은 시험 점수 0을 할당 한 것입니다 코드를 개선하고 모든 코너 케이스를 처리했으며 강사가 원하는 것을 정확히 수행합니다.

#include<iostream> 
using namespace std; 

int main() 
{ 
int avg,test1,test2,test3,left=0; 
cout<<"Enter the test scores.\n"; 
cout<<"If a student has not appeared in a test, please enter -1\n"; 
cout<<"\nTest 1 : "; 
cin>>test1; 
if(test1==-1) 
    left++; 

cout<<"\nTest 2 : "; 
cin>>test2; 
if(test2==-1) 
    left++; 

cout<<"\nTest 3 : "; 
cin>>test3; 
if(test3==-1) 
    left++; 

if(left>1) 
{ 
    cout<<"FAIL : The student has not appeared in more than one tests"; 
    return 0; 
} 
else if(left==1) 
{ 
    if(test1==-1) 
    { 
     avg=(test2+test3)/2; 

    } 
    else if(test2==-1) 
    { 
     avg=(test1+test3)/2; 
    } 
    else if(test3==-1) 
    { 
     avg=(test1+test2)/2; 
    } 
} 
else if(left==0) 
{ 
    avg=(test1+test2+test3)/3; 
} 

if(avg>=70 && avg<=100) 
{ 
    cout<<"Excellent !\n"; 
} 
else if(avg>=50 && avg<70) 
{ 
    cout<<"Moderate !\n"; 
} 
else if(avg>=0 && avg<50) 
{ 
    cout<<"Fail !\n"; 
} 
else 
{ 
    cout<<"Internal Computation Error"; 
    return 0; 
} 
return 0; 
} 
+0

고맙습니다. 얼마나 많은 도움을 주실 지 모르겠습니다! 나는 2 주 전에 프로그래밍을 시작했는데 모든 것을 완전히 파악하지 못했습니다. 고마워, 조엘. – maycarbon

+1

새 코드를 설명해 주시겠습니까? 고마워요. – maycarbon

+0

좋아요. 학생이 모든 시험을 치르거나 시험 중 하나를 마치는 두 가지 경우가 있습니다.하지만 학생이 두 가지 시험을 끝내면 하나의 숨겨진 사례가 있습니다. 자연스러운 직감에서 벗어났습니다. 학생은 그 경우에 실패 할 것이고 나는 그 방법으로 프로그램을 만들 것입니다. 좋아, 이제 프로그램에 뛰어들 수 있습니다. 나는 test1','test2'와'test3'의 3 가지 변수를 사용하여 테스트 값을 저장했습니다. 학생이 가져 가지 않은 테스트의 수를 세는 변수'left'. –

0

왜 롤 알고 감사하지 않는, 영원히 계속 :

while (counter<=20) 
    cout <<" Average2 : "<<AVG2<<"\n"; 

루프가 실행을 그 코드 줄만 영원히 (즉, cout). 당신이 원하는 코드 주위에 괄호를 추가해야합니다. 각 실행에 :

while (counter<=20) 
{ 
    // cout <<" Average2 : "<<AVG2<<"\n"; 
    // all you logic with if-else 

    counter = counter +1; // or counter++; 
} 

이와 {} 간의 모든 코드 카운터의 증가를 포함하여 실행된다.

+0

고맙습니다. 도움을 많이 주신다면 – maycarbon

+0

도와 드리겠습니다. – maycarbon

+0

else ((test3 == 0) 컴파일러는 사용되지 않은 표현식 결과를 말하며, 그것이 의미하는 바를 이해하지 못합니다. – maycarbon

관련 문제