Var a,k,m,min,i,flag:integer; begin readln(a); m:=a; {сохраняю введенное значение и считаю кол-во цифр в числе} while m >0 do begin m:=m div 10; k:=k+1; end; min:=9; {записываю самое большое нечетное число} {в цикле отсекаю последнюю цифру в числе и проверяю ее на нечетность. Если она нечетная и меньше числа min, то сохраняю ее в min и присваиваю переменной Flag 1. Если к концу программы в переменной flag будет 1, значит хотя бы одна нечетная цифра в числе была, если flag=0 тогда в числе нет нечетных} for i:=1 to k do begin if (a mod 10<=min)and(a mod 2<>0) then begin min:=a mod 10; flag:=1; end; a:=a div 10; end; if flag=0 then writeln('нет нечетных') else writeln(min); end.
Рекурсивный подход.(Символы тоже удаляет) function grad(s:string):string; var i:byte; detect:boolean; begin while i < length(s) - 2 do begin inc(i); if (s[i] = s[i+1]) and (s[i] = s[i+2]) then {проверка последовательности из 3 елементов} begin delete(s,i,3); {если да - удаляем их} detect:=True; {логическая переменная регистрирует изменение строки} end;end; if detect = True then s:=grad(s); {если строку изменили , проверяем не появились ли там еще последовальности} grad:=s; end;
var s:string; begin readln(s); writeln(grad(s)); end.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota
Оформи подписку