2014-12-13 3 views
0

사용자 입력으로 세 개의 배열을 채우고 그 값의 평균을 계산하는 함수를 작성하고 있습니다. 하지만 이상한 오류가 나타납니다.이상한 오류 - 배열 내용을 출력하면 결과가 변경되지 않더라도 결과가 변경됩니다.

이것은 매우 이상합니다. 이 코드를 주석 때 :


#include <iostream> 

using namespace std; 
void fill_up(int a[], int size); 

void fill_up(int a[], int size) 
{ 
    cout << "Enter " << size << " numbers:\n"; 
    for (int i = 0; i < size; i++) 
     cin >> a[i]; 
    size--; 
    cout << "The last array index used is " << size << endl; 
} 
int main() 
{ 
    int Steve[5]; 
    int George[5]; 
    int Mary[5]; 
    cout << "~ Fill up the Steve array ~" << endl; 
    fill_up(Steve, 5); 
    cout << "~ Fill up the George array ~" << endl; 
    fill_up(George, 5); 
    cout << "~ Fill up the Mary array ~" << endl; 
    fill_up(Mary, 5); 

    /* 
    for (int i = 0; i < 5; i++) 
     cout << Steve[i] << ","; 
    cout << endl; 
    */ 

    int SteveSum, GeorgeSum, MarySum = 0; 
    double SteveAvg, GeorgeAvg, MaryAvg; 
    for(int i = 0; i < 5; i++) 
    { 
     SteveSum += Steve[i]; 
     GeorgeSum += George[i]; 
     MarySum += Mary[i]; 
    } 
    SteveAvg = ((double) SteveSum)/5; 
    GeorgeAvg = ((double) GeorgeSum)/5; 
    MaryAvg = ((double) MarySum)/5; 

    cout << "Steve's average is " << SteveAvg << endl; 
    cout << "George's average is " << GeorgeAvg << endl; 
    cout << "Mary's average is " << MaryAvg << endl; 
} 

for (int i = 0; i < 5; i++) 
    cout << Steve[i] << ","; 
cout << endl; 
다음은 명령 줄에서 실행되는 코드의 두 스크린 샷입니다. ss1 ss2

I 인쇄 배열 조각이, 스티브의 평균 이상한 많은 수에서 나오는 것을 언급,하지만 난의 주석 때 잘 작동 니펫을 그 때 당신이 볼 수 있듯이. 무슨 일이야?

int SteveSum, GeorgeSum, MarySum = 0; 

오른쪽 :

답변

8
잘못된

int SteveSum = 0, GeorgeSum = 0, MarySum = 0; 
+4

과 같은 줄에 여러 변수를 선언 나쁜 생각입니다 이유입니다) 그들이 물론 – Borgleader

+0

@deviantfan, 당신을 다른 무엇인가 실제로 기대하니? 주제에 대한 질문 인 경우 질문입니다. –

+0

죄송합니다. 삭제되었습니다 ("가장 간단한 질문은 msot의 upvotes를 얻는 것이 항상 재미 있습니다"). 나는 정말로 다른 것을 기대하지 않지만 모든 것이 더 나아지지 않습니다. – deviantfan

관련 문제