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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2011, 17:05   #1
Mind_Hunter
 
Регистрация: 16.10.2011
Сообщений: 4
Печаль сортировка массива

Ребят, помогите пожалуйста! Мне скоро сдавать курсовую, а я не могу понять в чём ошибка!
тема - сортировка массива методами пузырька и шейкера.
На процедуре шейкера в ответ выдаёт одни нули! Язык - Pascal Писал через турбо паскаль 7.0\
Код:
uses crt;
label l;
var
arr1,arr2:array[1..1000] of integer; stor: array[1..4] of string[50]; i,n,k:integer; kod:char;     a:string ; b:char;
{procedura dlya puzirka}
 procedure bubble(a1:array of integer; t:integer; var a2:array of integer);
var tmp,i,j:integer;
begin
for i:=1 to t do begin
a2[i]:=a1[i];
end;
for i:=1 to t-1 do begin
for j:=i+1 to t do begin
if a2[i]>a2[j] then begin
tmp:=a2[i];
a2[i]:=a2[j];
a2[j]:=tmp;
end;
end;
end;
writeln('otsortirovanniy massiv');
for i:=1 to t do
write(' ',a2[i]);
end;
{procedura dlya metoda sheikera}{здесь проблема какая-то в этой процедуре}
procedure shaker(arr3:array of integer; o:integer; var arr4:array of integer);
var i,k,x,j,d : integer;
begin
d:=1; i:=0;
for k:=o-1 downto 1 do begin
i:=i+d;
for j:=1 to k do begin
if (arr3[i]-arr3[i+d])*d<0 then
begin x:=arr3[i]; arr3[i]:=arr3[i+d]; arr3[i+d]:=x; end;
i:=i+d;
end;
d:=-d;
end;
for i:=1 to o do
arr3[i]:=arr4[i];
writeln('otsortirovanniy massiv');
for i:=1 to o do
write(arr4[i],' ');
end;
{menyu}
begin
l:stor[1]:='                   VVOD ELEMENTOV                     ';
stor[2]:='                   METOD PUZIRKA                              ';
stor[3]:='                   METOD SHEIKERA                   ';
stor[4]:='                   VIHOD                                      ';
textmode(2); clrscr; window(10,5,70,20);
textbackground(9); textcolor(3); clrscr;
k:=1;
gotoxy(3,1); write('           VIBERITE DEISTVIE:        '  );
kod:=' ';
while kod <> #13 do
begin
for i:=1 to 4 do
begin
if i=k then begin textbackground(14); textcolor(9) end
else begin textbackground(2); textcolor(9) end;
gotoXY (1,i+1); write(stor[i])
end;
kod:=readkey;
if kod=#0 then
begin    kod:=readkey;
if kod=#80 then begin if k<4 then k:=k+1 else k:=1 end;
if kod=#72 then begin if k>1 then k:=k-1 else k:=4  end;
end;
end;
window(1,1,80,25);textbackground(2); textcolor(1);clrscr; gotoxy(25,15);
{DEISTVIYA PROGRAMMI}
if k=1 then begin
writeln('vvedite kolichestvo elementov massiva');
writeln('Diapazon kolichestva ot 2 do 1000');
readln(n);
writeln('vvedite elementi massiva');
for i:=1 to n do begin
readln(arr1[i]);
end;
goto l;
end;

if k=2 then begin
writeln('Vi vibrali sortirovku metodom puzirka');
bubble(arr1,n,arr2);
writeln('Dlya vihoda v menyu najmite probel');
while not keypressed do ;
goto l;
end;
if k=3 then begin
writeln('Vi vibrali sortirovku metodom sheikera');
shaker(arr1,n,arr2);
writeln('Dlya vihoda v menyu najmite probel');
while not keypressed do ;
goto l;
end;
if k=4 then ;
writeln(' ');
writeln('Do svidaniya! Dlya vihoda najmite lyubuyu klavishu.');
while not keypressed do; end.

Последний раз редактировалось Mind_Hunter; 13.12.2011 в 17:10.
Mind_Hunter вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сортировка массива TotKtoNado БД в Delphi 16 22.08.2011 16:07
Сортировка массива Avvakymova Паскаль, Turbo Pascal, PascalABC.NET 8 13.05.2011 23:43
Сортировка массива методами предсортировки и слияния, и пирамидальная сортировка. lenny_24 Помощь студентам 2 17.04.2011 18:57
Сортировка массива Катеринка-Катя Паскаль, Turbo Pascal, PascalABC.NET 1 24.12.2010 13:37
сортировка массива nex 9119 Помощь студентам 1 16.12.2010 15:58