Program Lab_02_41; Uses CRT; Type NStud=^Student; Student=record Otv1:string; Otv2:string; Next:NStud; end; slova=string; Var Head,Tail,Stud:NStud; Naim:array[1..10] of slova; {****************************************************************************} Procedure InitList; Begin Head:=nil; Tail:=nil; End; {****************************************************************************} Procedure AddToStudent(var Stud:NStud;St_Otv1,St_Otv2:string); Begin New(Stud); Stud^.Otv1:=St_Otv1; Stud^.Otv2:=St_Otv2; If Head=nil then Begin Head:=Stud; Tail:=Stud; end else begin Tail^.Next:=Stud; Tail:=Stud; end; End; {****************************************************************************} procedure Load(var name:string;var Stud:NStud;var lon:boolean;var St_Otv1,St_Otv2:string); var base:text; st,len:string; begin InitList; lon:=true; write('Введите имя файла: '); readln(name); assign(base,name); {$I-} Reset(base); {$I+} if IOResult<>0 then begin lon:=false; TextColor(Red+Blink); writeln; writeLn(' Данного файла не существует! '); writeLn; NormVideo; WriteLn(' Для выхода в основное меню нажмите Enter.'); repeat until keypressed; end else begin while not (EOF(base)) do begin readln(base,st); {St_Fam:=copy(st,1,pos(' ',st)-1);} delete(st,1,pos(' ',st)); St_Otv1:=copy(st,1,pos(' ',st)-1); delete(st,1,pos(' ',st)); St_Otv2:=copy(st,1,length(st)); AddToStudent(Stud,St_Otv1,St_Otv2); end; end; close(base); WriteLn; TextColor(Green); WriteLn(' База данных успешно загpужена.'); Writeln; normvideo; writeln(' Для возвpата в основное меню нажмите Enter'); end; {****************************************************************************} Procedure Nomb_Naim(var n:integer;var Stud:Nstud;var Naim:array of slova); Begin n:=0; Repeat If Head<>nil then Begin inc(n); Naim[n]:=Head^.Otv1; inc(n); Naim[n]:=Head^.Otv2; Head:=Head^.Next; end; until Head=nil; end; {****************************************************************************} Procedure PrintStudent; Var i,n:integer; Begin Nomb_Naim(n,Stud,Naim); Writeln('Элементы списка: '); writeln; For i:=1 to n do Writeln(Naim[i]); writeln; writeln('Hажмите Enter'); end; {************************ Пpоцедуpа выхода из пpогpаммы *********************} Procedure Exit; Begin textcolor(Green); WriteLn(' Спасибо за использование пpогpаммы! Всего добpого!'); normvideo; Writeln; Writeln(' Для выхода нажмите Enter'); Dispose(Stud); end; {****************************************************************************} Var vch:string; v:integer; code,n:integer; lon:boolean; name,St_Otv1,St_Otv2:string; Begin clrscr; writeln('1. Загрузить базу данных'); writeln('2. Вывод на экран базы данных'); writeln('3. Выход из пpогpаммы'); writeln; repeat writeln('Выбиpите пункт меню, набpав с клав-ы число соответсвующее ему [1..3]:'); readln(v); case v of 1 : Load(name,Stud,lon,St_Otv1,St_Otv2); 2 : PrintStudent; 3 : Exit; end; repeat until keypressed; until (v=3); End.