Найти в тексте самое короткое и самое длинное слово, содержащие хотя бы один раз заданный символ- Pascal(Паскаль)

Вводится непустая последовательность символов (≤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.

Leave a Comment

78 − = 72