2014-11-24 6 views
0

이 프로그램의 요점은 사용자가 A, B, C, D 또는 F 등급의 범위에서 최대 50 명의 학생을 일정 등급으로 입력하는 것입니다. 결국,이 프로그램은 얼마나 많은 학생들이 각 학점을 받았는지 보여 주려고합니다. 다음 코드를 테스트 할 때마다 for 루프에 대해 입력 한 내용이 매번 반복되므로 3 학년 학생을 위해 입력하면 학생 1에 입력 한 모든 글자는 모든 학생에게 동일한 학년이되므로 if 한 학생은 A를 가지고 있고, 그들은 모두 A를 가질 것입니다. 대학을 위해서이기 때문에이 프로그램을 위해 배열을 사용해야합니다. 죄송합니다. 정보가 충분하지 않은 경우 게시가 처음입니다.루프가 입력을 변경하지 못하도록

#include<iostream> 
#include<iomanip> 
#include<string> 
void gradeTotals(); 
using namespace std; 
int x,z,a=0,b=0,c=0,d=0,f=0,i=0; 
char grade[50]; 
int main() 
{ 

cout<<"Please enter the number of students"<<endl; 
cin>>x; 
for (i=0;i<x;i++) 
{ 
    int y; 
    y=i+1; 
    cout<<"Please enter a letter grade of A,B,C,D, or F for student "<<y<<endl; 
    cout<<"All grades must be uppercase"<<endl; 
    cin>>z; 
    grade[i]=z; 
    gradeTotals(); 
} 
} 
void gradeTotals() 
{ 
    if (grade[i]=='A') 
    { 
     a++; 
    } 
    else if (grade[i]=='B') 
    { 
     b++; 
    } 
    else if (grade[i]=='C') 
    { 
     c++; 
    } 
    else if (grade[i]=='D') 
    { 
     d++; 
    } 
    else if (grade[i]=='F') 
    { 
     f++; 
    } 
cout<<a<<endl; 
cout<<b<<endl; 
cout<<c<<endl; 
cout<<d<<endl; 
cout<<f<<endl; 
} 
+1

글자를 저장하는 경우 학년이 2 중 배열이되는 이유는 무엇입니까? –

+0

또한 :'grade [i] = 'F''는 비교가 아닌 과제를 사용하고 있습니다. –

+0

질문하는 것을 잊었습니다. 당신은 이야기를하고 몇 가지 코드를 보여주었습니다. 버튼에 이유를 묻는 질문이 표시됩니다. –

답변

0

귀하의 if 성명이 예상 한대로 수행되지 않는 것 같습니다. 예를 들어 :

if (grade[i]='B') 
{ 
    // This code will *always* execute 
} 

당신은 값을 비교하는 이중 등호 ==를 사용한다고하고, 하나는 값을 지정 = 같습니다.


(추가 코드 변경 후 편집)에 대한 루프 내부

, 당신은 하나의 문자에 읽을 cin를 사용하려고합니다. z는 정수이기 때문에, cin 등 'A'또는 'B'를 포함하도록 발생하지 않는 유효한 정수를 찾고 있습니다

아마 당신은 getline() 또는 get()를 사용하여 시도해야합니다.

+0

그걸 바꿨지 만 끝에있는 값이 늘어나지 않아 엉망이 된 코드가 더 많이 있다는 것을 깨달았습니다. 하지만 여전히 내 주요 문제 인 for 루프에 대한 도움을받지 못했습니다. –

0

입력 변수가 int 일 때 문제가 발생하는 경우는 char입니다.

cin >> z;을 수행 할 때 사용자가 입력 한 문자는 >> operator에 의해 잘못된 입력으로 인식되므로 문자를 추출하지 않습니다.

이와 같이 z는 아무런 값도 얻지 못합니다. 문자는 스트림에 머물러 있으며, >> operator은 루프가 끝날 때까지 계속 문자를 추출하지 못합니다.

따라서 입력 변수를 char으로 변경하여 문제를 해결할 수 있습니다.

나중에 이러한 문제를 방지하는 방법을 이해하는 데 도움이되는 link입니다.

읽어 주셔서 감사합니다.

관련 문제