Лабораторная работа. Работа со структурами и объединениями 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Лабораторная работа. Работа со структурами и объединениями



Цель: получить практические навыки работы с такими сложными типами данных в С++, как структуры и объединения.

 

Общие сведения

Структура (struct) состоит из фиксированного числа компо­нентов (элементов) разных типов. Описание типа struct имеет следующий вид:

struct имя_структуры

{

тип1 имя_элемента1;

типN имя_элементаN; }

имя_переменной_типа_структуры;

Для обращения к элементу структуры нужно указать имя пе­ременной и имя элемента структуры, разделив их точкой. К эле­менту структуры применима операция присваивания.

Объединения (union) в языке C++ отличаются от структур спо­собом хранения информации. В каждый момент времени объеди­нение хранит значение только одного элемента.Память распре­деляется для хранения наибольшего элемента объединения. Описание типа union имеет вид:

union имя_объединения

{

тип1 имя_элемента1;

типN имя_элементаN;

} имя_переменной_типа_объединения;

Обращаются к элементу объединения аналогично обращению к элементу структуры. Очевидно, что ис­пользование объединений в программах позволяет экономить память компьютера. Еще большей экономии памяти в програм­мах на языке C++ можно достичь, если использовать анонимные объединения. В анонимных объединениях нет имени, переменная объединения не объявляется:

union {

тип1 имя_элемента1;

типN имя элементаN;

};

К элементам анонимного объединения обращаются по имени (без точки), как к обычным переменным в программе.

 

Задание к лабораторной работе

Решить задачу, соответствующую варианту, выбранному по таблице 6.1. Построить блок-схему программы. Организовать ввод и вывод данных структуры (не менее 10 записей). Используя поля созданной структуры, выполнить предложенную выборку.

 

Таблица 6.1 – Варианты заданий

Вариант Задание
  Дана структура, в которой хранятся данные о полетах самолетов: название пункта назначения рейса, номер рейса, тип самолета. Вывести на экран номера рейсов и типы самолетов, вылетающих в пункт назначения, название которого совпало с названием, введенным с клавиатуры. Если таких рейсов нет, выдать не дисплей соответствующее сообщение.
  Имеются данные о работающих в фирме: фамилия, имя, отчество, адрес (улица, дом, квартира) и дата поступления на работу (месяц, год). Вывести на экран данные только тех из них, кто на сегодняшний день проработал уже не менее 5 лет.
  Имеются данные о работающих на фабрике: фамилия, имя, отчество, адрес (улица, дом, квартира) и дата поступления на работу (месяц, год). Определить, есть ли в списке человек с указанной пользователем фамилией. Если есть, то вывести его адрес.
  Имеются данные о клиентах пункта проката: фамилия, имя отчество, адрес (улица, дом, квартира) и что взял (только один предмет). Вывести на экран данные только тех из них, кто взял указанный предмет.
  Даны сведения: фамилия, имя, знак зодиака, дата рождения. Вывести информацию о людях, родившихся в месяц, название которого введено с клавиатуры. Определить, кто родился в один год.
  Имеются данные о расписании поездов: номер поезда, маршрут, время прибытия на станцию, время отправления (часы, минуты). Будем считать, что все поезда приходят каждый день. По данному времени определить, какие из поездов стоят сейчас на станции (время вводить с клавиатуры).
  Дана информация о репертуаре кинотеатров: кинотеатр; фильм; жанр; период показа; время. Вывести на экран список фильмов, показанных в одном кинотеатре.
  Дана структура данных о сотрудниках предприятия: фамилия, имя, адрес (улица, дом, квартира), отдел. Вывести фамилии сотрудников данного отдела, живущих на указанной улице.
  Дана структура, в которой хранятся сведения о товарах: название товара, название магазина, в котором продается товар, стоимость товара в тенге. Вывести на экран информацию о товаре, название которого введено с клавиатуры. Если таких товаров нет, выдать соответствующее сообщение.
  Имеются данные о студентах группы: фамилия, имя, отчество, адрес – улица, дом, квартира, домашний телефон. Вывести на экран фамилию, имя и адрес тех студентов, до кого нельзя дозвониться.
  Дана структура, в которой хранятся сведения о плательщиках и получателях: расчетный счет плательщика, имя плательщика, расчетный счет получателя, имя получателя, перечисляемая сумма. Вывести на экран информацию о сумме, снятой с расчетного счета плательщика, введенного с клавиатуры. Если такого расчетного счета нет, выдать соответствующее сообщение.
  Даны сведения о собаках, участвующих в выставке: порода; пол; кличка; возраст; владелец. Вывести на экран информацию об участниках одного возраста.
  Дана структура, в которой хранятся сведения о книгах в библиотеке: автор книги; название; издательство; год выпуска; количество. Определить, сколько книг указанного автора имеется в наличии.
  Дана структура, в которой хранятся сведения о спортсменах: ФИО; гражданство; вид спорт; клуб (команда); дата рождения. Определить, кто из спортсменов выступает за одну команду.
  Дана информация об автомобилях, имеющихся в автосалоне: модель; год выпуска; технические характеристики; техническое состояние; стоимость. Вывести на экран список автомобилей одного года выпуска.

 

