Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 10.12.2011, 19:18   #1 (permalink)
wildfires
Новичок
 
Регистрация: 10.12.2011
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите с задачей в паскале, работа с файлами

Можете помочь с одной программой ?

Есть два файла j,f со случайным количеством строк. Например если в файле j строк больше, нужно перенести лишнии строки с конца в файл f, что бы строк в обоих файлах было поровну. Или наоборот. Паскаль.

Заранее спасибо.
wildfires вне форума   Ответить с цитированием

Старый 10.12.2011, 19:18
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Рекомендую обратить внимание на данные топики, в них могут быть полезные ответы

Работа с файлами записи
Паскаль, работа с файлами

Старый 11.12.2011, 13:27   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от wildfires Посмотреть сообщение
Можете помочь с одной программой ?

Есть два файла j,f со случайным количеством строк. Например если в файле j строк больше, нужно перенести лишнии строки с конца в файл f, что бы строк в обоих файлах было поровну. Или наоборот. Паскаль.

Заранее спасибо.
Не слишком изящно, но работает. Имена, содержимое и расположение исходных файлов можете, конечно, поставить свои.
Код:
VAR
 Name1,Name2,Name,S:String;
 f1,f2,f3:Text;
 Nst1,Nst2,Nst,i:Word;

BEGIN
 Name1:='D:\text1.txt';
 Name2:='D:\text2.txt';
 Assign(f1,Name1);
 ReSet(f1);
 Assign(f2,Name2);
 ReSet(f2);
 Nst1:=0;
 Nst2:=0;
 Repeat
  Inc(Nst1);
  Readln(f1,S);
 Until EoF(f1);
 Repeat
  Inc(Nst2);
  Readln(f2,S);
 Until EoF(f2);
 Close(f1);
 Close(f2);
 If Nst1<Nst2 then
  begin
   Name:=Name1;
   Name1:=Name2;
   Name2:=Name;
   Nst:=Nst1;
   Nst1:=Nst2;
   Nst2:=Nst;
  end;
 Assign(f1,Name1);
 ReSet(f1);
 Assign(f2,Name2);
 Append(f2);
 Name:='D:\text3.txt';
 Assign(f3,Name);
 ReWrite(f3);
 For i:=1 to ((Nst1+Nst2) div 2) do
  begin
   readln(f1,S);
   writeln(f3,S);
  end;
 For i:=((Nst1+Nst2) div 2)+1 to Nst1 do
  begin
   readln(f1,S);
   writeln(f2,S);
  end;
 Close(f1);
 ReWrite(f1);
 Close(f3);
 ReSet(f3);
 For i:=1 to ((Nst1+Nst2) div 2) do
  begin
   readln(f3,S);
   writeln(f1,S);
  end;
 Close(f1);
 Close(f2);
 Close(f3);
 Erase(f3);
END.
Vladimir_S вне форума   Ответить с цитированием
Старый 16.12.2011, 01:35   #3 (permalink)
wildfires
Новичок
 
Регистрация: 10.12.2011
Сообщений: 6
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Vladimir_S, спасибо огромное, немного подправил и сдал на 5)
wildfires вне форума   Ответить с цитированием
Старый 16.12.2011, 19:30   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от wildfires Посмотреть сообщение
Vladimir_S, спасибо огромное, немного подправил и сдал на 5)
Поздравляю!
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 15:00.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.