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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2018, 23:44   #1
DeENiZzZ
Новичок
Джуниор
 
Регистрация: 09.11.2018
Сообщений: 1
По умолчанию Сортировка естественным слиянием по убыванию

Здравствуйте уважаемые знатоки! На дисциплине в Учреждении Образования возникли ошибки (или, как я их называю: "краснострочные") с программой (ниже по тексту). Непонятно абсолютно все (ну тут я уже немножко загнул)! Преподаватель не может (и не хочет) помочь, даже намекнуть, где ошибка и как её исправить. Надеюсь на вашу помощь и понимание.

Само задание такое: "Дана последовательность, расположить ее ненулевые элементы по убыванию".

Код:
Procedure Sort(name: string; var f: text);
Var s1,s2,a1,a2,where1,tmp: integer;
      f1,f2: text;
Begin
s1:=5; s2:=5; {Можно задать любые числа, которые запустят цикл while}
Assign(f,name);
Assign(f1,'input');
Assign(f2,'output');
While (s1>1) and (s2>=1) do
 begin
  where1:=1;
  s1:=0; s2:=0;
  Rewrite(f);
  Reset(f);
  Rewrite(f1);
  Rewrite(f2);
  Read(f,a1);
  Write(f1,a1,' ');
  While not EOF(f) do
   begin
    read(f,a2);
    If (a2<a1) then
    begin
      Case where1 of
    1: begin
       where1:=2;
       inc(s1);
       End;
    2: begin
       where1:=1;
       inc(s2);
         End;
      End;
    End;
    Case where1 of
    1: write(f1,a2,' ');
    2: write(f2,a2,' ');
    End;
     a1:=a2;
    End;
   If where1=2 then inc(s2) else inc(s1);
   Close(f);
   Close(f1);
   Close(f2);
   Rewrite(f);
   Reset(f1);
   Reset(f2);
   Read(f1,a1);
   Read(f2,a2);
   While (not EOF(f1)) and (not EOF(f2)) do
    begin
     If (a1<=a2) then
    begin
     Write(f,a1,' ');
     Read(f1,a1);
    End
     else
    begin
     Write(f,a2,' ');
     Read(f2,a2);
      End;
     End;
    While not EOF(f1) do
     begin
      tmp:=a1;
    Read(f1,a1);
    If not EOF(f1) then Write(f,tmp,' ')
    else Write(f,tmp);
     End;
    While not EOF(f2) do
     begin
    tmp:=a2;
    Read(f2,a2);
    If not EOF(f2) then Write(f,tmp,' ')
      else Write(f,tmp);
     End;
    Close(f);
    Close(f1);
    Close(f2);
   End;
 Erase(f1);
 Erase(f2);
End;
var g:text;
    s:string;
begin
write('Имя файла: ');
readln(s);
s:=s+'.txt';
Sort(s,g);
write('Файл отсортирован!');
readln
end.
_____
Код программы нужно выделять (форматировать) тегами [CODE] [/CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 09.11.2018 в 23:56.
DeENiZzZ вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка естественным слиянием (Нафаня) Помощь студентам 8 07.05.2013 08:05
Сортировка естественным слиянием TCH Помощь студентам 3 09.03.2011 20:44
Однофазная сортировка естественным слиянием dima154 Помощь студентам 0 20.11.2009 00:12
сортировка естественным слиянием ArtFul777 Паскаль, Turbo Pascal, PascalABC.NET 1 18.11.2008 19:36