Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2012, 12:44   #1
Prin53
Пользователь
 
Регистрация: 21.02.2012
Сообщений: 59
По умолчанию Строки.

дан файл f1. Переписать в обратном порядке его строки в файл f2. Содержимое f1 не клпировать в оперативную память.

В смысле, что значение f1 не представлять в виде массива, стека, очереди.

Последний раз редактировалось Prin53; 28.02.2012 в 19:44.
Prin53 вне форума Ответить с цитированием
Старый 28.02.2012, 12:55   #2
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

почитай тут приложи немного смекалки и зделаешь свое задание...
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 28.02.2012, 14:21   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

VIK_aka_TOR

я лично вижу только крайне ТУПОЕ и НЕЭФФЕКТИВНОЕ решение:
Код:
прочитать все строки исходного файла, подсчитывая их количество (пусть это будет N).
последнюю прочитанную строку записать в файл f2
потом в цикле К от 1 до N-1
  установить файл на начало через Reset(f); 
  прочитать K строк из исходного файла.
  последнюю прочитанную строчку записать в файл f2
конец цикла
закрыть файлы f1 и f2
конец.
я не заметил другое, более эффективное решение?!

p.s. можно, конечно, открывать файл f1 как бинарный (file или file ob char) и читать посимвольно в направлении от конца к началу - но это, имхо, тоже криво
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.02.2012, 14:27   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Содержимое f1 не клпировать в оперативную память.
Задача не имеет решения.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.02.2012, 14:53   #5
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
VIK_aka_TOR

я лично вижу только крайне ТУПОЕ и НЕЭФФЕКТИВНОЕ решение:
Код:
прочитать все строки исходного файла, подсчитывая их количество (пусть это будет N).
последнюю прочитанную строку записать в файл f2
потом в цикле К от 1 до N-1
  установить файл на начало через Reset(f); 
  прочитать K строк из исходного файла.
  последнюю прочитанную строчку записать в файл f2
конец цикла
закрыть файлы f1 и f2
конец.
я не заметил другое, более эффективное решение?!

p.s. можно, конечно, открывать файл f1 как бинарный (file или file ob char) и читать посимвольно в направлении от конца к началу - но это, имхо, тоже криво
да и задание не самое лучшее... что бы красиво решить...
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 28.02.2012, 19:41   #6
Prin53
Пользователь
 
Регистрация: 21.02.2012
Сообщений: 59
По умолчанию

Я думал посимвольно считывать до пробела(конца строки) и заносить в файл2. Как такой вариант?
Prin53 вне форума Ответить с цитированием
Старый 29.02.2012, 17:11   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Я думал посимвольно считывать до пробела(конца строки) и заносить в файл2. Как такой вариант?
плохо...
к сожалению, это никакого отношения к решению вашей задачи не имеет.
Вы не сможете получить "в обратном порядке cтроки файла f1" таким образом...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.03.2012, 18:38   #8
Prin53
Пользователь
 
Регистрация: 21.02.2012
Сообщений: 59
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
плохо...
к сожалению, это никакого отношения к решению вашей задачи не имеет.
Вы не сможете получить "в обратном порядке cтроки файла f1" таким образом...
Тогда по вашему алгоритму, какой функцией считать строку?
Prin53 вне форума Ответить с цитированием
Старый 01.03.2012, 19:04   #9
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Вариант, который предложил Serge_Bliznykov:
Код:
procedure backwardscopy(var f1,f2:text);
var
  i,count:integer;
  s:string;
begin
  count:=0;
  reset(f1);
  while not EOF(f1) do
    begin
      readln(f1);
      inc(count);
    end;
  rewrite(f2);
  while count>=1 do
    begin
      s:='';
      reset(f1);
      for i:=1 to count-1 do
        readln(f1);
      readln(f1,s);
      writeln(f2,s);
      dec(count);
    end;
  close(f1);
  close(f2);
end;
От себя добавлю, что решение не только "крайне ТУПОЕ и НЕЭФФЕКТИВНОЕ", но, похоже, единственно верное, при такой постановке задачи.
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 01.03.2012, 22:20   #10
Prin53
Пользователь
 
Регистрация: 21.02.2012
Сообщений: 59
По умолчанию

Цитата:
Сообщение от whatever Посмотреть сообщение
Вариант, который предложил Serge_Bliznykov:
Код:
procedure backwardscopy(var f1,f2:text);
От себя добавлю, что решение не только "крайне ТУПОЕ и НЕЭФФЕКТИВНОЕ", но, похоже, единственно верное, при такой постановке задачи.
Спасибо, огромное.
Prin53 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сделать в гриде строки выше, чтобы не растягивать строки до бесконечности kris__tina БД в Delphi 1 09.06.2011 15:31
Даны строки S и S0. Удалить из строки S все подстроки, совпадающие с S0 . Если совпадающих подстрок нет, Шпунюся Помощь студентам 1 16.12.2010 21:02
Создание пустой строки и копирование в неё содержимое предыдущей строки Gvaridos Microsoft Office Excel 2 29.10.2010 13:33
Определять максимальную длину той части строки s, которая не содержит символы из строки s1. Александе еть я Общие вопросы C/C++ 5 13.04.2010 20:54
Перенести символа с начала строки в место перед запятой этой же строки. Zhiltsov Microsoft Office Excel 4 05.06.2009 13:10