Program VAR5_10; CONST G=10; {Размер таблицы судов} TYPE SUDNO = RECORD D1: STRING[10]; {Тип двигателя} D2: STRING[20]; {Имя судна} END; VAR F: FILE of CHAR; S: TEXT; CH: CHAR; I, J, K: INTEGER; FLS:BOOLEAN; A: ARRAY[1..G] of SUDNO; St, St1: String; PROCEDURE VYVOD; Begin FOR I:=1 TO J DO WRITELN (A[I].D1:10,' ',A[I].D2); END; Begin Writeln; Assign(F,'A:\VAR5\INPUT.TXT'); RESET(F); St:=''; St1:=''; FLS:=TRUE; J:=1; {Номер строки / судна} Writeln('Информация из файла INPUT.TXT:'); WHILE not EOF(F) DO BEGIN READ(F,CH);WRITE(CH); IF FLS THEN IF CH <> '-' THEN St:=St+CH ELSE begin A[J].D2:=Copy(St,1,LENGTH(St)-1); READ(F,CH); WRITE(CH); St1:=''; FLS:=FALSE; END ELSE IF CH <> ';' THEN St1:=St1+CH ELSE begin A[J].D1:=St1; J:=J+1; FLS:=TRUE; St:=''; END; END; Close(F); J:=J-1; WRITELN; WRITELN; Writeln('Вывод информации из таблицы SUDNO, всего записей - ',j); VYVOD; Writeln('Вывод информации из таблицы SUDNO после сортировки по двум полям:'); {Сортировка методом пузырька таблицы SUDNO} FOR I:=2 TO J DO BEGIN FOR K:=J DOWNTO I DO IF A[k-1].D1+A[k-1].D2 > A[k].D1+A[k].D2 THEN BEGIN ST:=A[k-1].D1; A[k-1].D1:=A[k].D1;A[k].D1:=St; ST:=A[k-1].D2; A[k-1].D2:=A[k].D2;A[k].D2:=St; END END; VYVOD; {Вывод информации в файл OUTPUT.TXT} Assign(S,'A:\VAR5\OUTPUT.TXT'); REWRITE(S); St1:=''; FOR I:=1 TO J DO IF St1 <> A[I].D1 {Новый двигатель} THEN Begin St1:= A[I].D1; IF I=1 THEN St:=A[I].D1+' ('+A[I].D2 {Первый проход} ELSE St := ST+'); '+A[I].D1+' ('+A[I].D2 {Остальные проходы} END ELSE Begin St:= St +', '+A[I].D2; IF I=J THEN St:= St +')' END; Writeln(S, St); {Вывод в файл OUTPUT.TXT} CLOSE(S); Writeln; Writeln('Вывод информации в файл OUTPUT.TXT: '); Writeln(St) END.