IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> сортировки и их сравнение, гляньте плиз.. надо бы посрочнее
сообщение
Сообщение #1


Гость






:p2:
народ есть задачка!
но что то не клеиться!
вот собсвенна она :

Исследовать число перемещений элементов в массиве для следующих методов сортировок:
1) шейкерная сортировка;
2) сортировка с помощью бинарных вставок.
Анализ числа перемещений произвести на массивах размерностью 200, 800, 1000, 5000, 10000, а также на следующих типах массивов:
1) случайный;
2) сортированный;
3) частично-сортированный;
4) перевернутый.
Смотрим что быстрее
Вычисления проводятся несколько раз; затем искомые результаты выводятся на экран в таблице.


unit sorts; {модуль сортировки}
interface
uses crt;
const c=5;
a:array[1..c] of
integer=(200,800,1000,5000,10000);
g=10000;
var z:array[1..g] of integer;
cpl, cp2:array[1..5,1..4] of longint;
u,v,w,kx,ky:byte;
p,q,Mminl,Mavel,Mmaxl,Mave2,Mmax2,t:longint;
i,k,r,l,m,j,x,n:integer;
procedure binary_insert;
procedure shaker_sort;
procedure virt;
implementation
procedure binary_insert;
begin q:=0; n:=a[u];
for i:=2 to n do begin
x:=z[i];
q:=q+l;
r:=i;
l:=1;
while l<r do
begin
m:=(l+r) div 2;
if z[m]<x then l:=m+l
else r:=m; end;
for j:=i downto r+1 do begin
z[j] :=z [j-1] ;
q:=q+l;
end;
z[r]:=x; q:=q+l;
end;
cpl[u,v]:=q;
end;
procedure shaker_sort;
begin
p:=0;
n:=a[u];
l:=2;
r:=n ;
k:=n ;
repeat
for j:=r downto l do
if z[j-l]>z[j] then
begin
x:=z [j-1] ;
z[j-l]:=z[j] ;
z[j]:=x;
k:=j;
p:=p+3;
end;
l:=k+l;
for j:=l to r do
if z[j-l]>z[j] then
begin
x:=z[j-1] ;
z[j-1]:=z[j] ;
z[j]:=x ;
k:=j;
p:=p+3;
end;
r:=k-1; { nenenennenenenenn 1}
until l>r;
cp2[u,v]:=p;
end;
end

unit massive; {муодуль с процелурами длдя задание исходных данных}
interface
uses sorts, crt;
procedure rand_mas;
procedure sort_mas;
procedure obr__mas;
procedure sort_part_mas;
implementation
procedure rand_mas; begin
randomize;
for i:=l to a[u] do
z [i]:=random(100) -50;
end;
procedure sort_mas;
begin
for i:=l to a[u] do
z[i]:=i;
end;
procedure obr_mas;
begin
for i:=l to a[u] do
z[i]:=a[u]+l-i; end;
procedure sort_part_mas ;
begin
for i:=l to a[u] do begin
if (i mod 40=0) then
for k:=i down to i-10 do
z[k]:=k else
z[i]:=random(50)-100;
end;
end;
END.



unit outme; {модуль вывод результатов в таблице}
interface
uses crt,sorts;
var ex,cy:byte;
procedure tabliza;
procedure out_cp;
procedure out;
procedure pod;
procedure process;
procedure bar;
procedure complete;
implementation
procedure tabliza; begin
clrscr;
gotoxy (1 f 0) ;
textcolor(yellow);
table{-таблица-} end;
procedure out_cp; begin
textcolor(red);
write (cpl[i,j]);
gotoxy (kx,ky+2);
textcolor(green);
write (cp2[i,j]); end;
procedure out; {таблица}
begin
gotoxy (2,1) ;
i:=1;
ky:=5;
while i<=5 do
begin
j:=1;
kx:=9;
while j<=4 do
begin
gotoxy (kx,ky);
out_cp;
j:=j+1;
kx:=kx+ll;
end;
i:=i+l;
ky:=ky+4;
end;
end;
procedure pod;
begin
gotoxy (10, wherey+5) ;
textcolor(white);
write ('table of sorts.');
gotoxy(25,wherey);
write ( 'sort ( / ) ');
gotoxy(31,wherey);
textcolor (red+blink);
write('by binary insert');
gotoxy(48,wherey);
textcolor(green+blink);
write('by shaker sort');
textcolor(yellow); end;
procedure process; begin
textcolor (blue);
gotoxy (6,1 7) ;
table{-табличка-}
ex:=7;
cy:=18;
gotoxy(4,15);
textcolor(white+blink);
writeln('rabotayu........jdite..... '); end;

procedure bar; begin
gotoxy (ex, cy) ;
textcolor(white) ;
write(#221) ;
cx:=cx+l;
end;
procedure complete;
begin
write (#7) ;
gotoxy(4,15);
clreol;
gotoxy (20,22);
textcolor(white);
writeln ('YA VIPOLNIL!!!! ');
readln;
end;
END.


{ Основная программа:}
program shaker_binary;
uses massive,sorts,crt,outme;
BEGIN
textbackground(black) ;
clrscr;
process;
for w:=l to 2 do
begin
if w:=2 then
for i:=l to g do
z[i]:=0;
for u:=l to с do
for v:=l to c1044-1 do
begin
case v of
1: begin sort_mas; bar end;
2: begin obr__mas; bar end;
3: begin rand__mas ; bar end;
4: begin sort__part_mas; bar end;
end;
if w:=l then
binary_insert else
shaker_sort;
end; end;
complete;
gotoxy(2,2) ;
tabliza;
out;
pod;
cap;
readln;
END.




вообщем что то не пашит помогите плиз
:fire:
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата
вообщем что то не пашит
Уж очень это расплывчато. Что именно? Куда смотреть? Сама программа не запускается, или результаты подозрительные?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






угу прога не запускаться...

я чтото с юнитами намутил... и они подгружаться не хотят... или что?
уже 6 часов парюсь.. голова опухла . а надо срочняк!
sad.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Модуль sorts:
  procedure virt;
описана но не реализована...

В модуле massive.pas (процедура sort_part_mas) соедини слова down и to (downto должно быть записано вместе)...
Там же
procedure  obr__mas;
описана но не реализована...

В модуле outme (процедура tabliza) непонятно что за параметры передаются в gotoxy...
gotoxy (1 f 0) ;

там же (и еще в процедуре process):
table{-таблица-}

что это значит?

(процедура out):
kx:=kx+ll;

замени на
kx:=kx+l;


Процедура bar должна быть такой:
procedure bar;
begin
gotoxy(ex, cy);
textcolor(white);
write(#221);
ex:=ex+l;
end;


Ну и в основной программе много символов кириллицы в именах переменных - это недопустимо...
Пока все... Попробуй исправить это...
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 19.12.2025 11:44
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name