Дан файл с текстом, где каждое предложение занимает строку файла. Переставить слова в обратном порядке в каждом предложении, создав новый файл — Pascal(Паскаль)

program fh;

var
  f, g: text;
  i, p, n: integer;
  m: array [1 .. 100] of string;
  s: string;

begin
  assign(f, 'in.txt');
  reset(f);
  assign(g, 'out.txt');
  rewrite(g);

  while not eof(f) do
  begin { считываем ВЕСЬ файл }
    readln(f, s); { считываем очередную строку }
    i := 0; { ставим счётчик слов на 0 }

    repeat { *********предложение разбиваем на слова и записываем в массив }
      inc(i); { увеличиваем счётчик текущего ПРЕДЛОЖЕНИЯ }
      p := pos(' ', s); { смотрим где находится пробел }
      m[i] := copy(s, 1, p - 1); { записываем текущее слово в массив }
      delete(s, 1, p); { то слово, которое заприсали в массив - удаляем }
    until p = 0; { **************** }

    n := i + 1; { конец массива }
    if s[length(s)] = '.' then { если строчка заканчивается точкой }
    begin
      m[n] := copy(s, 1, length(s) - 1);
      m[1] := m[1] + '.' { то эту точку перемещаем на 1 слово }
    end
    else
      m[n] := s; { а если нет точки - то просто его записываем в массив }

    writeln(g);;
    for i := n downto 1 do
      write(g, m[i], ' ');
    { идём с конца массива в начало и записываем слова в обратном порядке }
  end;
  writeln('PEREZAPISANO...');
  readln;
  close(f);
  close(g);

end.

Leave a Comment

11 − 3 =