6.3 Контрольные вопросы

6.3.1 Что представляет собой структура?

6.3.2 Чем отличается от структуры объединение?

6.3.3 Как описываются элементы структуры?

6.3.4 Как организуется обращение к элементам структуры и объединения?

6.3.5 Что понимается под анонимным объединением?

6.3.6 Как определить объем памяти, отводимой под структуру?

6.3.7 Сколько элементов можно хранить в структуре? В объединении?

6.3.8 Что понимается под структурным тэгом?

6.3.9 Как определяется тип структуры?

6.3.10 Что изменится, если в разработанной в лабораторной работе программе структуру заменить на объединение?

 

Лабораторная работа. Файлы и работа с ними

Цель: получить практические навыки работы с файлами в С++.

 

Общие сведения

Файл представляет собой последовательность элементов од­ного и того же типа, имеющих общее имя. Число элементов (дли­на файла) не ограничено. Файлы создаются на магнитной ленте, на магнитном диске, на других внешних устройствах, а также в оперативной памяти компьютера.

Для того чтобы программа на языке C++ могла работать с файлами, необходимо в начало программы включить заголовоч­ный файл <fstream.h>.

а) запись данных в файл воз­можна в двух режимах:

1) создание нового файла (перезапись существующего, ранее созданного файла) с помощью оператора:

ofstream имя_потока ("имя_файла.расширение");

2) добавление данных в существующий файл:

ofstream out_file ("имя_файла. расширение", ios::app);

Вывод в файл осуществляется с помощью оператора вставки (<<).

Для закрытия файла используется функция close().

б) ввод (чтение) данных из файла. Для открытия файла в режиме ввода используется оператор:

ifstream in_file("имя_файла.расширение");

Ввод из файла осуществляется с помощью оператора извлече­ния (>>).

Иногда требуется записывать в файл и читать из файла не символьные строки, а сложные типы данных, такие, как массивы и структуры. Для этих целей в C++ использу­ются функции write (запись) и read (чтение).

Задание к лабораторной работе

Решить задачу, соответствующую варианту, выбранному по таблице 7.1. Построить блок-схему программы. Организовать ввод/вывод данных с использованием файлов.

 

Таблица 7.1 – Варианты заданий

Вариант Задание
  Скопировать из одного файла в другой только указанные пользователем символы и посчитать их общее количество.
  Считать текст из файла и вывести на экран только цитаты, то есть предложения, заключенные в кавычки.
  Считать текст из файла и вывести его на экран, меняя местами каждые два соседних слова.
  Считать текст из файла и вывести на экран только предложения, состоящие из заданного количества слов.
  Считать текст из файла и вывести на экран все его предложения в обратном порядке.
  Сформировать и вывести в файл квадратную матрицу А(10,10), в которой все нулевые элементы размещены квадратами 2х2 в шахматном порядке.
  Сформировать и вывести в файл квадратную матрицу С(12,12), в которой значения элементов, размещенных на местах с четными индексами строк и столбцов, равны квадрату индекса строки.
  Сформировать и вывести в файл квадратную матрицу А(6,6), в которой значение каждого элемента определяется как сумма его индексов.
  Дан файл, в котором хранится расписание полетов: номер рейса, тип самолета, дни и время вылета рейса, название пунктов вылета-назначения рейса, время в пути. Вывести на экран расписание, отсортированное по номерам рейсов.
  Сформировать и вывести в файл квадратную матрицу В (7,7), все ненулевые элементы которой размещены в шахматном порядке, начиная с 1-го элемента 1-й строки.
  Имеются сведения о результатах сессии студентов одного факультета, которые хранятся в структуре. Вывести в файл информацию о результатах сессии студентов указанной группы.
  Имеются сведения о результатах сессии студентов одной группы, которые хранятся в файле. Вывести на экран информацию о результатах сдачи указанного экзамена.
  Дана квадратная матрица С(8,8). Транспонировать ее и вывести результат в файл.
  Дан файл, в котором через пробел записаны натуральные четырехзначные числа. Вывести на экран суммы цифр каждого числа.
  Дан файл с учебным расписанием. Вывести на экран количество лекционных, практических и лабораторных занятий по указанной дисциплине.

7.3 Контрольные вопросы

7.3.1 Что представляют собой файлы?

7.3.2 Какие типы файлов Вам известны?

7.3.3 Какие библиотечные функции применяются при работе с файлами?

7.3.4 Из каких шагов складывается работа с файлами?

7.3.5 Какие операторы используются при работе с файлами?

7.3.6 Перечислите режимы записи данных в файл?

7.3.7 Как добавить данные в файл?

7.3.8 Приведите пример чтения данных из файла.

7.3.9 Приведите пример записи массива в файл.

7.3.10 Каковы особенности записи массива в файл?

 



Поделиться:


Последнее изменение этой страницы: 2016-09-20; просмотров: 904; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.130.31 (0.011 с.)