Лабораторная работа №13
КОМПЛЕКСНАЯ ЗАДАЧА
Цель работы
1.
Научится разрабатывать алгоритмы решения задач со
сложной структурой (комплексных задач);
2.
Отработать навыки по написанию программ на языке Turbo
Pascal.
Пример выполнения работы
Задача:
Создать
типизированный файл, содержащий данные о билетах, купленных на один поезд
(фамилия и инициалы пассажира, номер вагона, тип вагона, место, стоимость
билета). При вводе данных обеспечить проверку:
·
фамилия и инициалы – русские буквы, пробел,
точка и знак дефиса;
·
номер вагона – целое число от 1 до 25;
·
тип вагона – символ «п», «к» или «о»
(плацкартный, купейный или общий);
·
место – целое число от 1 до 81;
·
стоимость билета – дробное число, не меньшее
100.
Переписать в текстовый файл и вывести
на экран данные обо всех пассажирах, купивших билеты в плацкартный вагон, а так
же подсчитать среднюю стоимость билета.
Примерный текст программы:
program
Passajir;
type
Bilety = record
fio, typ_v: string;
N_v,
mesto: byte;
stoim:
real;
end;
var
bilet: bylety;
fbilet:
file of bilety;
ftext:
text;
n:
byte;
S:
real;
otvet:
string;
procedure
prov_fio (vopros:
string; var f: string);
var
j:
integer;
fl:
boolean
begin
repeat
fl:=True;
writeln(vopros);
readln(f);
for j:=1 to length(f) do
if not( f[j] in ['А'..'п','р'..'я',’-‘,’.’,’
‘]) then fl:=false;
if
not(fl) then
writeln(‘Недопустимый
ввод!’);
until fl;
end;
procedure prov_tip (vopros: string; var t: char);
var
fl: boolean;
begin
repeat
fl:=false;
writeln(vopros);
readln(t);
if
(t=’к’) or (t=’п’) or
(t=’о’) then fl:=true
else
writeln(‘Недопустимый
ввод!’);
until
fl;
end;
procedure prov_nom (vopros: string; var
nom: byte);
var
st: string;
cod:
integer;
begin
repeat
writeln(vopros);
readln(st);
val(st,nom,cod);
if
cod=0 then
if
(nom<1) or (nom>25)
then cod:=1;
if cod<>0 then
writeln(‘Требуется ввести целое число
от 1 до 25!’);
until cod=0;
end;
procedure prov_mesto (vopros: string; var
m: byte);
var
st: string;
cod:
integer;
begin
repeat
writeln(vopros);
readln(st);
val(st,m,cod);
if
cod=0 then
if
(m<1) or (m>81)
then cod:=1;
if cod<>0 then
writeln(‘Требуется ввести целое число
от 1 до 81!’);
until cod=0;
end;
procedure prov_stoim (vopros: string; var
s: real);
var
st:
string;
cod:
integer;
begin
repeat
writeln(vopros);
readln(st);
val(st,s,cod);
if
cod=0 then
if
(s<100) then cod:=1;
if cod<>0 then writeln(‘Требуется
ввести действительное
число, не меньшее 100!’);
until
cod=0;
end;
begin
assign(fbilet,’bilet.dat’);
assign(ftext,’bilet.txt’);
rewrite(fbilet);
n:=0; S:=0;
writeln(‘Введите данные о купленных билетах’);
repeat
n:=n+1;
with
bilet do
begin
prov_fio(‘Введите фамилию и инициалы
пассажира:’,fio);
prov_tip(‘Введите тип вагона:’,tip_v);
prov_nom(‘Введите номер вагона:’,N_v);
prov_mesto(‘Введите место:’,mesto);
prov_stoim(‘Введите стоимость билета’,stoim);
S:=S+stoim;
end;
write(fbilet,bilet);
write(‘Продолжить ввод? (Д/Н) ‘);
readln(otvet);
until
(otvet=’Н’) or (otvet=’н’);
close(fbilet);
S:=S/n;
writeln(‘Средняя стоимость билета
составляет ‘,S:5:2,’ руб.’);
writeln(‘Данные о пассажирах, купивших билеты в плацкартный
вагон:');
reset(fbilet);
rewrite(ftext);
while
not(eof(fbilet)) do
begin
read(fbilet,bilet);
with
bilet do
if tip_v = ’п’ then
begin
write(ftext,fio,’
‘,tip_v,’ ‘,N_v,’ ‘,mesto,
’ ‘,stoim);
writeln(fam,’
‘,tip_v,’ ‘,N_v,’ ‘,mesto,
’ ‘,stoim:5:2);
end;
end;
close(fbilet);
close(ftext);
readln;
end.
Порядок выполнения работы
1.
Разработать алгоритм и написать программу согласно
своему варианту задания;
2.
Проверить правильность работы программы, запустив
ее на выполнение несколько раз и вводя разные данные;
3.
Показать работающую программу преподавателю и
получить зачет по работе.
Варианты задания
1.
Создать типизированный файл, содержащий данные об
автомобилях, выставленных на продажу в автосалоне (марка, цвет, год выпуска,
объем двигателя в литрах, стоимость в долларах США). При вводе данных
обеспечить проверку:
·
марка – русские и латинские буквы, цифры, пробел
и знак дефиса;
·
цвет – русские буквы, пробел и знак дефиса;
·
год выпуска – целое число от 1960 до 2004;
·
объем двигателя – дробное число от 1 до
6;
·
стоимость – дробное число, не меньшее 1500.
Переписать в текстовый файл и вывести на экран
данные обо всех автомобилях с ценой выше среднего и объемом двигателя не
меньшим 2,5 литра.
2.
Создать типизированный файл, содержащий данные о
туристических поездках (место отдыха, дата отправления – день, месяц и год,
стоимость путевки в долларах США). При вводе данных обеспечить проверку:
·
место отдыха – русские буквы, пробел и знак
дефиса;
·
день – целое число от 1 до 31;
·
месяц – целое число от 1 до 12;
·
год – целое число, не меньшее 2004;
·
стоимость путевки – дробное число, не меньшее
150.
Переписать в текстовый файл и вывести на экран данные обо
всех туристических поездках, приходящихся на июнь и июль 2004 года, а так же
высчитать среднюю арифметическую стоимость путевок.
3.
Создать типизированный файл, содержащий данные о
видах телевизоров, поступивших в продажу в магазин бытовой техники
(фирма-изготовитель, размер диагонали экрана в сантиметрах, вес в килограммах,
цвет корпуса, стоимость в рублях). При вводе данных обеспечить проверку:
·
фирма-изготовитель – русские и латинские буквы,
пробел и знак дефиса;
·
размер диагонали экрана – целое число, не
меньшее 30;
·
вес – дробное число, не меньшее 1;
·
цвет корпуса – русские буквы, пробел и знак
дефиса;
·
стоимость – дробное число, не меньшее 3000.
Переписать в текстовый файл и вывести на экран
данные обо всех телевизорах с ценой ниже среднего и размером диагонали экрана
не меньше 50 см.
4.
Создать типизированный файл, содержащий данные о
новорожденных и их матерях (фамилия и инициалы матери, возраст матери, пол
ребенка, его вес в килограммах и рост в сантиметрах). При вводе данных
обеспечить проверку:
·
фамилия и инициалы матери – русские буквы,
пробел, точка и знак дефиса;
·
возраст матери – целое число от 16 до 40;
·
пол ребенка – символ “м” или “ж”;
·
рост ребенка – целое число, не меньшее 45;
·
вес ребенка – дробное число, не меньшее 2,5;
Переписать в
текстовый файл и вывести на экран данные обо всех девочках с весом ниже
среднего.
5.
Создать типизированный файл, содержащий данные об
участниках областной олимпиады по математике среди школьников (фамилия и
инициалы, год рождения, город, набранный балл, занятое место). При вводе данных
обеспечить проверку:
·
фамилия и инициалы – русские буквы, точка,
пробел и знак дефиса;
·
год рождения – целое число, не меньшее 1985;
·
город – русские буквы, пробел и знак дефиса;
·
занятое место – целое число от 1 до 25;
·
набранный балл – дробное положительное число;
Переписать в текстовый файл и вывести на экран
данные обо всех участниках олимпиады, занявших одно из первых пяти мест, а так
же подсчитать средний набранный балл.
6. Создать типизированный файл, содержащий данные о вкладчиках банка
(фамилия и инициалы, сумма на счете в рублях, дата последней операции – день,
месяц и год). При вводе данных обеспечить проверку:
·
фамилия и инициалы – русские буквы, пробел,
точка и знак дефиса;
·
сумма на счете – дробное положительное число;
·
число – целое число от 1 до 31;
·
месяц – целое число от 1 до 12;
·
год – целое число, не меньшее 1990.
Переписать в текстовый файл и вывести на экран
данные обо всех вкладчиках, совершавших операции по вкладу в сентябре и октябре
2003 года, а так же подсчитать среднее значение суммы, хранящейся на счете.
7. Создать типизированный файл, содержащий данные о квартирах,
предлагаемых на продажу риэлторами (количество комнат, адрес – улица, дом и
квартира, стоимость в долларах США). При вводе данных обеспечить проверку:
·
количество комнат – целое число от 1 до 6;
·
улица – русские буквы, пробел, знак дефиса и
цифры;
·
дом – цифры, буквы и знак дроби (например: 4а
или 2/5);
·
квартира – целое число, не меньшее единицы;
·
стоимость – дробное число, не меньшее 1000;
Переписать в текстовый файл и вывести на экран
данные обо всех двух- и трехкомнатных квартирах, а так же подсчитать среднюю
стоимость квартиры.
8. Создать типизированный файл, содержащий данные о поездах,
отправляющихся с одной станции в течение суток (пункт назначения, время отправления
– часы и минуты, категория поезда, время в пути в часах). При вводе данных
обеспечить проверку:
·
пункт назначения – русские буквы, пробел и знак
дефиса;
·
часы – целое число от 0 до 23;
·
минуты – целое число от 0 до 59;
·
категория поезда – символ «п» или «с»
(пассажирский или скорый);
·
время в пути – дробное число, не меньшее 10.
Переписать в текстовый файл и вывести на экран
данные обо всех пассажирских поездах, отправляющихся после двух часов дня, для
которых значение времени в пути – больше среднего.
9. Создать типизированный файл, содержащий данные о магазинах, закупающих
продукцию на одном оптовом складе (название магазина, фамилия и инициалы
владельца, адрес магазина – улица и дом, сумма последней сделки в рублях). При
вводе данных обеспечить проверку:
·
название магазина – русские буквы, кавычки,
пробел и знак дефиса;
·
фамилия и инициалы – русские буквы, пробел,
точка и знак дефиса;
·
улица – русские буквы, пробел, знак дефиса и
цифры;
·
дом – цифры, буквы и знак дроби (например: 4а
или 2/5);
·
сумма сделки – дробное число, не меньшее 1000.
Переписать в текстовый файл и вывести на экран
данные обо всех магазинах, совершивших сделку на сумму ниже среднего, но не
меньшую 1200 рублей.
10. Создать типизированный файл, содержащий данные о дипломных работах,
подлежащих защите (ФИО студента (одно поле), фамилия и инициалы научного
руководителя, тема дипломной работы, количество страниц в работе,
рекомендуемая оценка). При вводе данных обеспечить проверку:
·
ФИО – русские буквы, пробел и знак дефиса;
·
фамилия и инициалы – русские буквы, точка,
пробел и знак дефиса;
·
тема дипломной работы – русские и латинские
буквы, пробел, знак дефиса, точка и кавычки;
·
количество страниц в работе – целое число, не
меньшее 200;
·
оценка – целое число от 2 до 5.
Переписать в текстовый файл и вывести на экран
данные обо всех дипломных работах с рекомендуемой оценкой «4» и «5» и
количеством страниц больше среднего.
Контрольные вопросы
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.