ПРАКТИЧЕСКАЯ РАБОТА № 6 НА ТЕМУ: "РАБОТА С ЗАПИСЯМИ".

Цель: отработка практических навыков по составлению программ с записями.
Оборудование: компьютер, Среда Турбо-паскаль.

Ход работы.

  1. На диске a создать каталог PR6.
  2. Выбрать ход работы на "3", на "4" или на "5":

    на "3" - выполнить упражнение № 1 и решить задачу № 3.
    на "4" - выполнить упражнение № 2 и решить задачу "4".
    на "5" - решить задачу № 3 и № 4.

  3. В тетради должно быть:

    какая оценка выбрана учеником;
    распечатки программ.

    На диске - файлы в каталоге PR6 (имена произвольные, в комментариях указать номер упражнения или задачи, фамилию ученика)

Упражнение 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
Изображение (ц/ч). . . Ц
Производитель. . . . .
Завод . . . . . . . Фотон
Город . . . . . . . Москва
Директор. . . . . . Иванов

После ввода массива записей программа осуществляет в нем поиск следующей информации:

  1. Названия телевизоров с размером по диагонали больше 50 см.
  2. Фамилии директоров, производящих телевизоры стоимостью свыше 2000 тыс. руб.
  3. Названия городов, где выпускаются телевизоры стоимостью менее 1000 тыс. руб.
  4. Заводы, выпускающие телевизоры с самым большим размером экрана.
  5. Названия телевизоров с самым маленьким размером экрана.
  6. Фамилии директоров, выпускающих самые дешевые телевизоры.
  7. Города, где выпускают самые дорогие телевизоры.

Решение задачи( файл 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.

Hosted by uCoz

к оглавлению     на домашнюю