Ваша программа содержит несколько повторяющихся разделов.Поскольку вы собираете три числа, вы должны использовать цикл for, который запускается три раза.
for (int i = 0; i < 3; i++) {
/* ... */
}
Внутри цикла for вы собираете i+1
-ое число каждый раз.Если пользователь не вводит правильный номер, вы продолжаете пытаться его набрать.Таким образом, цикл do-while, содержащий printf
и scanf
, будет идти внутри цикла for.
for (int i = 0; i < 3; i++) {
do {
printf("Enter Number %d: ", i+1);
scanf( /* ... */ );
} while ( /* ... */ );
}
scanf
возвращает количество элементов ввода, успешно прочитанных как int
.Таким образом, цикл do-while должен повторяться до тех пор, пока возвращаемое значение scanf
равно нулю.Мы можем сохранить возвращаемое значение в переменной и проверить переменную в while (...);
, но мы можем просто переместить сам scanf
в while (...);
.Нам также нужен массив для хранения трех входных чисел.
int n[3];
for (int i = 0; i < 3; i++) {
do {
printf("Enter Number %d: ", i+1);
} while (scanf("%d", n+i) == 0);
}
Остальная часть программы будет циклически проходить по массиву и хранить сумму элементов.Затем вы должны вывести сумму.Этот подход надежен и удобен в обслуживании, так как изменение количества вводимых чисел легко и повторяется, или устраняются похожие фрагменты кода.