Удалить цифру из числа

Задача

Из натурального числа удалить заданную цифру. Число и цифру вводить с клавиатуры.

Например, задано число 5683. Требуется удалить из него цифру 8. Получится число 563.

Решение

Задача усложняется тем, что заранее неизвестно количество разрядов числа. Поэтому исходное число проще начать проверять с конца с помощью оператора mod (нахождения остатка от деления). Делить надо на 10, чтобы получить последнюю цифру числа.

Если последняя цифра не совпадает с цифрой, которую требуется удалить, то ее надо перенести в другое число, перед этим сдвинув его разряды. Легче реализовать, чтобы новое число формировалось наоборот: старшие разряды исходного будут младшими.

После того, как заданная цифр будет удалена, число снова переворачивается.

var
    a, b: longint;
    n, m: byte;
begin
    readln(a);
    readln(n);
    b := 0;
    while a > 0 do begin
        m := a mod 10;
        if m <> n then
            b := b * 10 + m;
        a := a div 10;
    end;
    while b > 0 do begin
        a := a * 10 + b mod 10;
        b := b div 10;
    end;
    writeln(a);
end.

Пример выполнения программы:

38012732
3
801272

Программа удаляет все вхождения заданной цифры.

Комментарии

program primer;
var n, a, ch, sum, raz: integer;
 
begin
sum:=0;
raz:=1;
  write ('Введите целое натуральное число '); readln (n);
  write ('Какую цифру надо удалить? '); readln (ch);
  while n>0 do
    begin
    a := n mod 10;
    if ch <> a 
      then begin sum := sum + a * raz; raz := raz*10; n := n div 10 end
      else n := n div 10;
    end;
write ('Ваше число ', sum)
end.