Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методические материалы по программированию.doc
Скачиваний:
17
Добавлен:
03.11.2018
Размер:
635.9 Кб
Скачать

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.

Задания для самостоятельного выполнения по теме «Работа со сложными структурами данных»

  1. Задан массив Н сведений о заработной плате служащих, массив имеет следующую структуру: имя служащего, общее количество проработанных часов, зарплата, размер налога. Выдать ведомость выдачи зарплаты за вычетом налога, массив рассортировать по алфавиту.

  2. Задан массив С сведений о служащих некоторой фирмы. Массив имеет следующую структуру: имя служащего, номер служащего, дата рождения, дата найма. Определить список служащих, проработавших в фирме более пяти лет, рассортировать список по уменьшению даты рождения.

  3. Задан массив С (см. задачу 2). Определить, кто из служащих нанят на работу в текущем году, список таких служащих рассортировать по возрасту.

  4. Задан массив С, содержащий информацию о игроках футбольной команды. Структура массива: номер игрока, фамилия, имя, дата рождения, количество забитых мячей. Определить список десяти лучших игроков, рассортированный по дате рождения.

  5. Задан массив С (см. задачу 4). Определить список игроков, забивших менее 3 мячей, рассортированный по алфавиту.

  6. Массив К содержит информацию о спортсменах. Структура массива: Фамилия, имя, спортклуб, год вступления. Выдать список спортсменов, состоящих в заданном спортивном клубе, рассортированный в порядке увеличения года вступления.

  7. Задан массив А сведений о сдаче экзаменов некоторой группой 25 человек, массив имеет следующую структуру: шифр студента, экзаменационная оценка. Определить средний балл группы по данному экзамену и выдать список студентов, получивших хорошие и отличные оценки, в по­рядке возрастания их шифров.

  8. Задан массив В сведений о проживающих в гостинице, массив имеет следующую структуру: номер комнаты, цель приезда, возраст, номер в книге регистрации. Определить средний возраст лиц, приехавших в командировку, и получить описок, приехавших на отдых, рассортированный в поряд­ке возрастания номеров по книге регистрации.

  9. Задан массив С сведений о рабочих цеха со следующей струк­турой: табельный номер, разряд, возраст. Определить средний возраст работающих в цехе и получить опи­сок рабочих, имеющих 4 разряд, рассортированный по воз­растанию табельных номеров.

  10. Задан массив, имеющий следующую структуру: день (число, месяц), температура воздуха. Определить минимальную, максимальную и среднюю температуру воздуха, дату максимальной температуры. Минимум и максимум темпе­ратуры найти методом сортировки массива по возрастанию.

  11. Задан массив К, представляющий результаты сдачи вступитель­ных экзаменов, со следующей структурой: шифр абитуриента, средний балл по аттестату, 1-я оценка, 2-я оценка, 3-я оценка, 4-я оценка. Рассортировать массив по убыванию общего балла.

  12. Массив Н представляет собой сведения о выпускниках университета и имеет структуру: шифр студента, средний балл учебных оценок, средний балл за общественную работу. Составить описок выпускников, рассортированный по убыванию общего балла.

  13. Массив К сведений об абитуриентах, сдавших вступительные экзамены, имеет структуру: шифр абитуриента, общий балл по экзаменам, признак наличия стажа работы. Составить список абитуриентов, имеющих стаж, в порядке убы­вания их балла.

  14. Массив М сведений о наличии учебников в библиотеке имеет следующую структуру: шифр книги, количество экземпля­ров, год издания. Определить процент книг с определенным годом издания и рас­сортировать список таких книг по возрастанию шифра.

  15. Массив Р сведений о сдаче сессии учебной группой имеет следующую структуру: шифр студента, количество положи­тельных оценок, количество неудовлетворительных оценок, сумма баллов по всем экзаменам. Определить процент успеваемости в группе и упорядочить список группы в соответствии с результатами сессии.

  16. Результаты отборочных соревнований по одному из видов спорта занесены в массив Р, имеющий следующую структуру: шифр спортсмена, балл за упражнение 1, балл за упражнение 2, балл за упражнение 3. Требуется распределить места между спортсменами и упорядочить их список в соответствии с этим распределением.

  17. 3адан массив С - план поставок продукции, структура массива: шифр потребителя, шифр изделия, дата поставки, количество к поставке. Определить количество продукции, которое должно быть постав­лено в заданный день. Массив шифров такой продукции рассортиро­вать по возрастанию шифра потребителя.

  18. К - массив данных о студентах, принявших участие в сорев­нованиях, имеет следующую структуру: шифр студента: год поступления, специальность, порядковый номер, количество набранных очков. Рассортировать массив по годам поступления, выяснить, сколь­ко студентов определенной специальности участвовало в соревнова­ниях, и подсчитать сумму очков, набранных студентами этой специа­льности.

  19. Массив Т-план отгрузки продукции, имеет следующую струк­туру: шифр потребителя, шифр изделия, вид транспорта, количество, дата отгрузки. Определить сколько продукции будет перевезено железнодорож­ным транспортом за плановый период. Рассортировать список потре­бителей по возрастанию их шифров.

  20. Задан массив Н сведений о сдаче экзаменов студентами некоторой специальности университета. Массив имеет следующую структуру: шифр группы: год поступления, порядковый номер; количество отличных оценок, количество хороших оценок, количество удовлетворительных оценок, количество неудовлетворительных оценок. Определить процент успеваемости, составить список групп, име­ющих 100-процентную успеваемость, рассортировав группы по годам поступления.

  21. Задан массив Н (см. задачу 20). Определить процент хороших и отличных оценок к общему их числу, составить список групп, в которых есть неудовлетворительные оценки. Рассортировать этот список по возрастанию количества неудовлетворительных оценок.

  22. Задан массив Н (см. задачу 20). Определить процент отличных оценок к общему их числу. Составить список групп, в которых количество отличных и хороших оценок превышает 50% и рассорти­ровать массив по убыванию количества отличных оценок.