Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

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

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

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

Код:
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; 10.11.2018 в 00:56.
DeENiZzZ вне форума   Ответить с цитированием
Ответ

Опции темы

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

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

Быстрый переход

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


00:26.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.