Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сортировка попарным слиянием 
:(
    Опции темы
radist
Дата 22.4.2007, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 7.1.2007
Где: РОССИЯ

Репутация: нет
Всего: нет



Помогите откомпилировать программу. Почему-то не выводит отсортированный массив.
Код

Program _3_4;
uses crt;
Type massiv = array [1..15] of integer;
var
i0,j0,i,j,si,sj,k,ke,m,t:integer;
a: massiv;
begin
clrscr;
Writeln ('                         Cортировка по парныим слиянием');
Writeln;
for i := 1 to 15 do a[i]:= random(15);
Writeln ('Массив случайных чисел:');
for i:=1 to 15 do write (a[i]:3); {заполнение массива случайными числами}
Writeln; Writeln;

begin       {сортировка по парным слиянием}
  si:=1;    {начальный размер одного множества}
  while si<15 do {цикл, пока одно множество не составит весь массив}
   begin
     i0:=1;  {начальный индекс 1-ого множества пары}
     while i0<15 do  {цикл, пока не пересмотрим весь массив}
      begin
      j0:=i0+si;  {начальный индекс 2-ого множества пары}
      i:=i0;
      j:=j0;
   {размер 2-ого множества пары может ограничиваться концом массива}
 if si>15-j0+1 then sj:=15-j0+1 else sj:=si;
 if sj>0 then
   begin
     k:=i0; {начальный индекс слитого множества}
     while (i<i0+si+sj) and (j<j0+sj) do  {цикл, пока не исчерпаются
 оба входные множества}
     begin
 if a[i]>a[j] then {если элемент 1-ого <= элемента 2-ого, он остается на
 своём месте, но выходное множество расширяется иначе - освобождается место
 в выходном множестве и туда заносится элемент второго множества}
   begin
     t:=a[j];
     for m:=j-1 downto k do a[m+1]:=a[m];
     a[k]:=t;
     j:=j+1; {к следуещиму элементу во 2-м множестве}
    end; { if a[i] > a[j] }
     k:=k+1;   {выходное множество увеличелось}
     i:=i+1;   {если был перенос - за счет сдвига, если не было - за счет
     перехода элемента в выходное множество}
    end; {while}
    end; {if sj>0}
     i0:=i0+si*2; {начало следующей пары}
    end; {while i0<15}
     si:=si*2; {размер элементов пары увеличивается вдвое}
    end; {while si<15}
    end;
    for i:=1 to 15 do write (a[i]:3);
    Writeln (a[j]);
    readln;
    end.

Заранее благодарен!

Это сообщение отредактировал(а) volvo877 - 25.4.2007, 12:22
PM MAIL   Вверх
lamerOK
Дата 22.4.2007, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 5.4.2007

Репутация: нет
Всего: нет



У меня Pascal ABC компелирует, но при компиляции иногда выходит следующие 'Ошибка: 16 - выход за границы диапазона изменения индекса 1..15 (Program5.pas, строка 54)' А так программа написана правильно smile    
PM MAIL   Вверх
Misha_White
Дата 18.5.2007, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 25.4.2007
Где: Кодинск

Репутация: нет
Всего: 1



lamerOK
Цитата(lamerOK @  23.4.2007,  00:56 Найти цитируемый пост)
А так программа написана правильно 

Код

 for i:=1 to 15 do write (a[i]:3);
    Writeln (a[j]);

Это мы называем правильно написано?! smile 
А чему же у вас тут j равно?!
где цикл?!


--------------------
Я не волшебник... я только учусь...  
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0623 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.