Я новичок в C++, и я пытаюсь написать свою собственную версию программы, которая печатает сумму неизвестного числа целых чисел, прочитанных из cin.
Единственная директива препроцессора, которую я рассмотрел, - это #include <iostream>.
#include <iostream>
int main()
{
int numbers;
int sum = 0;
for (int i = 0; i < numbers; i++)
{
std::cin >> i;
sum += i;
}
std::cout << sum << std::endl;
return 0;
}
cl /EHsc /W4 sum_of_set_of_integers.cpp
Microsoft (R) C/C++ Optimizing Compiler Version 19.14.26433 for x86
Copyright (C) Microsoft Corporation. All rights reserved.
sum_of_set_of_integers.cpp
a:\c++ tutorial\michael_dawson\sum_of_set_of_integers.cpp(8) : warning C4700: uninitialized local variable 'numbers' used
Microsoft (R) Incremental Linker Version 14.14.26433.0
Copyright (C) Microsoft Corporation. All rights reserved.
/out:sum_of_set_of_integers.exe
sum_of_set_of_integers.obj
A:\C++ Tutorial\Michael_Dawson>sum_of_set_of_integers
1
1
1
1
1
Я не могу выйти из цикла. Было бы очень полезно, если бы вы могли посоветовать ..
Спасибо заранее.
Вы забыли инициализировать numbers с разумным значением: int numbers;
for (int i = 0; i < numbers; i++) Какова, по вашему мнению, ценность numbers на данный момент? Вы его никогда не читаете и ни на что не устанавливаете.





Complier предлагает, пожалуйста, прочтите внимательно.
a:\c++ tutorial\michael_dawson\sum_of_set_of_integers.cpp(8) : warning C4700: uninitialized local variable 'numbers' used
Также попробуйте следовать принципу 0 ошибок и 0 предупреждений.
Используя цикл while, продолжайте читать и добавлять целые числа до конца ввода. Обновленный код должен выглядеть так:
int main()
{
int sum = 0;
while (std::cin >> i)
sum += i;
std::cout << sum << std::endl;
return 0;
}
Я бы предпочел быть осторожным, говоря новичку, что код «должен» выглядеть как-то, особенно когда в нем есть std::cin, который на самом деле должен сопровождаться проверкой ошибок и тому подобным, просто говоря ...
Изменение цели / поведения кода не является ответом imho
@Korni - Я не понимаю, как я меняю поведение / цель? Пожалуйста, предложите
@Rizwan OP спросил:> «[...] печатает сумму неизвестного числа целых чисел, прочитанных из cin». В вашей версии номер выставлен в начале
@Korni - Совершенно верно. Я упустил этот момент. Спасибо, что указали. Обновил ответ.
Основная проблема здесь в том, что вы не знаете заранее, сколько целых чисел придет, поэтому вы не можете использовать этот цикл for - для numbers нет разумного значения.
Вместо этого продолжайте читать значения до конца ввода:
while (std::cin >> i)
sum += i;
Когда попытка чтения в конечном итоге завершится неудачей, цикл while завершится.
Это имеет смысл. Большое спасибо.
используйте CTRL + Z (конец строки)
У вас есть число, которое означает конец?