Практическое занятие № 7

ТЕМА: Создание программ по обработке записей

ЦЕЛЬ РАБОТЫ: получить практические навыки по описанию и обработке записей в программах на TURBO PASCAL

 

Ход работы

1. Объект книга описывается следующими свойствами: шифр, автор, название, издательство, год издания. Описать массив их N книг (количество книг в массиве ввести с клавиатуры);

2. Составить программу, выполняющую следующие функции:

2.1. Организовать ввод информации о книгах;

2.2. Подсчитать, сколько книг издано в заданном году и выводит на экран автора, название и издательство;

2.3. Вывести на экран название самых новых книг (максимальный год издания). Если таких книг несколько, то вывести все;

2.4. Вывести на экран названия книг с заданным автором. Поиск выполнять по любым первым символам;

3. Привести текст программы

 

Выполнение задания

{Подключаем модуль для работы с экраном}

uses crt;

{Описываем пользовательский тип Запись}

type kniga=record

     shif:integer;

     avtor:string[15];

     nazv:string[15];

     izdat:string[15];

     year:integer;

     end;

{Описываем пользовательский тип Массив записей}

     knigi=array [1..20] of kniga;

{Описываем необходимые переменные}

var bib:knigi;

    kol,n,god,i,max:integer;

    avt:string[15];

begin

     {Очищаем экран}

     clrscr;

    

     {====================================}

     {Решаем задание 2.1}

     {Вводим количество книг для обработки}

     write ('Введите количество книг: ');

     readln (n);

     writeln('Введите данные о');    

     {В цикле вводим данные о книгах}

     for i:=1 to n do

     begin

          writeln (i,'-й книге:');

          write ('- шифр '); readln(bib[i].shif);

          write ('- автор '); readln(bib[i].avtor);

          write ('- название '); readln(bib[i].nazv);

          write ('- издательтво ');readln(bib[i].izdat);

          write ('- год издания ');readln(bib[i].year);

     end;

     writeln;

 

     {====================================}

     {Решаем задание 2.2}

     {Вводим год издания книги для поиска}

     write ('Введите год издания: ');

     readln (god);

     {В начале количество таких книг 0}

     kol:=0;

     {Выводим шапку для списка книг}

     writeln('Автор           Название        Издательство    ');

     for i:=1 to n do

         {если год издания книги равен введеному}

         if year=god then

         begin

             {то количество увеличивается}

             kol:=kol+1;

             {данные о книге выводятся на экран}

             writeln (bib[i].avtor:16,bib[i].nazv:16,bib[i].izdat:16);

         end;

     {Выводим найденное количество книг}

     writeln ('Количество книг изданных в ',god,' году= ',kol);

     writeln;

 

     {====================================}

     {Решаем задание 2.3}

     {Находим самые новые книги (максимальный год издания)}

     writeln ('Самая новая книга');

     {В начале считаем, что самая новая первая книга}

     max:=bib[1].year;

     for i:=2 to n do

         {Если год издания книги больше максимального}

         if bib[i].year>max then

             {то он записывается как максимальный}

             max:=bib[i].year;

 

     {Выводим на экран книги  с годом издания равным максимальному}

     for i:=1 to n do

         {Если год издания книги равен найденному максимальному}

         if bib[i].year=max then

             {то на экран выдается название данной книги}

             writeln (bib[i].nazv);

     writeln;

 

   

     {====================================}

     {Решаем задание 2.4}

     {Вводим автора для поиска нужных книг}

     write ('Введите автора: ');

     readln (avt);

     writeln('Список книг заданного автора');

     for i:=1 to n do

         {Если автор книги совпадает со введенным}

         if copy(bib[i].avtor,1,length(avt))=avt then

             {выводим на экран данные о книге}

             writeln (bib[i].avtor:16,bib[i].nazv:16);

 

     {Делаем паузу для просмотра результата}

     readln;

end.

Решить самостоятельно:

 

Пусть имеется список игрушек. Каждая игрушка описывается свойствами: название, материал изготовления, страна производитель, цена.

  1. Определить, сколько игрушек заданной страны производителя (вводится с клавиатуры) имеется в продаже. Определить их среднюю цену.

2.      Вывести список игрушек с заданным материалом изготовления и ценой ниже заданной.

3.      Сколько стоит самая дорогая игрушка? Вывести ее название, страну-производителя и цену.

4.      Вывести список игрушек с ценой выше общей средней.

  1. Определить, сколько игрушек из каждого материала изготовления находится в продаже.

 

 

Пусть имеется объект «Сотрудник», который характеризуется свойствами: Фамилия, Имя, Отчество, Количество отработанных дней (в месяц), Ставка (руб), Зарплата, Премия.

 

1.      Заполнить массив сотрудников с помощью процедуры.

Поле Количество отработанных дней заполнить случайными числами на диапазоне [a, b].

Размер зарплаты и премии для каждого сотрудника вычислить по формулам:

Зарплата = Количество отработанных дней * Ставка

Если количество отработанных дней > 20, то начисляется премия:

Премия = 1,1*(Количество отработанных дней - 20) * Ставка

 

2.      Вывод начальных данных выполнить в табличном виде с помощью процедуры.

3.      Определить наибольшую и наименьшую зарплаты (использовать две функции). Вывести список сотрудников, получающих наибольшую зарплату и список сотрудников, получающих наименьшую зарплату (2 процедуры). Учесть, что наименьшую (наибольшую) заработные платы может получать не один сотрудник.

4.      Вывести сотрудников, у которых фамилия начинается на заданную букву, и посчитать их среднюю зарплату (процедура).

5.      Посчитать количество сотрудников, получающих премию (функция).

6.      Определить суммарную премию (функция).