Максимальная сумма двух элементов последовательности - Free Pascal
Формулировка задачи:
На вход программе подаётся последовательность целых чисел, каждое из которых не превосходит по модулю 2*10^9 . Числа записаны в одной строке через пробел. Признак конца ввода
(в последовательность не входит) – число 2,1*10^9. Требуется найти максимальную сумму двух элементов этой последовательности, которые располагаются друг от друга на расстоянии не менее 3 (между ними должно быть как минимум два других элемента последовательности). Гарантируется, что в последовательности будет не менее четырёх элементов. Разрешено использовать условные операторы, операторы ввода-вывода, все циклы.
Решение задачи: «Максимальная сумма двух элементов последовательности»
textual
Листинг программы
Uses Crt;
Const Pend = '2100000000';
Type
tR = ^tRs;
tRs = Record
s : String;
n : tR;
end;
Var
Pb,Pe,P : tR;
Ch : Char;
St : String;
Begin
Pb:=nil;
Writeln('Последовательность: ');
Repeat
St:='';
Repeat
Repeat Ch:=ReadKey Until Ch in ['0'..'9',' ','-'];
Write(Ch);
If Ch<>' ' then St:=St+Ch;
Until Ch=' ';
If St<>Pend then
Begin
New(P);
P^.s:=St;
P^.n:=nil;
If Pb=nil then Pb:=P else Pb^.n:=P;
Pe:=P;
end;
Until St=Pend;
{}
{...}
{}
end.
Объяснение кода листинга программы
- Объявлены переменные и типы данных: — Pb, Pe, P — указатели на записи типа tRs; — Ch — символ, считываемый из входных данных; — St — строка, в которую считываются символы из входных данных; — Pend — константа, обозначающая максимальную сумму двух элементов последовательности.
- Инициализируется переменная Pb значением nil.
- Выводится сообщение «Последовательность: » и начинается цикл чтения и обработки входных данных.
- В каждой итерации цикла считывается строка символов, разделённых пробелами.
- Если считанная строка не равна Pend, то создаётся новый указатель на запись типа tRs, в поле s записывается считанная строка, в поле n записывается значение nil, а в поле s следующего указателя на запись (если он не равен nil) записывается ссылка на только что созданный указатель. Значение указателя на запись (Pb) присваивается ссылке на следующий указатель на запись (Pe).
- Если считанная строка равна Pend, то выходим из цикла.
- Выводим сообщение «{}» и другую информацию, которую мы не видим в данном примере.
- Если в цикле была прочитана хотя бы одна строка, то выводим сообщение «...».