Цель: отработка
практических навыков по составлению программ с записями.
Оборудование:
компьютер, Среда Турбо-паскаль.
Ход работы.
Упражнение 1.
Выполнить в тетради для практических работ:
Имеется описание:
type
family=record
glavafamily: string[15];
vosrast1:18..100;
supruga:
string[10];
vosrast2:18..100;
dety: string[5];
end;
var
a,b:family;
Занести исходную информацию в переменную A, без использования
оператора присоединения и продублировать ее в переменную B.
Решение.
program pr1;
type
family=record
glavafamily: string[15];
vosrast1:18..100;
supruga:
string[10];
vosrast2:18..100;
dety: string[5];
end;
var
a,b:family;
begin
a.glavafamily:='Петров А.В.
';
a.vosrast1:=65;
a.supruga:='Галина
';
a.vosrast2:50;
a.dety:='дочь ';
b:=a;
end.
Упражнение № 2. Выполнить в тетради для практических работ:
Определить запись, включающую в себя следующую информацию:
название завода
изготовителя;
название завода поставщика сырья;
номер
магазина-потребителя;
названия производимых товаров, 50 наименований;
цена
каждого товара за 1 штуку в рублях и копейках;
количество каждого товара в
штуках.
Все наименования содержат не более 15 символов.
Решение.
program zapis;
const
maxn=30;
type magasin = record
zavod1: string[15];
zavod2:
string[15];
numer:integer;
Proizv : record
tovar: array [1..50] of
string;
zeva: array [1..50] of real;
kol: array[1..50] of
integer;
end;
end;
inform = array [1..maxn] of magazin;
var a:
inform;
begin
end.
Задача №3. Дана ведомость учащихся, занимающихся в кружке по программированию:
Алешина Елена 5
Ковалев
Иван 5
Андрианов Глеб 4
Поддубный Игорь 4
Павликова Юля 5
Кемарская Ира 5
Агафонов Стас 5
Антонова Оля 5
Определить количество учащихся, занимающихся в кружке на 5, число учащихся с фамилией, начинающейся на букву "А".
Решение. (Файл z4.pas)
program ttt4;
const
m=15;
type t=record
fam:packed array[1..m] of
char;
bal:integer
end;
var
spisok:t;
sum1,sum2,n,i,k:integer;
begin
sum1:=0;sum2:=0;
writeln('Введите число
учащихся');
readln(n);
writeln('Введите таблицу:
фамилия,имя,оценка');
for i:=1 to n do
begin
for k:=1 to m
do
read(spisok.fam[k]);
read(spisok.bal);readln;
if spisok.bal=5 then
sum1:=sum1+1;
if spisok.fam[1]='А' then sum2:=sum2+1;
end
;
writeln('количество учащихся, ','занимающихся на 5=',
sum1:3);
writeln('число учащихся',' c фамилией на букву
А=',sum2:3);
end.
Задача №4. Написать программу, которая вводит в режиме запросов заданное число записей вида:
Телевизор | ||||||
Название |
Цена
|
Диагональ |
Цветной или ч/б |
Производитель | ||
Город |
Завод
|
Фамилия директора |
Запрос выводится с новой строки для каждого поля. Например:
Телевизор 1
Название .
. . . . . РЕКОРД
Цена (тыс.). . . . . . 3000
Диагональ . . . . . . 59
Изображение (ц/ч). . . Ц
Производитель. . . . .
Завод . . . . . . .
Фотон
Город . . . . . . . Москва
Директор. . . . . . Иванов
После ввода массива записей программа осуществляет в нем поиск следующей информации:
Решение задачи( файл pr-zapis.pas)
program zapis;
const
maxn = 30;
type TV = record
Name : string[20];
Price : 1 ..
32000;
Diagonal : 1 .. 50;
Color : char;
Proizv : record
city :
string[25];
factory : string[50];
director :
string[30];
end;
end;
tele = array [1..maxn] of TV;
var t : tele;
i,n :
integer;
was : boolean;
procedure make_array (var n:integer; var t:
tele);
begin
writeln (' Ввод массива записей ');
repeat
writeln
('Введите количество элементов n <= ',maxn);
readln (n);
until
(n>=0) and (n<=maxn) ;
writeln (' Вводите массив ');
for i:=1 to n
do
begin
writeln (' Телевизор ',i);
write (' Название . . . . .
.');readln(t[i].Name);
write (' Цена (тыс.). . . . .
.');readln(t[i].Price);
write (' Диагональ . . . . .
.');readln(t[i].Diagonal);
write (' Изображение (ц/ч). .
.');readln(t[i].Color);
writeln (' Производитель. . . . . ');
with
t[i].Proizv do
begin
write (' Завод . . . . . . .');readln(city);
write
(' Город . . . . . . .');readln(factory);
write (' Директор. . . . .
.');readln(director);
end;
end;
end;
begin
make_array(n,t); {ввод
массива записей}
was:=false; {признак того, что искомые телевизоры
найдены}
writeln('Названия телевизоров стоимостью менее 2000
тыс.руб.');
for i:=1 to n do
if t[i].price < 2000
then
begin
writeln (t[i].name);
was:=true;
end;
if was=false
then
writeln ('Не найдены');
end.