Другие языки программирования и технологии

Помогите с Pascal. Дано натуральное число. Определите сумму m его последних цифр отличных от 0

Задачка-то с подвохом. Если среди m последних цифр есть ноль, то требуется посчитать сумму m+1 последних цифр, опять же, если среди них нет нуля и т. д.
Например:
m = 3;
Число = 1234567,
Сумма трёх последних цифр, не равных нулю = 18.

Но
m = 3;
Число = 2345067,
Сумма трёх последних цифр, не равных нулю, тоже = 18, а не 13.

program N67604034;
var x:longint;
m, s:byte;
begin
write('Введите натуральное число: ');
readln(x);
write('Введите число m: ');
readln(m);
write('Сумма последних ',m,' цифр числа, отличных от нуля = ');
s := 0;
while (m > 0) and (x > 0) do
begin
if x mod 10 > 0 then
begin
s := s + x mod 10;
dec(m) {или m := m - 1}
end;
x := x div 10
end;
write(s);
readln
end.

P.S. Исходное число должно быть в промежутке [1; 2147483647].
Денис Алексеенко
Денис Алексеенко
51 590
Лучший ответ
преобразовать его в текст
функцией right () выделить m последних символов. , преобразовывать каждый символ в число и суммировать
Kuanishbek ***
Kuanishbek ***
55 550
Можно и без преобразований

S := 0;
while (N <> 0) and (m > 0) do begin
S := S + N mod 10;
N := N div 10;
M := M - 1;
end;

Цифры, равные нулю сумму не изменят, так что можно суммировать и их.
Dima ***
Dima ***
59 614

Похожие вопросы