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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.08.2009, 19:59   #1
pilot76
Пользователь
 
Регистрация: 13.08.2009
Сообщений: 13
По умолчанию сортировка Шелла

Вот такое задание.
"Сортрировка Шелла. Размерность массива n=10, n=100, n=250.
Массив задается случайным образом.
В программу необходимо ввести цельночисленный счетчик который будет считать кол-во обменов."
Я написал сортировку, но получилось как-то "криво" сортирует по разу при нажатии enter. и как счетчик включить не пойму.
вот прога:

Код:
program Shell;
              const  t = 10;  n=10;
              var i, j, k, s, m: integer;
   h: array[1..t] of integer;
   a: array[1..t] of real;
   x: real;
begin
    randomize;
  writeln('исходный:');
  for i:=1 to n do
  begin
  a[i]:=100*random;
  write(a[i]:5:0);
 end;
 begin
 h[1]:=9; h[2]:=5; h[3]:=3; h[4]:=2; h[5]:=1;
 writeln;
 for m:=1 to t do
begin
   k:=h[m];
   s:=-k;
   for i:=k+1 to n do
   begin
 x:=a[i];
 j:=i-k;
 if s=0 then
  begin
 s:=-k;
 s:=s+1;
 a[s]:=x;
 end;
 while (x<a[j]) and (j<t) do
    begin
   a[j+k]:=a[j];
   j:=j-k;
 end;
   a[j+k]:=x;
  end;
  writeln('сотированный;');
   for i:=1 to t do
   write(a[i]:5:0);
   readln
end;
end;
end.

Последний раз редактировалось MaTBeu; 16.08.2009 в 22:31.
pilot76 вне форума Ответить с цитированием
Старый 17.08.2009, 08:33   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
"криво" сортирует по разу при нажатии enter
А надо как?
Цитата:
и как счетчик включить не пойму.
Ну я лично думаю что стоит добавить переменную cnt:integer;
в код после a[s]:=x; inc(cnt)
А в конце программы cnt выводить.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.08.2009, 18:05   #3
pilot76
Пользователь
 
Регистрация: 13.08.2009
Сообщений: 13
По умолчанию

получилось поправил немного и все заработало, СПАСИБО!
вот
Код:
program Shell;
              const  t = 10;  n=10;
              var i, j, k, s, m: integer;cnt:integer;
   h: array[1..t] of integer;
   a: array[1..n] of real;
   x: real;
begin
    randomize;
  writeln('исходный:');
  for i:=1 to n do
  begin
  a[i]:=100*random;
  write(a[i]:5:0);
 end;
 begin
 h[1]:=9; h[2]:=5; h[3]:=3; h[4]:=2; h[5]:=1;
 writeln;
 for m:=1 to t do
begin
   k:=h[m];
   s:=-k;
   for i:=k+1 to n do
   begin
 x:=a[i];inc(cnt);
 j:=i-k;
 if s=0 then
  begin
 s:=-k;
 s:=s+1;
 a[s]:=x;
 end;
 while (x<a[j]) and (j<t) do
    begin
   a[j+k]:=a[j];
   j:=j-k;
 end;
   a[j+k]:=x;
  end;
  writeln('сортированный;');
   for i:=1 to n do
   write(a[i]:5:0);
     readln;
     writeln('проходы:');
   write (cnt);
       readln
end;
end;
end.

Последний раз редактировалось MaTBeu; 17.08.2009 в 19:45.
pilot76 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка Шелла и Шейкер-сортировка AleksandrMakarov Паскаль, Turbo Pascal, PascalABC.NET 11 11.03.2012 12:18
Помогите решить задачу в C++ на массивы + сортировка методом Шелла Exact Помощь студентам 2 18.06.2009 14:44
Сортировка массива способом Шелла "степени двойки" xxxPascalxxx Помощь студентам 2 15.11.2008 21:58
1. Сортировка Шелла по убыванию 2. Сортировка вставками по убыванию Arkuz Помощь студентам 1 25.09.2007 17:16