Найти в начальном числе самую длинную часть, где цифры расположены в порядке возрастания - Pascal ABC
Формулировка задачи:
9-значное число закодированное в виде 18-символьной строки, на каждом четном месте которого записана цифра, а на нечетной - положение этой цифры в начальном числе. Найти в начальном числе самую длинную часть, где цифры расположены в порядке возрастания.
Помогите решить.
Решение задачи: «Найти в начальном числе самую длинную часть, где цифры расположены в порядке возрастания»
textual
Листинг программы
var
s,n,t:string;
i,j:integer;
begin
write('Введите строку:');
readln(s);
n:=' ';
for i:=1 to length(s) do
if odd(i) then j:=ord(s[i])-48 else n[j]:=s[i];
t:=''; s:='';
for i:=1 to length(n)-1 do begin
t:=t+n[i];
if n[i]>=n[i+1] then begin
if length(t)>length(s) then s:=t;
t:='';
end;
end;
writeln('Самая длинная возрастающая последовательность:',s);
end.
Объяснение кода листинга программы
- Вводится строка с помощью функции readln.
- Создаются три переменные: s, n и t.
- Переменная n инициализируется пустой строкой.
- Переменная t инициализируется пустой строкой.
- Запускается цикл for для каждого символа в строке s.
- Внутри цикла проверяется, является ли текущий индекс нечетным. Если да, то вычисляется порядковый номер текущего символа в строке.
- Если текущий символ больше следующего, то обновляется значение переменной t.
- Переменная n инициализируется значением текущего символа.
- Переменная s инициализируется пустой строкой.
- Если длина строки t больше длины строки s, то значение переменной s обновляется на t.
- Переменная t сбрасывается обратно в пустую строку.
- Цикл for завершается.
- Выводится сообщение о самой длинной возрастающей последовательности.