C/C++

Задачу написать на с++ , она не сложная но почему то не получается напишите задачу с помощью цикла

Федя записался на крутой онлайн курс по программированию. Там, как обычно, надо решать много задач. За разные задачи дают разное количество баллов.

Однажды Федя задумался, сколько баллов он уже набрал в курсе. Решенных задач оказалось очень много. Поэтому Федя написал программу, которая суммирует баллы за задачи.

Поскольку количество решенных задач всегда меняется, Федя решил вводить в программу только баллы за задачи (без указания количества задач). Когда решенные задачи заканчивались Федя вводил 0 – это число служило признаком окончания ввода.

А Вы сможете написать программу, которая суммирует вводимые числа до тех пор, пока не будет введен 0.

Входные данные
Вводится несколько строк. В каждой строке находится целое число x (0<x≤100) - балл очередной задачи. В последней строке находится число 0 – признак окончания ввода. Гарантируется, что будет введено как минимум две строки.

Выходные данные
Вывести одно число – общее число баллов за все задачи.
входные данные
20
50
30
40
0
выходные данные
140
входные данные
2
10
5
0
выходные данные
17
VS
Viktor Stepanov
28
Может будет какое-нибудь пояснение по поводу ввода? Если подается одно целое число в одной строке, программа выше работать будет. Но раз сделан упор на "в каждой строке" то может быть есть особые случаи которые программа должна правильно обрабатывать, к примеру если в строке два числа, то второе игнорировать. Если в строке нет числа - игнорировать строку и т.д. Или будем гадать почему у вас программа не работает? Это в раздел "гадания".
Александр Ветров
Александр Ветров
51 416
Лучший ответ
#include <iostream>
int main(){int n=0,t; while(std::cin>>t,t)n+=t; std::cout<<n;}
AC
Alex Ch
77 002
#include <iostream>

int main() {
int points = 0; // initialize total points to 0
int score; // variable to store the score of each problem

// read scores until 0 is entered
while (std::cin >> score) {
if (score == 0) {
break; // exit the loop when 0 is entered
}
points += score; // add the current score to the total points
}

std::cout << points << std::endl; // output the total points
return 0;
}


Объяснение:

Мы используем цикл while для непрерывного считывания оценки каждой задачи. Мы используем оператор потока cin для считывания оценки и сохранения ее в переменной score. Оператор cin возвращает ссылку на поток, которая может быть использована в булевом выражении. Если поток находится в допустимом состоянии (т.е. оценка была успешно считана), выражение принимает значение true, и цикл продолжается. Если поток находится в недопустимом состоянии (т.е. вводимое число не является допустимым целым числом или достигнут конец ввода), выражение оценивается в false, и цикл завершается.

Внутри цикла мы проверяем, равен ли текущий счет 0. Если да, мы используем оператор break для выхода из цикла. В противном случае мы добавляем текущий результат к общему количеству очков с помощью оператора +=.

Наконец, мы выводим общее количество очков, используя поток cout и манипулятор endl для вставки символа новой строки после вывода.
Александр Тихомиров Эта программа не дает оператору права на ошибку и не разъясняет, где и в чем была ошибка. Т.е. код рабочий, но хреновый, потому что не ошибаются только дураки и те, кто ничего не делает.
Человекоориентированная реализация должна сначала считывать строку, потом преобразовывать ее в число, обрабатывать ошибки ввода и сообщать о них пользователю.
Viktor Stepanov У меня почему то не работает
Изи
 #include      

using namespace std;

int main() {

int n; cin >> n;
int sum = n;

while (n != 0) {
cin >> n;
sum += n;
}
cout