Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы / C++ / C++ / 06_структуры_a5.doc
Скачиваний:
40
Добавлен:
17.04.2013
Размер:
89.09 Кб
Скачать

Лабораторная работа № 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);

}

Соседние файлы в папке C++