Задача состоит в следующем: Считать с файла информацию об автомобилях, затем выделить с одинаковым номером и все это посимвольно отсортировать по марке автомобиля и номерам.
Помогите мне произвести сортировку, вот сам код: Сортировка:
| Код | Procedure sort (var snach:auto); var sp:auto; flag:boolean; i:integer; begin flag:=true; while flag do begin flag:=false; sp:=snach; while sp^.next<>snach do begin i:=1; repeat if abc (sp^.marka[i]) > abc(sp^.next^.marka[i]) then begin if sp=snach then snach:=sp^.next obmen(sp); flag:=true; i:=4; end else flag:=false until i=4; sp:=sp^.next; end end flag:=true; while flag do begin flag:=false; sp:=snach; while sp^.next<>snach do begin i:=1; repeat if abc(sp^.nomer[i]) > abc(sp^.next^.nomer[i]) then begin if sp=snach then snach:=sp^.next obmen(sp); flag:=true; i:=4; end sp:=sp^.next; end end end;
|
Структура списка:
| Код | Program spisok (input, output); type auto = ^T_auto; T_auto = record next: auto; pred: auto; fam: array[1..10] of char; inic: array[1..4] of char; marka: array[1..15] of char; nomer: array[1..6] of char; year: array[1..4] of char; end; var snach, snach1: auto;
|
Функция обмена:
| Код | Procedure obmen (var sp1: auto); var r1, l2, r2:auto; begin r1:=sp1^.pred; l2:=sp1^.next; r2:=l2^.next; sp1^.pred:=l2; r1^.next:=l2; sp1^.next:=r2; l2^.pred:=r1; l2^.next:=sp1; r2^.pred:=sp1; sp1:=l2; end;
|
Функция abc:
| Код | Function abc (a:char):integer var l:integer d:string[108] begin l:=0 D:='0123456789AaBbCc...Zz' repeat l:=l+1 until A=D[i] abc:=l end;
|
Вид файла ввода:
| Код | Fitisov A.P. BMW 7136471 1987 Pavlov K.L. Volvo 7115886 1993 Korolev F.M. Lada 6322917 1991 Putin V.V. Hammer 0000001 2007 Ivanov S.V. Toyota 0000002 2006
|
|