2015-02-07 4 views
0

Это мой первый раз, когда я использую C++, и я пишу небольшую программу, суммирующую до десяти чисел (удваивает), которые будут введены в командной строке.Simple C++ Summing Program

Я написал следующий код, и я не могу понять, почему он не даст желаемого результата.

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; 
} 

Ввод данных прекращается с контролем Д. В моих глазах он должен работать нормально, но это не так. Может кто-то, пожалуйста, дайте мне несколько указателей на решение этого вопроса, я не просто хочу, чтобы мне сказали правильно, что я бы лучше изучил его сам.

+1

Параметр 'Функция scanf' возвращает количество элементов, которые успешно были ввода, не EOF. –

+1

Почему вам нужен внешний цикл while, когда у вас есть внутренний цикл, чтобы запросить номер для ввода 10 раз? –

+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