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


Ответ
 
Опции темы Опции просмотра
Старый 23.05.2014, 00:09   #1 (permalink)
vale.miheeva
Новичок
 
Регистрация: 22.05.2014
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите, пожалуйста, решить задачу на Паскале

Пусть файлы c и d с компонентами, являющимися целыми или действительными числами, упорядочены по неубыванию. Записать в файле g все числа файлов c и d без повторений и в порядке возрастания.
vale.miheeva вне форума   Ответить с цитированием

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

Вы можете прочитать схожие топики - это не займет много времени

Помогите решить задачу в Паскале
Помогите решить задачу в Паскале
Помогите решить задачу в паскале

Старый 23.05.2014, 10:55   #2 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,977
Сказал(а) спасибо: 322
Поблагодарили 542 раз(а) в 183 сообщениях
Репутация: 102185
По умолчанию

Цитата:
Сообщение от vale.miheeva Посмотреть сообщение
Пусть файлы c и d с компонентами, являющимися целыми или действительными числами, упорядочены по неубыванию. Записать в файле g все числа файлов c и d без повторений и в порядке возрастания.
Забавная задачка. Конечно, можно действовать "в тупую": просто считать числа из двух файлов в один массив, а потом этот массив упорядочить по возрастанию, после чего закинуть результат в третий файл - но так не интересно. Предлагаю решение без использования массивов (черт, всю голову сломал, пока искал способ реализации этого "без повторений"):
Код:
Var
 f1,f2,f3,f4,f5:file of integer;
 i,N:byte;
 Q,P:Integer;
 B,EndF4:boolean;

Begin
 Assign(f1,'C');
 Rewrite(f1);
 Assign(f2,'D');
 Rewrite(f2);
 Randomize;
 for i:=1 to 20 do
  begin
   Q:=i*8-4+Random(9);
   write(f1,Q);
  end;
 for i:=1 to 16 do
  begin
   Q:=i*12-6+Random(13);
   write(f2,Q);
  end;
 Close(f1);
 Close(f2);
 Assign(f3,'A1');
 Rewrite(f3);
 Reset(f2);
 Repeat
  Read(f2,Q);
  Write(f3,Q);
 Until EoF(f2);
 Close(f2);
 Close(f3);
 Assign(f4,'A2');
 Reset(f1);
 Repeat
  Rewrite(f4);
  Reset(f3);
  Read(f1,Q);
  B:=true;
  Repeat
   Read(f3,P);
   if (Q<P) and B then
    begin
     write(f4,Q);
     write(f4,P);
     B:=false;
    end else write(f4,P);
  Until EoF(f3);
  Close(f3);
  Close(f4);
  Reset(f4);
  Rewrite(f3);
  Repeat
   Read(f4,Q);
   Write(f3,Q);
  Until EoF(f4);
  Close(f3);
  Close(f4);
 Until EoF(f1);
 Close(f1);
 Assign(f5,'G');
 Rewrite(f5);
 Reset(f4);
 Read(f4,Q);
 Write(f5,Q);
 N:=1;
 Repeat
  Reset(f4);
  Inc(N);
  for i:=1 to N do
   if Not EoF(f4) then Read(f4,Q);
  EndF4:=EoF(f4);
  Reset(f4);
  B:=true;
  for i:=1 to N-1 do
   begin
    Read(f4,P);
    if P=Q then B:=false;
   end;
  If B then Write(f5,Q);
 Until EndF4;
 Close(f4);
 Close(f5);
 Erase(f3);
 Erase(f4);
 Writeln(' File C:');
 Reset(f1);
 Repeat
  Read(f1,Q);
  Write(Q:4);
 Until Eof(f1);
 Close(f1);
 writeln;
 writeln;
 Writeln(' File D:');
 Reset(f2);
 Repeat
  Read(f2,Q);
  Write(Q:4);
 Until Eof(f2);
 Close(f2);
 writeln;
 writeln;
 Writeln(' File G:');
 Reset(f5);
 Repeat
  Read(f5,Q);
  Write(Q:4);
 Until Eof(f5);
 Close(f5);
 Readln
End.
Миниатюры
aa01.jpg  
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

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

Опции темы
Опции просмотра

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

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




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

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