Консультация № 198238
13.04.2020, 21:42
0.00 руб.
0 1 1
Здравствуйте! У меня возникли сложности с таким вопросом: (язык си)

Разработать, используя цикл while и не вводя массивы, программу обработки последовательности чисел.Найти сумму отклонений по модулю нечетных чисел последовательности от числа 10. Окончание ввода – сумма больше 50 или кратна 3.

Обсуждение

давно
Студент
403303
19
14.04.2020, 09:14
общий
это ответ
Здравствуйте, niktop1!

Ниже приведен текст программы. Если ввести четное число, программа сразу завершается, поскольку формально сумма отклонений равна нулю (сработает признак кратности - остаток от деления на 3 равен 0). Если следует дождаться хотя бы одного нечетного числа, то можно вместо
break;
написать
if( sumot>0 ) break;
Некоторые скобки лишние с учетом приоритета операторов, они использованы для лучшей читаемости текста.

Приложение:
#include <stdio.h>

int main()
{
/* Переменные для текущего числа и накопления искомой суммы */
int n;
int sumot=0;

while( 1 )
{
/* вводим с клавиатуры очередное число */
printf("Введите число: ");
scanf("%d",&n);

/* если число нечетное, то суммируем его отклонение от 10 */
if( n%2 )
sumot += n>10 ? (n-10) : (10-n);

/* Выводим текущую сумму отклонений числа от 10 */
printf("Сумма отклонений от 10: %d\n", sumot);

/* если сумма больше 50 или кратна 3, то завершаем программу */
if( (sumot>50) || (sumot%3 == 0) )
break;
}

printf("Программа завершена\n");
return 0;
}
Форма ответа