Не удается скомпилировать программу нахождения суммы цифр в числах - C (СИ)
Формулировка задачи:
Простейшая задача натолкнулась на непонятную мне проблему.
Цель:
Вычислить сумму цифр 2х,3х или 4х-значных чисел.
Компилятор DevC++
Код:
Проблема:
Не выполняет действие по вычислению остатка от деления.
Сообщение:
15 8 [Error] invalid operands to binary % (have 'int *' and 'int')
int main() { int x [4]; int ans, s=0; while(ans!=2) { puts("Please, enter two, three or four-digit number: "); scanf("%i",&x); if (x!=0) { s+=x%10; x/=10; } else printf("The amount of all numbers is %i\n" "Once more? \n" "Press 1 to continue or 2 to exit \n",s); scanf("%i", &ans); } system("pause"); return(0); }
Решение задачи: «Не удается скомпилировать программу нахождения суммы цифр в числах»
textual
Листинг программы
int main() { int x ; int ans, s=0; while(ans!=2) { s = 0; puts("Please, enter two, three or four-digit number: "); scanf("%i",&x); x %= 10000; while (x!=0) { s+=x%10; x/=10; } printf("The amount of all numbers is %i\n" "Once more? \n" "Press 1 to continue or 2 to exit \n", s); scanf("%i", &ans); } system("pause"); return(0); }
Объяснение кода листинга программы
Код с комментариями в виде списка:
- Объявлены переменные:
- x (типа int) - для хранения введенного числа;
- ans (типа int) - для хранения ответа пользователя;
- s (типа int) - для хранения суммы цифр введенного числа.
- Запущен бесконечный цикл while(ans!=2), который будет выполняться до тех пор, пока пользователь не введет число 2.
- Внутри цикла обнуляется переменная s.
- Выводится сообщение с просьбой ввести двузначное, трехзначное или четырехзначное число.
- С помощью функции scanf() в переменную x считывается введенное пользователем число.
- Введенное число приводится к типу int, а затем с помощью оператора %= остаток от деления на 10000 сохраняется в переменной x.
- Пока число x не равно нулю, из него вычитается последняя цифра (x %= 10) и добавляется к переменной s.
- Число x делится на 10 (x /= 10), чтобы убрать последнюю цифру.
- После выхода из цикла, выводится сообщение с суммой цифр введенного числа (printf(
The amount of all numbers is %i\n
, s)). - Пользователю предлагается ввести 1, чтобы продолжить или 2, чтобы выйти.
- С помощью функции scanf() в переменную ans считывается ответ пользователя.
- Если пользователь ввел 2, то цикл while(ans!=2) прерывается.
- Выполняется системная функция system(
pause
), которая приостанавливает выполнение программы до тех пор, пока пользователь не нажмет любую клавишу. - Возвращается 0, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д