Описать запись с именем Route - Turbo Pascal (31459)
Формулировка задачи:
Решение задачи: «Описать запись с именем Route»
uses Crt; type route=record start:string; finish:string; No:integer; end; var r:array[1..8] of route; i:integer; procedure setwindow(x1,y1,x2,y2,c1,c2:integer); begin window(1,1,80,25); textbackground(Black); textcolor(LightGray); clrscr; window(x1,y1,x2,y2); textbackground(c1); textcolor(c2); clrscr; end; function menu:integer; var c:char; begin setwindow(25,5,56,12,Blue,Yellow); writeln('1. Enter data'); writeln('2. Search Route'); writeln('3. Write to file'); writeln('4. Print sorted list'); writeln('5. Load from file'); writeln('0. Quit'); writeln; TextColor(LightGreen); write('Your choice (number)>'); repeat c:=readkey; until c in ['0'..'5']; menu:=ord(c)-48; end; procedure vvod; var i,j,t:integer; s:route; begin for i:=1 to 8 do begin setwindow(20,5,60,10,Magenta,7+i);writeln('Record No:',i); write('Enter Starting Point:');readln(r[i].start); write('Enter End Point:');readln(r[i].finish); write('Enter Point Number:');readln(r[i].No); end; for i:=1 to 7 do for j:=i to 8 do if r[i].No>r[j].No then begin s:=r[i];r[i]:=r[j];r[j]:=s;end; end; procedure search; var s:string; i:integer; b:boolean; begin setwindow(20,5,60,5,green,13); write('Enter Search Point:'); readln(s); setwindow(30,4,70,13,blue,7); writeln('Search Result:'); b:=false; for i:=1 to 8 do if (r[i].start=s) or (r[i].finish=s) then begin writeln(r[i].start,' / ',r[i].finish,' / ',r[i].No); b:=true; end; if not b then writeln('Nothing found!'); writeln('Press any key to return to main menu...'); readkey; end; procedure writef; var s:string; i:integer; f:file of Route; begin setwindow(20,5,60,5,green,13); write('Enter file name:');readln(s); assign(f,s); rewrite(f); for i:=1 to 8 do write(f,r[i]); close(f); setwindow(20,5,60,5,green,13); write('File saved. Press any key to continue'); readkey; end; procedure print; var i:integer; begin setwindow(30,4,70,13,blue,7); writeln('Full List:'); for i:=1 to 8 do writeln(r[i].start,' / ',r[i].finish,' / ',r[i].No); writeln('Press any key to return to main menu...'); readkey; end; procedure load; var f:file of route; i:integer; s:string; begin setwindow(20,5,60,5,green,13); write('Enter file name:');readln(s); assign(f,s); reset(f); for i:=1 to 8 do read(f,r[i]); clrscr; write('File loaded. Press a key...'); readkey; end; begin repeat case menu of 0:halt; 1:vvod; 2:search; 3:writef; 4:print; 5:load; end; until false; end.
Объяснение кода листинга программы
Этот код написан на языке Turbo Pascal. Он описывает запись с именем Route
. В этой записи есть три поля: start
(начало), finish
(конец) и No
(номер). Все эти поля являются строками.
В функции vvod
происходит ввод данных для каждого из восьми маршрутов. Для каждого маршрута вводятся начальная и конечная точки, а также номер пункта.
Функция search
позволяет пользователю искать маршрут по начальной или конечной точке или по номеру пункта. Если такой маршрут найден, он выводится на экран. Если маршрут не найден, выводится сообщение Nothing found!
.
Функция writef
позволяет пользователю записывать данные о маршрутах в файл. Пользователь вводит имя файла, после чего данные о маршрутах записываются в этот файл.
Функция print
позволяет вывести на экран полный список маршрутов. Для каждого маршрута выводятся начальная и конечная точки, а также номер пункта.
Функция load
позволяет пользователю загружать данные о маршрутах из файла. Пользователь вводит имя файла, после чего данные о маршрутах считываются из этого файла и выводятся на экран.