Write(otr,' ');
ReadKey;{Задержка. Ожидание нажатия клавиши}
end.
Рис. 4. Примерный вид исходных данных и результата на экране по заданию 4
Задание 5. Алгоритмы обработки сложных структур
линейный алгоритм дисплей одномерный
Задание
Информация о движении междугороднего автобуса содержит следующие данные: название остановки, время прибытия (часы, минуты), время стоянки (минуты), стоимость проезда из начального пункта.
Написать программу, в которой:
· обеспечить ввод данных с клавиатуры и сохранение их в типизированном файле;
· организовать выборку из типизированного файла информации об остановках, стоянка на которых выше средней по маршруту, вывод данных о них на экран и сохранение в текстовом файле.
Выполнение
Алгоритм решения задачи должен содержать следующие шаги:
1) организация структуры данных для одного компьютера;
2) циклический ввод данных и сохранение их в типизированном файле;
3) завершение ввода при соответствующем подтверждении путем нажатия клавиш «Y» или «y»;
4) ввод значения средней стоянки по маршруту;
5) выборка и вывод на экран данных по остановкам, стоянка на которых выше средней по маршруту.
Структура данных о компьютере должна содержать следующие поля:
- текстовое поле – название остановки;
- поле целого числа – время прибытия (часы, минуты);
- поле целого числа – время стоянки;
- поле вещественного числа – стоимость проезда из начального пункта .
В результате работы программы в текущем каталоге будут образованы два файла: MGTS.DAT с введенными исходными данными и MGTS.TXT с результатами выборки данных, информация второго файла будет продублирована на дисплее
Программа для указанного варианта имеет следующий вид:
Program Task5;
Uses
Crt;{Подключаеммодульграфики}
type
{структура данных}
t_mgts=record
ost:string; {название остановки}
timeh,timem, min:integer; {время прибытия (часы, минуты), время стоянки}
price:real;{стоимость проезда}
end;
var
m:t_mgts;{переменная для хранения данных}
f:file of t_mgts;{файл для хранения данных}
ft:text;{файл для хранения результатов обработки}
ans:char;{переменная для подтверждения конца ввода}
zmin:real;{заданная средняя продолжительность стоянки }
begin
{создать MGTS.DAT для хранения данных}
ClrScr; {очистка экрана}
assign(f,'mgts.dat');
rewrite(f);
{начать цикл ввода данных и сохранение их в файле}
repeat
{объявить работу с записью t}
with t do
begin
{заполнение полей переменной t данными с клавиатуры}
write('Остановка?');readln(tip);
write('Времяприбытия?');read(timeh); readln(timem);
write('Времястоянки?');readln(min);
write('Стоимостьпроезда?');readln(price);
end;
{запись значений переменной t в файл MGTS.DAT}
write(f,t);
{ввести ответ на запрос об окончании набора данных}
write('Вводзакончен?');
readln(ans);
{закончить цикл ввода при положительном ответе}
until(ans='Y') or (ans='y');
{закрытьфайл MGTS.DAT}
close(f);
{ввести заданную название остановки}
write('Остановка?');readln(zmhz);
{установить файл MGTS.DAT на начало чтения}
ClrScr; {очистка экрана}
reset(f);
{создать файл MGTS.TXT для хранения результатов обработки}
assign(ft,'mgts.txt');
rewrite(ft);
{проверить достижение конца файла MGTS.DAT}
while not eof(f) do
begin
{считать очередную запись файла MGTS.DAT}
read(f,t);
{если номер остановки больше, то сохраняем запись}
if (t.zmin>m.zmin) then
m:=t;
s:=s+m.min;
{вычислить среднее время стоянки}
s:= s/n;
{создать файл mgts.txt для хранения результатов выборки}
assign(ft, 'mgts.txt');
rewrite(ft);
{установить файл mgts.dat на начало для чтения}
reset(f);
{проверить достижения конца файла mgts.dat }
while not eof(f) do
{пока не достигнут конец файла выполнять}
begin
{счтитать очередную запись файла mgts.dat }
read( f, m);
{объявить работу с переменной m}
with m do
if (m=mz) and (min*price>s) then
{если время стоянки выше средней}
begin
{вывести информацию о найденном разговоре на экран}
writeln( ost, timeh, timem, min, price);
{сохранить информацию о найденной остановке в файле mgts.txt }
writeln( ft, ost, timeh, timem, min, price);
end;
end;
{закрыть файл mgts.txt }
close( ft);
end.
1. Алексеев Е.Р., Чеснокова О.В. Турбо Паскаль 7.0. / Е.Р. Алексеев, О.В. Чеснокова. - М.: НТ Пресс, 2007. - 270 с.
2. Безручко В.Т. Компьютерный практикум по курсу «Информатика»: учебное пособие. 3-е изд., перераб. и доп. / В.Т. Безручко. - М.: Форум, 2006. - 368 с.
3. Информатика: учебник/под ред. Н.В. Макаровой. - М.: Финансы и статистика, 2005. - 768 с.
4. Фаронов В.В. Иллюстрированный самоучитель по Турбо Паскалю // http://borlpasc.narod.ru/docym/Faronov/.