Описать запись с именем Route - Turbo Pascal (31459)

Узнай цену своей работы

Формулировка задачи:

Программа должна содержать меню и обеспечивать ввод-вывод в окна на экране. Необходимо предусмотреть контроль ошибок пользователя при вводе данных. При разработке программы применить технологию нисходящего проектирования. Логически законченные фрагменты оформить в виде подпрограмм, которым все необходимые данные передать через список параметров. Использования глобаль- ных переменных следует избегать. Описать запись с именем Route, содержащую следующие поля: название начального пункта маршрута; название конечного пункта маршрута; номер маршрута. Напи- сать программу, выполняющую следующие действия: ввод данных с клавиатуры в массив, состоящий из восьми элементов типа Route, с упорядочением записей по номерам маршрутов; вывод на экран информации о маршрутах, начинающихся или кончающихся в пункте, название которого введено с клавиатуры, а если таких маршрутов нет, вывод на экран соответствующего сообщения; запись массива в файл под заданным с клавиатуры именем.

Решение задачи: «Описать запись с именем Route»

textual
Листинг программы
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 позволяет пользователю загружать данные о маршрутах из файла. Пользователь вводит имя файла, после чего данные о маршрутах считываются из этого файла и выводятся на экран.

Оцени полезность:

11   голосов , оценка 3.818 из 5
Похожие ответы