Не удается скомпилировать программу нахождения суммы цифр в числах - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Простейшая задача натолкнулась на непонятную мне проблему. Цель: Вычислить сумму цифр 2х,3х или 4х-значных чисел. Компилятор DevC++ Код:
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);
}
Проблема: Не выполняет действие по вычислению остатка от деления. Сообщение: 15 8 [Error] invalid operands to binary % (have 'int *' and 'int')

Решение задачи: «Не удается скомпилировать программу нахождения суммы цифр в числах»

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);
}

Объяснение кода листинга программы

Код с комментариями в виде списка:

  1. Объявлены переменные:
    • x (типа int) - для хранения введенного числа;
    • ans (типа int) - для хранения ответа пользователя;
    • s (типа int) - для хранения суммы цифр введенного числа.
  2. Запущен бесконечный цикл while(ans!=2), который будет выполняться до тех пор, пока пользователь не введет число 2.
  3. Внутри цикла обнуляется переменная s.
  4. Выводится сообщение с просьбой ввести двузначное, трехзначное или четырехзначное число.
  5. С помощью функции scanf() в переменную x считывается введенное пользователем число.
  6. Введенное число приводится к типу int, а затем с помощью оператора %= остаток от деления на 10000 сохраняется в переменной x.
  7. Пока число x не равно нулю, из него вычитается последняя цифра (x %= 10) и добавляется к переменной s.
  8. Число x делится на 10 (x /= 10), чтобы убрать последнюю цифру.
  9. После выхода из цикла, выводится сообщение с суммой цифр введенного числа (printf(The amount of all numbers is %i\n, s)).
  10. Пользователю предлагается ввести 1, чтобы продолжить или 2, чтобы выйти.
  11. С помощью функции scanf() в переменную ans считывается ответ пользователя.
  12. Если пользователь ввел 2, то цикл while(ans!=2) прерывается.
  13. Выполняется системная функция system(pause), которая приостанавливает выполнение программы до тех пор, пока пользователь не нажмет любую клавишу.
  14. Возвращается 0, что означает успешное выполнение программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.5 из 5
Похожие ответы