
- •230201 Информационные системы и технологии
- •1.Линейные и разветвляющиеся вычислительные процессы.
- •2. Циклический вычислительный процесс. Структура «Повторение»
- •Арифметические циклы
- •Листинг программы.
- •3. Работа с одномерными массивами.
- •4. Работа с матрицами.
- •5. Работа со сложными структурами данных
5. Работа со сложными структурами данных
Пример 5.1
Задан массив, содержащий информацию об аудиториях ВУЗа. Структура массива: номер аудитории, количество посадочных мест (максимальное количество посадочных мест – 210, минимальное - 15). Рассортировать список аудиторий по возрастанию количества посадочных мест.
Листинг программы
program Mod5;
{$APPTYPE CONSOLE}
uses
SysUtils;
const n=3; k1=15;k2=210;
{Для тестирования программы количество аудиторий – n принято равным 3}
type TZap=record
Aud:string[4];
Mest:word;
end;
m=array[1..20] of TZap;
var
mas:m;
elem:TZap;
i,j,k:byte;
{функция перекодировки ANSI– строки в ASCII- строку,
позволяет выдавать сообщения в консольном приложении на русском языке}
function Rus(mes:string):string;
var h:byte;
begin
for h:=1 to length(mes) do
case mes[h] of
'À'..'ï':mes[h]:=Chr(Ord(mes[h])-64);
'ð'..'ÿ':mes[h]:=Chr(Ord(mes[h])-16);
end;
rus:=mes;
end;
{функция для проверки попадает ли значение в заданный интервал}
function p(q,q1,q2:byte):boolean;
begin
if (q<q1) or (q>q2) then
p:=false
else p:=true;
end;
{процедура ввода}
procedure printel(var s:TZAp);
var pr:boolean;
begin
write(rus('Номер аудитории->')); readln(s.aud);
write(rus( 'Количество мест->'));
repeat
readln(s.mest);
pr:=p(s.mest,k1,k2);
until pr;
end;
{процедура вывода меню}
Procedure many;
Begin
writeln;
writeln(rus('1-Ввод'));
writeln(rus('2-Вывод'));
writeln(rus('3-Сортировка'));
writeln(rus('4-Выход'));
writeln;
end;
{процедура сортировки}
Procedure Sort;
Begin
For i:=n downto 2 do
For j:=1 to i-1 do
if mas[j].mest>mas[j+1].mest then
begin
elem:=mas[j];
mas[j]:=mas[j+1];
mas[j+1]:=elem;
end;
end;
begin
repeat
many;
Write (rus(‘Ваш выбор->'));Readln(k);
writeln;
Case k of
1: for i:=1 to n do
begin
printel(elem);
mas[i]:=elem;
end;
2: Begin
for i:=1 to n do
with mas[i] do
begin
writeln(Aud,' ',Mest);
end;
readln;
end;
3:sort;
end;
until k=4; end.
Задания для самостоятельного выполнения по теме «Работа со сложными структурами данных»
-
Задан массив Н сведений о заработной плате служащих, массив имеет следующую структуру: имя служащего, общее количество проработанных часов, зарплата, размер налога. Выдать ведомость выдачи зарплаты за вычетом налога, массив рассортировать по алфавиту.
-
Задан массив С сведений о служащих некоторой фирмы. Массив имеет следующую структуру: имя служащего, номер служащего, дата рождения, дата найма. Определить список служащих, проработавших в фирме более пяти лет, рассортировать список по уменьшению даты рождения.
-
Задан массив С (см. задачу 2). Определить, кто из служащих нанят на работу в текущем году, список таких служащих рассортировать по возрасту.
-
Задан массив С, содержащий информацию о игроках футбольной команды. Структура массива: номер игрока, фамилия, имя, дата рождения, количество забитых мячей. Определить список десяти лучших игроков, рассортированный по дате рождения.
-
Задан массив С (см. задачу 4). Определить список игроков, забивших менее 3 мячей, рассортированный по алфавиту.
-
Массив К содержит информацию о спортсменах. Структура массива: Фамилия, имя, спортклуб, год вступления. Выдать список спортсменов, состоящих в заданном спортивном клубе, рассортированный в порядке увеличения года вступления.
-
Задан массив А сведений о сдаче экзаменов некоторой группой 25 человек, массив имеет следующую структуру: шифр студента, экзаменационная оценка. Определить средний балл группы по данному экзамену и выдать список студентов, получивших хорошие и отличные оценки, в порядке возрастания их шифров.
-
Задан массив В сведений о проживающих в гостинице, массив имеет следующую структуру: номер комнаты, цель приезда, возраст, номер в книге регистрации. Определить средний возраст лиц, приехавших в командировку, и получить описок, приехавших на отдых, рассортированный в порядке возрастания номеров по книге регистрации.
-
Задан массив С сведений о рабочих цеха со следующей структурой: табельный номер, разряд, возраст. Определить средний возраст работающих в цехе и получить описок рабочих, имеющих 4 разряд, рассортированный по возрастанию табельных номеров.
-
Задан массив, имеющий следующую структуру: день (число, месяц), температура воздуха. Определить минимальную, максимальную и среднюю температуру воздуха, дату максимальной температуры. Минимум и максимум температуры найти методом сортировки массива по возрастанию.
-
Задан массив К, представляющий результаты сдачи вступительных экзаменов, со следующей структурой: шифр абитуриента, средний балл по аттестату, 1-я оценка, 2-я оценка, 3-я оценка, 4-я оценка. Рассортировать массив по убыванию общего балла.
-
Массив Н представляет собой сведения о выпускниках университета и имеет структуру: шифр студента, средний балл учебных оценок, средний балл за общественную работу. Составить описок выпускников, рассортированный по убыванию общего балла.
-
Массив К сведений об абитуриентах, сдавших вступительные экзамены, имеет структуру: шифр абитуриента, общий балл по экзаменам, признак наличия стажа работы. Составить список абитуриентов, имеющих стаж, в порядке убывания их балла.
-
Массив М сведений о наличии учебников в библиотеке имеет следующую структуру: шифр книги, количество экземпляров, год издания. Определить процент книг с определенным годом издания и рассортировать список таких книг по возрастанию шифра.
-
Массив Р сведений о сдаче сессии учебной группой имеет следующую структуру: шифр студента, количество положительных оценок, количество неудовлетворительных оценок, сумма баллов по всем экзаменам. Определить процент успеваемости в группе и упорядочить список группы в соответствии с результатами сессии.
-
Результаты отборочных соревнований по одному из видов спорта занесены в массив Р, имеющий следующую структуру: шифр спортсмена, балл за упражнение 1, балл за упражнение 2, балл за упражнение 3. Требуется распределить места между спортсменами и упорядочить их список в соответствии с этим распределением.
-
3адан массив С - план поставок продукции, структура массива: шифр потребителя, шифр изделия, дата поставки, количество к поставке. Определить количество продукции, которое должно быть поставлено в заданный день. Массив шифров такой продукции рассортировать по возрастанию шифра потребителя.
-
К - массив данных о студентах, принявших участие в соревнованиях, имеет следующую структуру: шифр студента: год поступления, специальность, порядковый номер, количество набранных очков. Рассортировать массив по годам поступления, выяснить, сколько студентов определенной специальности участвовало в соревнованиях, и подсчитать сумму очков, набранных студентами этой специальности.
-
Массив Т-план отгрузки продукции, имеет следующую структуру: шифр потребителя, шифр изделия, вид транспорта, количество, дата отгрузки. Определить сколько продукции будет перевезено железнодорожным транспортом за плановый период. Рассортировать список потребителей по возрастанию их шифров.
-
Задан массив Н сведений о сдаче экзаменов студентами некоторой специальности университета. Массив имеет следующую структуру: шифр группы: год поступления, порядковый номер; количество отличных оценок, количество хороших оценок, количество удовлетворительных оценок, количество неудовлетворительных оценок. Определить процент успеваемости, составить список групп, имеющих 100-процентную успеваемость, рассортировав группы по годам поступления.
-
Задан массив Н (см. задачу 20). Определить процент хороших и отличных оценок к общему их числу, составить список групп, в которых есть неудовлетворительные оценки. Рассортировать этот список по возрастанию количества неудовлетворительных оценок.
-
Задан массив Н (см. задачу 20). Определить процент отличных оценок к общему их числу. Составить список групп, в которых количество отличных и хороших оценок превышает 50% и рассортировать массив по убыванию количества отличных оценок.