• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите, пожалуйста, решить задачу на Паскале

vale.miheeva

Ученик
Регистрация
22 Май 2014
Сообщения
1
Реакции
0
Баллы
0
Помогите, пожалуйста, решить задачу на Паскале

Пусть файлы c и d с компонентами, являющимися целыми или действительными числами, упорядочены по неубыванию. Записать в файле g все числа файлов c и d без повторений и в порядке возрастания.
 
Пусть файлы 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.webp
    AA01.webp
    14.1 KB · Просмотры: 140
Назад
Сверху