Вводится непустая последовательность символов (≤79), заканчивающаяся точкой. Отдельные слова в тексте разделены пробелами.
program gdy;
label 1; { метка }
var
s: string; { переменная СТРОКИ }
m: array [1 .. 100] of string;
{ массив, в который запишем все СЛОВА строки, имеющие ЗАДАННЫЙ символ }
i, p, n: integer;
max, min: string; { переменые МАКСимального и МИНимального слова строки }
c: char; { переменная заданного символа }
begin { ***************НАЧАЛО ПРОГРАММЫ************** }
1:
write('Vvedite stroky: ');
readln(s); { считываем исходную строку с экрана }
if s[length(s)] <> '.' then
begin { проверяем УСЛОВИЕ "заканчивается ли строка точкой" }
writeln('ERROR: konec stroki okancivaetsia na "."');
goto 1;
end; { если ошибка то сообщаем пользователью }
if length(s) > 79 then
begin { проверяем УСЛОВИЕ "последовательность символов (<= 79 ) " }
writeln('ERROR: stroka doljna biti <=79 simvolov');
goto 1;
end; { если ошибка то сообщаем пользователью }
write('Vvedite ZADANII SIMVOL:');
readln(c); { считываем "заданный символ" с экрана }
i := 0; { обнуляем СЧЁТЧИК кол-ва СЛОВ в строке }
repeat { ***цикл в котором записываем СЛОВА В массив*** }
p := pos(' ', s); { смотрим на какой позиции находится пробел }
if pos(c, copy(s, 1, p - 1)) <> 0
then { смотрим есть ли в текущем СЛОВЕ заданный символ }
begin
inc(i);
m[i] := copy(s, 1, p - 1);
end; { то увеличиваем СЧЁТЧИК на +1 и записываем это слово в МАССИВ }
delete(s, 1, p);
{ после того, как слово ПРОСМОТРЕННО - мы это слово удаляем }
until p = 0; { ***КОНЕЦ цикла, в котором записываем НУЖНЫЕ СЛОВА В массив }
n := i;
if pos(c, copy(s, 1, length(s) - 1)) <> 0
then { у нас осталось последнее слово в строке, которое проверяем на наличие в нём заданного символа }
begin
n := i + 1;
m[n] := copy(s, 1, length(s) - 1);
end; { если есть этот символ - то добавляем его в массив }
{ *************************************** }
max := m[1]; { изначально МАКСИМУМ ставим на 1 слово }
min := m[1]; { изначально МИНИМУМ ставим на 1 слово }
for i := 2 to n do
begin { дальше проверяем все слова начиная со второго }
if length(m[i]) > length(max) then
max := m[i]; { и вычисляем МАКСИМАЛЬНОЕ }
if length(m[i])(min) then
min := m[i]; { и вычисляем МИНИМАЛЬНОЕ }
end;
writeln;
writeln('MakS: ', max); { выводим МАКСИМАЛЬНОЕ слово на экран }
writeln('MIN: ', min); { выводим МИНИМАЛЬНОЕ слово на экран }
readln;
readln;
end.