2015-02-07 2 views
0

이것은 C++을 처음 사용하는 경우이며 명령 프롬프트에 입력 할 최대 10 개의 숫자 (두 배)를 합하는 작은 프로그램을 작성하고 있습니다.간단한 C++ 합계 프로그램

다음 코드를 작성했으며 원하는 결과가 나오지 않는 이유를 알 수 없습니다.

int main() 
{ 
    double num[10]; 
    double sum = 0; 
    int i; 
    int n = 10; 

    while (scanf_s("%lf", &num) != EOF) 
    { 
     for (i = 0; i < n; ++i) 
     { 
      scanf_s("%lf", &num); 
      sum = sum + num[i]; 
     } 
    } 

    cout << sum; 

    system("pause"); 
    return 0; 
} 

데이터 입력은 벌금을 실행해야 내 눈에서 제어 D. 종료되지만 그렇지 않습니다. 누군가가이 문제를 해결할 수있는 몇 가지 지침을 주시겠습니까? 오히려 직접 배우려는 올바른 방법을 말하고 싶지는 않습니다.

+1

은'scanf' 기능이 성공적으로 EOF 입력되지 않은 항목의 수를 반환합니다. –

+1

inner for 루프에서 10 번 입력하라는 요청을받을 때 외부 while 루프가 필요한 이유는 무엇입니까? –

+1

또한, 'num'은 배열입니다. 'scanf' 함수는 전체 배열의 주소가 아닌, 읽어들이는 배열 슬롯의 주소를 필요로합니다. –

답변

2

문제는 &입니다. num은 배열의 주소입니다. 그래서 당신은 항상 num[0]에 당신의 가치를 읽습니다. 따라서 대부분의 경우에 num[i]은 무작위입니다.

은 루프를 변경하려고 :

for (i = 0; i < n && (cin>>num[i]); ++i) 
{ 
    sum = sum + num[i]; 
} 
+0

실제로 while 루프를 사용했지만 어쨌든 답변 해 주셔서 감사합니다. – user