Помощь - Поиск - Пользователи - Календарь
Полная версия: работа с текстовыми файлами
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Багирка
написать программу, которая считывает текст из файла Input.txt и выводит в файл Output.txt все предложения в обратном порядке.
Lapp
Цитата(Багирка @ 26.12.2008 16:22) *
написать программу, которая считывает текст из файла Input.txt и выводит в файл Output.txt все предложения в обратном порядке.

Вот, смотри.
Это решение твоей задачи. Оно использует точку в качестве разделителя предложений. Годится для предложений любой длины и не использует дополнительной памяти для хранения данных (ну, кроме одного байта smile.gif).

Но.. в нем не хватает одной строки! smile.gif Пропущенная строка отмечена комментарием:

var
  f,g: file of char;
  s,p,t: LongInt;
  b: boolean;
  c: char;

begin
  Assign(f,'Input.txt');
  ReSet(f);
  Assign(g,'Output.txt');
  ReWrite(g);
  s:=FileSize(f);
  p:=0;
  while not EoF(f) do begin
    for b:=false to true do begin
      Seek(f,p);
      if b then Seek(g,s-t) else t:=p;
      while not EoF(f) do begin
        Read(f,c);
        { здесь должна быть строка вида:  if ... then ... else ... ; }
        if c='.' then break
      end
    end;
    p:=t+1
  end;
  Close(f);
  Close(g)
end.
Догадаешься, что там надо вставить вместо многоточий - все будет тип-топ. Нет - ну, "не судьба" ((С) известный анекдот smile.gif ).
Багирка
Цитата(Lapp @ 26.12.2008 17:47) *

Вот, смотри.
Это решение твоей задачи. Оно использует точку в качестве разделителя предложений. Годится для предложений любой длины и не использует дополнительной памяти для хранения данных (ну, кроме одного байта smile.gif).

Но.. в нем не хватает одной строки! smile.gif Пропущенная строка отмечена комментарием:

var
  f,g: file of char;
  s,p,t: LongInt;
  b: boolean;
  c: char;

begin
  Assign(f,'Input.txt');
  ReSet(f);
  Assign(g,'Output.txt');
  ReWrite(g);
  s:=FileSize(f);
  p:=0;
  while not EoF(f) do begin
    for b:=false to true do begin
      Seek(f,p);
      if b then Seek(g,s-t) else t:=p;
      while not EoF(f) do begin
        Read(f,c);
        { здесь должна быть строка вида:  if ... then ... else ... ; }
        if c='.' then break
      end
    end;
    p:=t+1
  end;
  Close(f);
  Close(g)
end.
Догадаешься, что там надо вставить вместо многоточий - все будет тип-топ. Нет - ну, "не судьба" ((С) известный анекдот smile.gif ).


Догадаюсь!!! спасибо!!!!!! laugh.gif мона вас в щечку !kiss4.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.