Напишите программу,которая считает сумму цифр введенного числа (паскаль) Programи fr; var...

0 голосов
20 просмотров

Напишите программу,которая считает сумму цифр введенного числа (паскаль) Programи fr; var a, sum: integer; Begin Writeln ('Введите число'); Readln (a); while a<>0 do begin sum:=sum+(a mod 10); a:=a div 10; end; Writeln ('Сумма цифр ',sum); end. Почему используется вот такая запись ( что это значит ) - sum:=sum+(a mod 10) ??? Можно ли написать эту программу как то через другой цикл? ( если да,то напишите его) Заранее СПАСИБО


Информатика (519 баллов) | 20 просмотров
0

Пока твоё число не стало нулём, ты прибавляешь его последнюю цифру (a mod 10 означает "получить остаток от деления a на 10") к ответу, а затем отбрасываешь последнюю цифру у a (a div 10 означает "разделить a на 10 без учёта остатка"). Попробуй воспроизвести алгоритм на бумаге.

Дано ответов: 2
0 голосов

A mod 10 - это остаток от деления а на 10 (последняя цифра числа, записанного в десятичной системе счисления)
можно по другому : сделать а типа string и, проходя по строке, прибавлять к сумме каждый символ строки (переведенный в цифру)

(654k баллов)
0

sum:=sum+(a mod 10) почему sum+(a mod 10)? почему без скобок нельзя?

0

попробуй, может можно

0

а если нельзя, то потому, что приоритет операции сложения выше чем операции остатка от деления

0

а зачем складывать? потому что сумма ?

0

ну, да, а для чего же ещё?)

0 голосов

var a,s:integer;

begin

write ('Введите число: ');

readln(a);

repeat

s:=s+a mod 10;

a:=a div 10

until a=0;

write ('Сумма цифр: ',s);

end.

a mod 10 - эта операция определяет последнюю цифру числа (остаток от деления на 10)

первоначально sum равно 0

sum:=sum+(a mod 10) - накапливаем сумму всех цифр поочерёдно

(3.9k баллов)
0

Большое спасибо