2016-07-12 5 views
0

내 센티널 값을 내 어레이로 읽어 들이지 못하게하여 총계 및 평균 계산에 오류가 발생하는 것을 막을 방법이 확실하지 않습니다. 누구든지 도와 줄 수 있습니까? 여기 어레이의 전체 및 평균을 결정할 때 센티넬 값이 어레이로 읽히지 않게하려면 어떻게합니까?

은 while 루프이다

while (grade != -1) 
{ 
    cin >> grade; 
    gradesArray[count] = grade; 
    total += gradesArray[count]; 
    average = total/count; 
    count++; 
} 

cout << "You have entered " << count << " grades." << endl; 
cout << "The average of these grades is " << average << endl; 
+4

어, 삽입하기 전에 테스트 해보십시오. – kfsone

+0

그리고 고정 길이 배열을 사용한다면,'count'가 배열의 범위를 초과하지 않도록하십시오. 그리고 새로운'average'를 계산하기 전에'count' *를 증가 시키십시오.). 그렇지 않으면'std :: vector'와 같이 대신 동적 배열을 사용하십시오. –

답변

3

while (std::cin >> grade && grade != -1)

+0

이것은 확실히 작동하지만 내 평균이 너무 높아집니다. 5 연속 23을 입력하면 28.5로 평균이 나온다 ... 왜 그런가? –

+1

카운트를 증가시킨 후 평균을 계산하십시오. –

-1

여기 내 수정 코드가 있지만 보통 너무 높은 평균 출력한다.

#include<iostream> 
using namespace std; 

int main() 
{ 
int count = 0, grade = 0; 
double total = 0, average; 
const int numGrades = 20; 
int gradesArray[numGrades]; 

cout << "Welcome to the grade calulator!" << endl; 
cout << "Enter up to twenty grades, when done enter -1: " << endl; 


while (cin >> grade && grade != -1) 
{ 
    gradesArray[count] = grade; 
    total += gradesArray[count]; 
    average = total/count; 
    ++count; 
} 

cout << "You have entered " << count << " grades." << endl; 
cout << "The average of these grades is " << average << endl; 

system("pause"); 
return 0; 
}