Предмет: Информатика,
автор: jioo568
Напишите программу,которая считает сумму цифр введенного числа (паскаль)
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) ???
Можно ли написать эту программу как то через другой цикл? ( если да,то напишите его)
Заранее СПАСИБО
Wani4kaa:
Пока твоё число не стало нулём, ты прибавляешь его последнюю цифру (a mod 10 означает "получить остаток от деления a на 10") к ответу, а затем отбрасываешь последнюю цифру у a (a div 10 означает "разделить a на 10 без учёта остатка"). Попробуй воспроизвести алгоритм на бумаге.
Ответы
Автор ответа:
1
a mod 10 - это остаток от деления а на 10 (последняя цифра числа, записанного в десятичной системе счисления)
можно по другому : сделать а типа string и, проходя по строке, прибавлять к сумме каждый символ строки (переведенный в цифру)
можно по другому : сделать а типа string и, проходя по строке, прибавлять к сумме каждый символ строки (переведенный в цифру)
Автор ответа:
2
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) - накапливаем сумму всех цифр поочерёдно
Похожие вопросы
Предмет: Физика,
автор: mysnikovakris98
Предмет: Физика,
автор: muzychenkonatalya64
Предмет: Русский язык,
автор: vikactefaninam
Предмет: Право,
автор: Мико211
Предмет: Математика,
автор: Лиза111111111117478