Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
06_структуры.doc
Скачиваний:
7
Добавлен:
05.06.2015
Размер:
91.65 Кб
Скачать

Лабораторная работа № 8

Структурный тип данных на языке C++

Цель работы: получить практические навыки решения задач с использованием структурного типа данных.

Теоретические сведения

Иногда удобно иметь набор значений различного типа, с которыми можно обращаться как с одним элементом.

Рассмотрим, например, музыкальную коллекцию на компакт-дисках (CD). Такая коллекция может включать следующую информацию:

  • название CD;

  • фамилия режиссера;

  • число фильмов;

  • стоимость CD;

  • дата покупки.

Эта структура имеет пять полей. Определим тип для поля структуры:

Имя элемента

Тип данных

Название CD

Символьный массив из 25 символов

Фамилия режиссера

Символьный массив из 20 символов

Число фильмов

Целый

Стоимость CD

С плавающей точкой

Дата покупки

Символьный массив из 8 символов

Определение структурного типа

Для определения структурного типа используется ключевое слово struct:

struct имя_структурного_типа

{ описание поля1;

. . .

описание поляn;

} [одна или более переменных];

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

Пример 8.1. Структура с информацией о CD:

struct cd_info

{

char titlel[25]; // название CD

char regiss [20]; // режиссер

int num_films; // число фильмов

float price; // стоимость CD

char date_bought[8];// дата покупки

}col1,col2,col3;

Переменные структурного типа можно объявлять так же, как и переменные стандартных типов.

Пример 8.2. Cтруктура с информацией о CD:

struct cd_info

{ char titlel[25]; // название CD

char regiss [20]; // режиссер

int num_films; // число фильмов

float price; // стоимость CD

char date_bought[8]; // дата покупки

};

cd_info cd1, cd2, cd3; /*определение переменных cd1, cd2, cd3 */

При определении структурной переменной язык C++ резервирует для нее место в памяти. Если же был описан только структурный тип, а ни одной переменной данного типа определено не было, то место в памяти не выделяется.

Инициализация переменной структурного типа

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

Пример 8.3. Инициализация структуры, содержащей информацию о музыкальной коллекции на CD:

struct cd_info

{ char titlel[25]; // название CD

char regiss [20]; // режиссер

int num_films; // число фильмов

float price; // стоимость CD

char date_bought[8]; // дата покупки

};

cd_info cd={"Payback",

"Brain Helgeland",

2,

11.95,

"02.13.97"};

Значения переменным-полям присваиваются в порядке их объявления при определении структурного типа.

Доступ к значениям полей структурного типа

Доступ к значениям полей структурного типа осуществляется с помощью операции точка.

Общий вид:

Имя_переменной_структурного_типа . имя_поля

Пример 8.4.

#include <stdio.h>

struct cd_info

{ char titlel[25]; // название

char regiss [20]; // режиссер

int num_films; // число фильмов

float price; // стоимость CD

char date_bought[8]; // дата покупки

};

cd_info cd={" Payback ",

" Brain Helgeland ",

2,

11.95,

"02.13.97"};

void main()

{

// вывод содержимого переменной cd

printf("Название: %s\n",cd.titlel);

printf("Режиссер: %s\n",cd. regiss);

printf("Число фильмов: %d\n",cd. num_films);

printf("Стоимость:%5.2f\n",cd.price);

printf("Дата покупки %s\n", cd.date_bought);

}