Лабораторная работа № 6
Структурный тип данных на языке C++
Цель работы: получить практические навыки решения задач с использованием структурного типа данных.
Теоретические сведения
Иногда удобно иметь набор значений различного типа, с которыми можно обращаться как с одним элементом.
Рассмотрим, например, музыкальную коллекцию на компакт-дисках (CD). Такая коллекция может включать следующую информацию:
название CD;
имя исполнителя;
число песен;
стоимость CD;
дату покупки.
Эта структура имеет пять полей. Определим тип для поля структуры:
Имя элемента |
Тип данных |
Название CD |
Символьный массив из 25 символов |
Имя исполнителя |
Символьный массив из 20 символов |
Число песен |
Целый |
Стоимость CD |
С плавающей точкой |
Дата покупки |
Символьный массив из 8 символов |
Определение структурного типа
Для определения структурного типа используется ключевое слово struct:
struct имя_структурного_типа
{ описание поля1;
. . .
описание поляn;
} [одна или более переменных];
Поле описывается как переменная стандартного типа или типа, определенного пользователем.
Пример 6.1.Структура с информацией о CD:
struct cd_info
{
char titlel[25]; // названиеCD
char artist[20]; // исполнитель
int num_songs; // числопесен
float price; // стоимостьCD
char date_bought[8];// датапокупки
}col1,col2,col3;
Переменные структурного типа можно объявлять так же, как и переменные стандартных типов.
Пример 6.2. Cтруктура с информацией о CD:
struct cd_info
{ char titlel[25]; // названиеCD
char artist[20]; // исполнитель
int num_songs; // числопесен
float price; // стоимостьCD
char date_bought[8]; // датапокупки
};
cd_info cd1, cd2, cd3; /*определение переменных cd1, cd2, cd3 */
При определении структурной переменной язык C++ резервирует для нее место в памяти. Если же был описан только структурный тип, а ни одной переменной данного типа определено не было, то место в памяти не выделяется.
Инициализация переменной структурного типа
Переменную структурного типа можно инициализировать одновременно с объявлением. Инициализация переменной структурного типа производится, если после имени типа следуют знак "=" и список значений полей структурного типа в фигурных скобках разделенные запятой.
Пример 6.3.Инициализация структуры, содержащей информацию о музыкальной коллекции на CD:
struct cd_info
{ char titlel[25]; // названиеCD
char artist[20]; // исполнитель
int num_songs; // числопесен
float price; // стоимостьCD
char date_bought[8]; // датапокупки
};
cd_info cd={"Red Moon Men",
"Sam and the Snuds",
12,
11.95,
"02.13.97"};
Значения переменным-полям присваиваются в порядке их объявления при определении структурного типа.
Доступ к значениям полей структурного типа
Доступ к значениям полей структурного типа осуществляется с помощью операции точка.
Общий вид:
Имя_переменной_структурного_типа . имя_поля
Пример 6.4.
#include <stdio.h>
struct cd_info
{ char titlel[25]; // название
char artist[20]; // исполнитель
int num_songs; // числопесен
float price; // стоимость
char date_bought[8]; // датапокупки
};
cd_info cd={"Red Moon Men",
"Sam and the Snuds",
12,
11.95,
"02.13.97"};
void main()
{
// вывод содержимого переменной cd
printf("Название: %s\n",cd.titlel);
printf("Исполнитель: %s\n",cd.artist);
printf("Количество песен: %d\n",cd.num_songs);
printf("Стоимость:%5.2f\n",cd.price);
printf("Датапокупки%s\n", cd.date_bought);
}