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

Задача

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

Например, задано число 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

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

Тема

Циклы

Уровень

Комбинированные задачи

Последняя редакция