Подсчитать количество предложений. Расставить предложения по возрастанию количества слов в каждом — Pascal(Паскаль)

program strings;

uses crt;

const
  zn = [' ', ',', '-', ':']; { промежуточные знаки }
  ks = ['.', '!', '?']; { Знаки окончания строки }

var
  f: text;
  com, { Команда }
  i, { для счёта }
  min, { кол-во слов в самом коротком предложении }
  count, { Кол-во слов в текущем предложении }
  ps, { позиция начала текущего предложения }
  nmin, { Начало минимального предложения }
  lnmin: integer; { Длина минимального предложения }
  txt: string; { полученный текст }
  first: boolean; { указывает на то что предложение первое }

begin
  readln(txt);
  writeln('Исходный текст:');
  writeln(txt);
  writeln;
  writeln('Результат:');
  txt := ' ' + txt;
  first := true;
  while length(txt) > 0 do
  begin
    min := maxint;
    ps := 1;
    for i := 1 to length(txt) do
    begin
      if txt[i] in ks then
        if min > count then
        begin
          nmin := ps;
          lnmin := i - nmin + 1;
          min := count;
          count := 0;
          ps := i + 1;
        end
        else
        begin
          ps := i + 1;
          count := 0;
        end
      else if txt[i] in zn then
        inc(count);
    end;
    if first then
    begin
      write(copy(txt, nmin + 1, lnmin));
      first := false;
    end
    else
      write(copy(txt, nmin, lnmin));
    delete(txt, nmin, lnmin);
  end;

end.

Leave a Comment

+ 7 = 13