Вы находитесь на странице: 1из 7

Лабораторная работа №1.

Составные типы данных:


записи (структуры)

1 Цель работы
Получить практические навыки использования комбинированного типа
данных ЗАПИСЬ (СТРУКТУРА) в разработке приложений.

2 Порядок выполнения работы


Получить задание на выполнение лабораторной работы согласно
своему варианту. Разработать и отладить программу. Составить и защитить
отчет о лабораторной работе у преподавателя.

3 Содержание отчета
 наименование и цель работы;
 задание на лабораторную работу согласно варианту;
 схема алгоритма, текст программы на алгоритмическом языке;
 результаты работы программы.

4 Краткая теория

Записи (в языке C# Структуры) – это составные типы данных,


построенные с использованием других типов. Они представляют собой
объединенный общим именем набор данных различных типов. Именно тем,
что в них могут храниться данные разных типов, они и отличаются от
массивов, хранящих данные одного типа.
Отдельные данные структуры называются элементами или полями. Все
это напоминает запись в базе данных, только хранящуюся в оперативной
памяти компьютера.
Простейший вариант объявления структуры может выглядеть
следующим образом:
struct address
{
public string name;
public int number;
public string street;
public string town;
public long zip;
}
Ключевое слово struct начинает определение структуры.
Идентификатор address – обозначение, имя типа структуры. Оно
используется при объявлении переменных структур данного типа. Имена,
объявленные в фигурных скобках описания структуры – это элементы
структуры. Элементы одной и той же структуры должны иметь уникальные
имена, но две разные структуры могут содержать не конфликтующие
элементы с одинаковыми именами.
Определение address содержит пять элементов. Предполагается, что
такая структура может хранить данные о почтовом адресе. Типы данных
разные: элементы name, street и town – строки, хранящие соответственно
фамилию адресата, улицу и город, где он проживает. Элемент number целого
типа хранит номер дома, элемент zip типа long хранит сведения об индексе.
Служебное слово public перед описанием каждого поля необходимо для
того, чтобы получить доступ к полям структуры из любого места программы.
Само по себе объявление структуры не резервирует никакого
пространства в памяти; оно только создает новый тип данных, который
может использоваться для объявления переменных. Переменные структуры
объявляются так же, как переменные других типов. Строки
address addr;
address[] addrArray = new address[10];
объявляют переменную addr типа address и массив addrArray – с 10
элементами типа address.
Для доступа к элементам структуры используется операция точка (.),
которая обращается к элементу структуры по имени объекта или по ссылке
на объект. Например:
addr.name = “Иванов Иван Иванович”;
addr.number = 79;
addr.street = “Красная”;
addrArray[0].town = “Краснодар”;
MessageBox.Show(addr.name);
Элементом определяемой структуры может быть структура, тип которой
уже определен:
struct point
{
public int x;
public int y;
}
struct rect
{
public point LeftTop;
public point RightBottom;
public string color;
}
Рассмотрим «взаимоотношение» структур и функций. Функция может
возвращать структуру как результат:
struct message
{
public string name;
public int number;
}
message func1()
{
...
}
Через аппарат параметров в функцию может передаваться информация о
структуре:
void func2(message str)
{
...
}

5 Варианты заданий для самостоятельного решения


Задача
вар.
1. Создать структуру банк, которая содержит информацию о клиентах,
взявших кредит в данном банке: ФИО, номер паспорта, ИНН сумма
кредита, процент, дата оформления (число, месяц, год как вложенная
структура), срок. Создать массив таких структур и заполнить его.
Вывести на экран всех клиентов, которые взяли кредит в прошлом
месяце. Если таких нет – выдать сообщение.
2. Даны названия стран и частей света, в которых они находятся.
Определить, есть ли среди них страны, находящиеся в Африке или в
Азии. В случае положительного ответа напечатать их названия.
3. Создать структуру, хранящую информацию о покупках в интернет-
магазине: код приобретенного товара, наименование, дата (число,
месяц, год как вложенная структура), номер кредитной карты
покупателя. Создать массив таких структур и заполнить его.
Организовать поиск товара по введенному пользователем коду. Если
такого нет – выдать сообщение.
4. Известно количество очков, набранных каждой из 20 команд-
участниц первенства по футболу. Ни одна пара команд не набрала
одинаковое количество очков. Определить название команды,
ставшей чемпионом.
5. Известны данные об учениках класса: фамилии, имена, отчества,
даты рождения (год, номер месяца и число). Определить, есть ли в
классе ученики, у которых сегодня день рождения, и если да, то
напечатать их имя и фамилию.
6. Известно расписание поездов, проходящих через станцию: номер
поезда, назначение (откуда куда, например, Москва — Омск), часы и
минуты прибытия, часы и минуты отправления. По данному времени
определить, какие поезда (номер и назначение) стоят в этот момент
на станции.
7. Описать структуру, содержащую информацию о студентах группы:
фамилия, имя, отчество, дата рождения (день, месяц, год как
вложенная структура), курс, форма обучения. Создать массив таких
структур и заполнить его. По запросу пользователя вывести на экран
всех студентов контрактной формы обучения. Если таковых нет, то
выдать сообщение
8. Известен рост каждого из 25 учеников класса. Нет ни одной пары
учеников, имеющих одинаковый рост. Определить фамилии самого
высокого и самого низкого учеников класса.
9. Известна информация о багаже (количество вещей и общий вес
багажа) нескольких пассажиров.
а) Найти число пассажиров, имеющих более двух вещей.
б) Выяснить, имеется ли хоть один пассажир, багаж которого состоит
из одной вещи весом менее 25 кг.
10. Описать структуру игры, содержащую информацию об играх,
которые содержатся в вашей игротеке: название, жанр,
производитель, дата приобретения (число, месяц, год как вложенная
структура). Создать массив таких структур и заполнить его. Добавить
поле, содержащее информацию о том, была ли пройдена данная игра.
Вывести на экран все не пройденные игры.
11. Известно количество мячей, забитых и пропущенных футбольной
командой в нескольких играх.
а) Для каждой проведенной игры вывести на экран словесный
результат: "выигрыш", "ничья" или "проигрыш".
б) Определить количество выигрышей и количество проигрышей
данной команды.
12. Известны данные о сотрудниках фирмы (фамилия, зарплата и пол).
Определить:
а) фамилию мужчины, имеющего самую большую зарплату (считать,
что такой есть и он единственный);
б) фамилии мужчины и женщины, имеющих самую маленькую
зарплату (считать, что такие есть и они единственные в своей группе
сотрудников).
13. Описать структуру работник, содержащую информацию о человеке,
принимаемом на работу: фамилия, имя, отчество, дата рождения
(число, месяц, год как вложенная структура), паспорт и т. д. Описать
массив таких структур и заполнить его. Организовать поиск
работников по введенному пользователем году рождения. Если
таковых нет, то выдать сообщение
14. Известна информация о багаже (количество вещей и общий вес
багажа) нескольких пассажиров.
а) Найти число пассажиров, количество вещей которых превосходит
среднее число вещей всех пассажиров.
б) Найти номер багажа, в котором средний вес одной вещи
отличается от общего среднего веса одной вещи не более чем на 0,5
кг.
15. Описать структуру товар, которая содержит информацию о товаре,
принимаемом складом магазина: код товара, наименование,
количество, дата приема (день, месяц, год как вложенная структура),
отпускная цена и т. д.  Создать массив таких структур и заполнить
его. Организовать поиск товара по дате: по введенному
пользователем числу месяца вывести на экран все товары, принятые в
этот день. Если таковых нет, то выдать сообщение
16. Известны данные о сотрудниках фирмы: фамилия, возраст и
отношение к воинской службе (военнообязанный или нет).
Определить:
а) фамилию самого младшего по возрасту человека среди
военнообязанных (считать, что такой есть и он единственный);
б) фамилии самых старших по возрасту людей среди
военнообязанных и среди невоеннообязанных (считать, что такие
есть и они единственные в своей группе).
17. Известны количество мячей, забитых и пропущенных футбольной
командой в каждой из нескольких игр.
а) Определить количество выигрышей, количество ничьих и
количество проигрышей данной команды.
б) Определить общее число очков, набранных командой (за выигрыш
дается 3 очка, за ничью — 1, за проигрыш — 0).
18. Известно количество очков, набранных каждой из команд-участниц
первенства по футболу. Перечень очков и команд дан в порядке
занятых ими мест, т. е. в порядке убывания количества набранных
очков (ни одна пара команд-участниц не набрала одинаковое
количество очков). Выяснилось, что в перечень забыли включить еще
одну команду.
а) Определить, какое место заняла эта команда (количество
набранных ею очков известно; известно также, что она не стала
чемпионом и не заняла последнее место).
б) Вывести названия команд, набравших меньше очков, чем эта
команда.
19. Известны данные о росте юношей класса, упорядоченные по
убыванию. Нет ни одной пары учеников, имеющих одинаковый рост.
В начале учебного года в класс поступил новый ученик (известно, что
его рост не совпадает с ростом ни одного из учеников класса,
превышает рост самого низкого ученика и меньше роста самого
высокого).
а) Вывести фамилии всех учеников, рост которых меньше роста
"новенького".
б) Определить фамилию ученика, после которого следует записать
фамилию.
20. Описать структуру музыка, которая содержит информацию о
музыкальных дисках, которые продаются в магазине: название
альбома, исполнитель, жанр, год создания альбома, цена диска.
Создать массив таких структур и заполнить его. Организовать поиск
дисков по жанру исполнения: у пользователя запрашивается жанр, и
выводятся все диски, соответствующие условию. Если таковых нет,
то выдать сообщение
21. Описать структуру видео, которая содержит информацию о фильмах,
показываемых в кинотеатре: название, режиссер, жанр, главные
актеры, дата показа (месяц, год как вложенная структура). Создать
массив таких структур и заполнить его. Вывести на экран все
фильмы, которые показывались в текущем месяце. Если таковых нет,
то выдать сообщение
22. Создать структуру телефон, которая содержит информацию о
мобильных телефонах, продаваемых магазином: производитель,
модель, цвет, разрешение, размер оперативной памяти и т. п. Создать
массив таких структур и заполнить его.  Вывести на экран все
телефоны введенной пользователем модели. Определить их долю от
общего количества телефонов. Если таковых нет, то выдать
сообщение
23. Создать структуру, хранящую информацию о заказах, принимаемых
швейным ателье: номер заказа, заказчик, вид пошива, дата приема
(число, месяц, год как вложенная структура), стоимость заказа.
Создать массив таких структур и заполнить его. Вывести на экран все
заказы, принятые в прошлом месяце. Если таковых нет, то выдать
сообщение
24. Создать структуру маршрут, хранящую информацию о маршрутах
поездов ЖД вокзала: пункт отправки, пункт назначения, время
отправки, время прибытия, дни недели, по которым работает
маршрут. Создать массив таких структур и заполнить его.
Организовать поиск всех маршрутов по дням недели: пользователь
вводит день недели, а программа выводит все маршруты,
работающие в этот день.
25. Описать структуру студент, хранящую информацию о ФИО, курсе и
успеваемости (массив из пяти элементов). Создать массив таких
структур и заполнить его. Вывести на экран данные о студентах,
средний балл которых превышает общий средний балл. Если таких
нет, выдать сообщение.
26. Описать структуру, хранящую информацию о ФИО человека, дате
рождения (вложенная структура), знаке зодиака. Создать массив
таких структур и заполнить его. Вывести на экран данные о людях,
родившихся под знаком зодиака, введенным пользователем. Если
таких нет, выдать сообщение.
27. Дан массив книг: название, тип, автор, количество страниц, страна-
родина автора. Организовать поиск по автору, по типу. Вывести все
книги зарубежных авторов.
28. Рациональное число можно представить структурой с двумя полями:
числитель и знаменатель. Создать массив таких структур и заполнить
его. Разработать функцию сократить(m) приведения рационального
числа m к несократимому виду. Вызвать эту функцию для всех
элементов массива.
29. Дан массив, содержащий информацию об учениках некоторой
школы: ФИО, класс. Вывести на экран сведения об учениках только
десятых классов. Определить, на сколько человек в девятых классах
больше, чем в десятых.
30. Описать структуру «Записная книжка», содержащую поля: фамилия и
инициалы человека, номер телефона, дата рождения (день, месяц, год
как вложенная структура). Создать массив таких структур и
заполнить его. Вывести на экран информацию о людях, чьи дни
рождения приходятся на месяц, введенный пользователем. Если
таковых нет, то выдать сообщение.