Консультация № 137191
17.05.2008, 12:03
0.00 руб.
0 1 1
Программа по теме : файловые типы данных. Нужно создать файл, заполнить его входными данными, и вывести результат на экран. Задание : Создать файл, который имеет данные о отправке поездов с Московского железнодорожного вокзала. Каждая запись файла состоит с номера поезда, станцыи назначения, часа отправки, времени в дороге и наличии билетов. Получить данные о времени отправки поездов в город X в временном интервале от часа А до часа В,а также наличие билетов на поезде с номером Y.

Обсуждение

давно
Профессор
401888
1232
17.05.2008, 21:40
общий
это ответ
Здравствуйте, Solovey!
Решение задачи с комментариями в приложении. Главное правильно вводить данные и запросы.

Приложение:
uses crt;type Trasp=record {тип запись с полями по условию} nom:word; stn:string[20]; otpr:string[20]; prd:string[20]; kbl:byte; end;var sp:array[1..100]of Trasp; {массив записей-расписание} f:file of Trasp; {типизированный файл записей} n,i,j:integer; {разные переменные, смотрите в тексте} ni,ki,gor:string[20]; nm:word;beginclrscr;assign(f,‘raspisan.dat‘); {создаем файл и открываем для записи}rewrite(f);write(‘Kolichestvo poezdov:‘); {вводим данные в файл}readln(n);for i:=1 to n do begin writeln(‘Poezd ‘,i); write(‘Nomer poezda: ‘);readln(sp[i].nom); write(‘Stancia naznachenia: ‘);readln(sp[i].stn); write(‘Vremja otpravlenia: ‘);readln(sp[i].otpr);{типа 15:30} write(‘Vremja v puti: ‘);readln(sp[i].prd); write(‘Nalichie biletov: ‘);readln(sp[i].kbl); write(f,sp[i]); {собственно ввод в файл} end;close(f); {закрываем файл и открываем для чтения}reset(f);n:=0;while not eof(f) do begin n:=n+1; read(f,sp[n]); {считываем данные из файла в массив} end;close(f);writeln;write(‘Vvedite stanciu naznachenia: ‘);readln(gor);write(‘Vvedite nachalo intervala: ‘);readln(ni); {типа 12}write(‘Vvedite konec intervala: ‘);readln(ki); {типа 21}writeln;writeln(‘Vremja otpravlenia poezdov do ‘,sp[i].stn,‘ s ‘,ni,‘ do ‘,ki,‘ chasov:‘);j:=0;for i:=1 to n do begin{если название совпадает и попадаем в интервал, то выводим время отправлния и считаем количество совпадений} if (sp[i].stn=gor)and(copy(sp[i].otpr,1,pos(‘:‘,sp[i].otpr)-1)>=ni) and(copy(sp[i].otpr,1,pos(‘:‘,sp[i].otpr)-1)<=ki)then begin writeln(sp[i].otpr); j:=j+1; end; end;{если количество совпадений=0, сообщаем об этом}if j=0 then writeln(‘Takih poezdov net!‘);writeln;write(‘Vvedite nomer poezda: ‘);readln(nm);j:=0;for i:=1 to n do begin{то же самое} if sp[i].nom=nm then begin writeln(‘Kolichestvo biletov=‘,sp[i].kbl); j:=j+1; end; end;if j=0 then writeln(‘Takogo poezda net!‘);readlnend.
Форма ответа