![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() |
Gektor |
![]() ![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: ![]() ![]() ![]() |
Необходимо создать однородную таблицу. Затем применить три метода сортировки: Бинарным включением, простым обменом, быстрая сортировка. по ключам №3 и №4. И подсчитать количество сравнений и обменов.
И так создаем таблицу: Program sort; Uses Crt; Const Max = 8; Type GD = record Bilet: Byte; Marshrut: String; Data: Integer; Vagon: Byte; Mesto: Byte; end; var x: GD; Tab: array [0..Max] of GD; //собственно сама таблица i,j,r,l,m,k: byte ; begin for i:=1 to max do with tab[i] do begin //заполняем таблицу writeln('Nomer Bileta: ',i); readln(tab[i].bilet); Write('Marshrut:'); readln(tab[i].marshrut); Write('Data Viezda:'); Readln(tab[i].data); Write('Nomer Vagona:'); Readln(tab[i].vagon); Write('Nomer Mesta:'); Readln(tab[i].mesto); end; //Далее нужно выполнить бинарную сортировку включениями Пробовал примастить вот это: for i:=2 to max do begin x:=tab[i]; k:=tab[i].data; l:=1; r:=i-1; while l<r do begin m:=(l+r) div 2; if k<tab[m].data then r:=m-1 else l:=m+1; end; for j:=i-1 downto l do tab[j+1]:=tab[j]; tab[l]:=x; end; // не сортирует... Помогите пожалуйста кто-нибудь.... |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Судя по алгоритму бинарного включения, программа должна выглядеть вот так (кое-что было добавлено, чтобы не мучаться со вводом значений при отладке):
Program sort;
Uses Crt;
Const
max = 8;
type
GD = record
Bilet: Byte;
Marshrut: String;
Data: Integer;
Vagon: Byte;
Mesto: Byte;
end;
procedure print(const X: GD);
begin
with X do
writeln(bilet:3, marshrut:10, data:3, vagon:5, mesto:5);
end;
const
tab: array[0 .. max - 1] of GD = (
(bilet:1; marshrut: 'moscow'; data:10; vagon:3; mesto:10),
(bilet:2; marshrut: 'kiev'; data:12; vagon:4; mesto:13),
(bilet:3; marshrut: 'minsk'; data:11; vagon:7; mesto:15),
(bilet:4; marshrut: 'orel'; data:18; vagon:9; mesto:18),
(bilet:5; marshrut: 'lvov'; data:28; vagon:2; mesto: 5),
(bilet:6; marshrut: 'piter'; data:30; vagon:1; mesto:33),
(bilet:7; marshrut:'tashkent'; data:17; vagon:8; mesto:23),
(bilet:8; marshrut: 'omsk'; data:15; vagon:5; mesto:22)
);
var
x: GD;
Left, Center, Right, i, j, k: integer;
begin
writeln('before');
for i := 0 to max - 1 do
print(tab[i]);
i := 2;
repeat
Left := 1;
Right := i - 1;
Center := ((Left + Right) div 2);
while Left <> Center do begin
if Tab[Center - 1].data > Tab[i - 1].data then Right := Center
else Left := Center;
Center := ((Left + Right) div 2);
end;
if Tab[Left-1].data < Tab[i-1].data then begin
if Tab[i-1].data > Tab[Right - 1].data then Left := Right + 1
else Left := Right;
end;
k := i;
X := Tab[i-1];
while k > Left do begin
Tab[k-1]:=Tab[k-1-1];
dec(k)
end;
Tab[Left - 1] := X;
inc(i);
until not(i<=max);
writeln('after');
for i := 0 to max - 1 do
print(tab[i]);
end.
|
Gektor |
![]()
Сообщение
#3
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: ![]() ![]() ![]() |
Tab[k-1]:= Tab[k-1-1]; - здесь не проходит....
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Gektor, ты все изменения увидел? Я гонял программу во всех возможных компиляторах... Нигде сбоя не было... Не пытайся этот код вставить в свою программу, сначала скопируй мою программу полностью, и убедись, что она работает, и разберись, КАК...
|
Gektor |
![]()
Сообщение
#5
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: ![]() ![]() ![]() |
Огромное спасибо. Заработало. Теперь разобраться осталось во всём:-)
|
Gektor |
![]()
Сообщение
#6
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: ![]() ![]() ![]() |
Volvo А ты не можешь показать как к этой же таблице сделать сортировку простым обменом и быструю сортировку?... Пожалуйста
|
Gektor |
![]()
Сообщение
#7
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: ![]() ![]() ![]() |
Помогите кто-нибудь к этой же таблице сделать сортировку простым обменом и быструю сортировку?... Пожалуйста, Пожалуйста, пожалуйста... очень срочно нужно....
|
![]() ![]() |
![]() |
Текстовая версия | 26.07.2025 22:12 |