Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР 11 Динамические структуры данных.doc
Скачиваний:
2
Добавлен:
20.09.2019
Размер:
80.9 Кб
Скачать

Лабораторная работа № 11 Динамические структуры данных.

Цель работы – ознакомиться с возможностями использования динамической памяти для размещения переменных, получить навыки описания ссылочных переменных и их использования для обращения к динамическим переменным, освоить операции со ссылками и научиться создавать и использовать простейшие динамические структуры данных - списки.

Постановка задачи

Написать две программы согласно индивидуальному варианту.

При выполнении первого задания использовать массивы или матрицы, размещаемые в динамической памяти.

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

Варианты заданий

Вариант № 1

  1. Дана матрица размера N*M (N<=150, M<=200). В каждой строке с отрицательным элементом на главной диагонали найти наибольший из элементов.

  2. Дан файл записей, содержащий сведения об ассортименте игрушек в магазине. Структура записи: название игрушки, цена, количество, возрастные границы, например от 2 до 5 лет. Считать данные из файла в односвязный линейный список. Вывести названия игрушек, которые подходят детям от 3 до 5 лет и стоят не больше Х рублей. Получить суммарную стоимость всех имеющихся в магазине кукол.

Вариант № 2

  1. Дана матрица размера N*M (N<=150, M<=200). Отсортировать каждый столбец матрицы по возрастанию, используя метод поиска максимума (метод выбора).

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

Вариант № 3

  1. Дан одномерный динамический массив А, размер которого вводится и заранее неизвестен. Сформировать динамическую матрицу, в которой первая строка содержит элементы массива А, вторая строка – эти же элементы во второй степени, третья строка – в третьей степени и т.д. Количество строк матрицы вводится.

  2. Имеется файл записей, содержащий сведения о наличии билетов на рейсы Аэрофлота. Структура записи: номер рейса, пункт назначения, время вылета, цена билета, количество свободных мест в салоне. Считать данные из файла в односвязный линейный список. Произвести корректировку данных в списке при продаже билетов, исходные данные – номер рейса и количество проданных билетов. Получить сведения о рейсах в определенный город, на которые имеются непроданные билеты.

Вариант № 4

  1. Дана матрица размера N*M (N<=200, M<=160). Найти в ней количество элементов, превышающих среднее арифметическое элементов последнего столбца, и создать динамический одномерный массив из таких элементов, выделив под него строго необходимое количество памяти.

  2. Бинарный файл содержит информацию о наличии семян в магазине: название растения, время (месяц) высадки, количество семян в упаковке, стоимость одной упаковки. Считать данные из файла в односвязный линейный список. Вывести названия растений, семена которых можно высаживать с марта по май. Провести корректировку цены для самых дорогих семян на новое значение.

Вариант № 5

  1. Дана динамическая матрица размера N*M (N и M вводятся). В каждом столбце матрицы найти значение элемента, наиболее близкое к среднему арифметическому элементов этого столбца.

  2. Сведения о животных зоопарка находятся в бинарном файле. Запись состоит из полей: название животного, природная зона, затраты на корм за один день. Считать данные из файла в односвязный линейный список. Какие животные степной зоны содержатся в зоопарке? Сколько надо суммарно затратить на их пропитание в течение месяца (30 дней)?

Вариант № 6

  1. Дана матрица размера N*M (N<=150, M<=200). .Элементы 1й строки циклически сдвинуть на 1 позицию вправо, 2й строки на 2 позиции, 3й строки на 3 позиции и т. д.

  2. Дан файл, содержащий сведения о поступивших в продажу автомобилях. Записи содержат следующие поля: марка автомобиля, страна производитель, год выпуска, объем двигателя, расход бензина на 100 км, цена, количество экземпляров. Считать данные из файла в односвязный линейный список. Скорректировать данные о количестве автомобилей при продаже 1 машины определенной марки (исходные данные: марка машины, производитель, год выпуска). Вывести сведения об автомобилях, произведенных в России за два последних года.

Вариант № 7

  1. Даны два динамических одномерных массива X и Y размера N. Сформировать динамическую матрицу Z размера N*3, в которой первый столбец образуют элементы массива X, второй столбец - элементы массиваY, а третий столбец заполнен средними арифметическими значениями соответствующих пар элементов из X и Y ( ).

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

Вариант № 8

  1. Дана динамическая матрица размера N*2 (N вводится). Каждая строка матрицы содержит значения координат X и Y одной точки на плоскости, матрица содержит координаты N точек. Найти координаты двух точек, наиболее удалённых друг от друга.

  2. Дан файл, содержащий сведения о химических элементах: название, символическое обозначение, массу атома, заряд ядра. Считать данные из файла в односвязный линейный список. Вывести сведения о химическом элементе по его символическому названию. Найти элемент с самой большой массой среди тех, названия которых начинаются с буквы ‘А’.

Вариант № 9

  1. Дана динамическая матрица размера N*M (N и M вводятся). В каждой строке матрицы найти среднее арифметическое чисел, расположенных между первым и последним положительными элементами строки, и заменить их найденным значением.

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

Вариант № 10

  1. Дана динамическая матрица размера N*M (N и M вводятся). Среди столбцов матрицы, содержащих только элементы в диапазоне от 0 до 10, найти столбец с максимальной суммой.

  2. В файле хранятся сведения о личной библиотеке: фамилия автора, название, издательство, год издания, тематика книги. Считать данные из файла в односвязный линейный список. Вывести названия книг, изданных в определенном издательстве за последние 5 лет. Определить, имеются ли в библиотеке книги по определённой теме.

