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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2012, 21:32   #1
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
Радость работа с файлами

Доброго времени суток!
Вот 2 задачки, помогите решить плиз, :
1) Написать программу которая заносит в файл саму себя, НО наоборот (тоесть
Код:
end.
            Close (fout)
            Close (fin);
ну и так далее, задачу-то я решил, Но через массив строк, НО препад сказал что есть более красивое решение без массива, вот не подскажете?

и 2) Тоже самое копирование программы в файл (только уже нормальное копирование), скопировали -> смотрим один файл весит x, другой x+2, разница в 1 пустой строке, файл я заполнял WriteLn, а в основной программе после end. нет переноса строки, вот энтер это и есть 2 байта 10, 13 а вот как чтобы был одинаково? (я снова предложил тащить через весь цикл проверку на последний символ и тогда просто Write, но сами понимаете это ОЧЕНЬ не выгодно, а хочется красивых решений )
Poma][a вне форума Ответить с цитированием
Старый 06.04.2012, 08:06   #2
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от 'Poma
скопировали -> смотрим один файл весит x, другой x+2, разница в 1 пустой строке, файл я заполнял WriteLn, а в основной программе после end. нет переноса строки, вот энтер это и есть 2 байта 10, 13 а вот как чтобы был одинаково? (я снова предложил тащить через весь цикл проверку на последний символ и тогда просто Write, но сами понимаете это ОЧЕНЬ не выгодно, а хочется красивых решений )
Код:
var
  fin,fout: file of char;
  c: char;
....
  while not EoF(fin) do begin
    read(fin,c);
    write(fout,c)
  end;
[offtop]Только я не вижу большого смысла в такой задаче. Если есть исходик, то скопировать его - как два байта передать.. Есть аналогичная задача, но при условии, что файла с исходиком нет.. Вот она поинтереснее будет! ))
Я в свое время ее решил, но никаких следов этого не осталось ((. На С при этом получалось короче и красивее.[/offtop]
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 06.04.2012, 12:40   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Вроде работает 1-я:
Код:
Uses CRT;

var
  fin, fout: file of char;
  c: char;
  n, i, j: integer;
begin
  assign(fin, '1.pas');
  assign(fout, '2.pas');
  reset(fin);
  rewrite(fout);
  n := filesize(fin) - 1;
  i := n;
  while (n >= 0) and (i >= 0) do
  begin
    seek(fin, i);
    read(fin, c);
    if (c = #10) then
    begin
      for j := i + 1 to n do
      begin
        seek(fin, j);
        read(fin, c);
        write(fout, c);
      end;
    c := #13;
    write(fout, c);
    c := #10;
    write(fout, c);
    n := i - 2;
    i := n;
    end
    else
    dec(i);
  end;
  if n>=0 then
  for j := 0 to n do
      begin
        seek(fin, j);
        read(fin, c);
        write(fout, c);
      end;
  close(fin);
  close(fout);
end.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами AntiDriver Паскаль, Turbo Pascal, PascalABC.NET 3 06.06.2010 00:04
Работа с файлами! Anton5 Помощь студентам 2 19.04.2010 13:40
Работа с файлами cr1mson Общие вопросы C/C++ 7 14.01.2009 22:42
Работа с файлами Dim@ Помощь студентам 1 26.12.2007 22:43