N – исходное числоh – число в которое мы копируем последнее изменённое число, и сравниваем, чтобы узнать, что закончились все 0 и 5 в числе;
Функция num – функция, которая убирает первую справа цифру 0 или 5. Её переменные: n – считает сколько цифр в изменённом функцией числе, s – туда мы помещаем копию числа на входе функции, j – остаток от деления на 10, чтобы узнать является ли цифра 0 или 5, p – выходное число.
Функция с помощью цикла repeat .. until берёт правую цифру числа и проверяет её, если эта цифра 0 или 5, то ничего не делаем и идём к следующей цифре справа, а если не 0 и не 5, то плюсуем к выходному числу эту цифру умноженную на 10 в степени n. И так делаем со всеми цифрами числа.
Решение
А в основной программе мы вводим исходное число, и прогоняем его через цикл столько раз, пока там закончатся все 0 и 5. Выводим полученное число.
var h,n:integer;
function num(i:integer):real;
var n, s, j: integer;
p:real;
begin
s:=i;
n:=0;
p:=0;
repeat
j:=s mod 10;
s:=s div 10;
if (j<>0) and (j<>5)then
begin
p:=p+j*10**n;
inc(n);
end;
until(s=0);
num:=p;
end;
begin
write('Введите целое число n=');
readln(n);
repeat
h:=n;
n:=round(num(n));
until(h=n);
writeln('Число после всех выбрасываний: ', n);
end.
2)
s1 – первая строка;s2 – вторая строка;
i – переменная цикла, для прогонки цикла количество раз, равное количеству букв в первой строке;
j – номер буквы во второй строке;
flag – флаг, определяющий есть ли буквы из первой строки во второй строке;
k – номер буквы в первой строке (при удваивании какой-либо буквы увеличивается на 1, чтобы не учитывать второй экземпляр буквы, и также увеличивается на 1 в каждой итерации);
В программе мы вводим две строки, определяем k = 1, и проходим цикл for столько, сколько букв в первой строке изначально, за одну итерацию мы проходим буквы второй строки, пока не закончится строка или пока мы не найдём такую же буквы, что в первой строке, если на ходим такую букву, то делаем flag = 1, удваиваем букву в первой строке функцией insert, и увеличиваем на 1 k, чтобы не учитывать второй экземпляр буквы
. В конце итерации цикла while увеличиваем j на 1 для перехода к другой букве второй строки, и в конце итерации цикла for – увеличиваем k. После работы цикла получаем и выводим результат.
var s1,s2:string;
c:char;
i,j,flag,k:integer;
begin
write('Введите первую строку: ');
readln(s1);
write('Введите вторую строку: ');
readln(s2);
k:=1;
for i:=1 to s1.Length do
begin
j:=1;
flag:=0;
while((j<=s2.Length) and (flag=0))do
begin
if(s1[k]=s2[j])then
begin
flag:=1;
insert(s1[k], s1, k+1);
inc(k);
end;
inc(j);
end;
inc(k);
end;
writeln('Изменённая строка: ', s1);
end