Вариант № 11

  1. Дана матрица размера N*M (N<=160, M<=200). Найти максимальный элемент той строки матрицы, сумма элементов которой минимальна.

  2. В файле содержатся сведения о сотрудниках лаборатории: фамилия, год рождения, пол, образование (среднее, высшее), год поступления на работу. Считать данные из файла в односвязный линейный список. Найти самого старшего сотрудника среди мужчин. Вывести список молодых специалистов (до 28 лет) с высшим образованием.

Вариант № 12

  1. Дана матрица размера N*M (N<=150, M<=180). Найти в ней первую по порядку строку, содержащую наибольшее количество нулей.

  2. Имеется файл, содержащий сведения об экспортируемых товарах: наименование товара, страна-импортер и объем поставляемой партии в штуках. Считать данные из файла в односвязный линейный список. Вывести список товаров, которые экспортируются в определенную страну и общий объем экспорта в эту страну.

Вариант № 13

  1. Дана матрица размера N*M (N<=160, M<=160). Среди элементов матрицы, лежащих выше главной диагонали, найти те, которые превышают все элементы, лежащие ниже главной диагонали. Вычислить их сумму.

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

Вариант № 14

  1. Дана матрица размера N*M (N<=150, M<=200). Отсортировать матрицу, переставляя её строки таким образом, чтобы элементы второго столбца были упорядочены по возрастанию.

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

Вариант № 15

  1. Дана матрица размера N* N (N<=160). Найти скалярное произведение строки с наибольшим элементом и столбца с наименьшим элементом.

  2. В файле содержатся сведения о пациентах глазной клиники. Структура записи: фамилия пациента, пол, возраст, место проживания (город), диагноз. Считать данные из файла в односвязный линейный список. Определить количество иногородних пациентов с диагнозом Х. Вывести список пациентов пенсионного возраста.

Вариант № 16

  1. Даны матрица размера N*M (N<=150, M<=180) и массив С из М элементов. Заменить массивом С ту строку матрицы, в которой среднее арифметическое элементов наименьшее.

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

Вариант № 17

  1. Даны матрица размера N*M (N<=150, M<=180) и натуральное число K (K<=N). Выяснить, имеются ли в строке матрицы с номером K элементы, для которых сумма элементов, расположенных левее, равна сумме элементов, расположенных правее. Если такие элементы имеются, то вывести их номера и значения.

  2. В файле хранятся сведения об архитектурных памятниках: название, местоположение, тип постройки, архитектор, год постройки. Считать данные из файла в односвязный линейный список. Вывести сведения о сооружениях определенного типа (например, “собор”), построенных в 18 веке. Найти самое старое творение определённого архитектора.

Вариант № 18

  1. Сформировать динамическую матрицу размера N*N (N вводится). Заполнить её следующим образом: в центре элемент (или элементы) со значением 1, вокруг – элементы со значением 2, далее – 3, и т.д. Например, при N=5 должна получиться матрица вида:

5 4 3 4 5

4 3 2 3 4

3 2 1 2 3

4 3 2 3 4

5 4 3 4 5

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

Вариант № 19

  1. Дана динамическая матрица размера N*2 (N вводится). Она задаёт N отрезков на числовой оси. Первый элемент в каждой строке содержит начало одного отрезка, второй элемент – его конец. Определить, существует ли отрезок, являющийся пересечением всех заданных отрезков, и если да, то найти его.

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

Вариант № 20

  1. Дана динамическая матрица размера N*M (N и M вводятся). Заменить нулями элементы первой и последней строк матрицы, а также её первого и последнего столбцов, используя для этого один цикл. Вывести элементы матрицы по спирали, начиная с центра, по часовой стрелке

  2. Дан файл, содержащий сведения о вступительных экзаменах в ВУЗ по результатам ЕГЭ по математике, русскому языку и английскому языку и дополнительному испытанию по профильному предмету: фамилия, баллы по предметам. Известна проходная сумма баллов. Считать данные из файла в односвязный линейный список. Вывести список абитуриентов, имеющих наибольшую сумму баллов по результатам ЕГЭ и дополнительному испытанию, и процент абитуриентов, не выдержавших конкурса.

Вариант № 21

  1. Дана динамическая матрица размера N*M (N и M вводятся). Вывести элементы матрицы в порядке их следования по диагоналям матрицы, параллельным главной диагонали, начиная с левого нижнего угла до правого верхнего угла. Найти, на какой диагонали сумма элементов максимальна.

  2. Даны два файла, содержащих сведения о нападающих для каждой из хоккейных команд: ”ЦСК” и “Динамо” соответственно: фамилии нападающих, число заброшенных ими шайб, сделанных голевых передач, заработанное штрафное время. Считать данные из файлов в односвязные линейные списки. Найти лучшего игрока обеих команд (фамилию нападающего, команду, сумму очков (голы + передачи)). Вывести фамилии и показатели результативности для игроков, не имеющих штрафного времени.

Вариант № 22

  1. Дана динамическая матрица размера N*M (N и M вводятся). Выяснить, какие из строк матрицы образуют арифметическую прогрессию. Для каждой такой строки вывести первый член прогрессии и её разность.

  2. Имеется 2 файла: первый содержит сведения о собранных сотрудниками цеха изделиях (фамилия сборщика, тип и количество собранных им изделий); второй - о расценках сборочных работ (тип изделия, стоимость сборки 1 изделия). Считать данные из файлов в односвязные линейные списки. Определить стоимость работ, выполненных сборщиком Х.