Лабораторная работа 5. Составные типы данных.

Цель работы

Исследование составных (сложных) типов данных языка С++.

Задание

1.1. Перечисления

Определить перечислимый тип данных и создать переменную этого типа. Вывести значение переменной. Объяснить полученное значение.

Пример.

 

enum Animal {Cat, Dog, Tiger, Fox, Elephant};

 

Animal animal = Tiger;

 

Повторить пример, задав явную инициализацию перечислимого типа.

 

enum Animal {Cat = 100, Dog, Tiger, Fox, Elephant};

 

Определить с помощью функции sizeof () размер перечислимого типа данных.

1.2. Одномерные массивы

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

Пример .

 

float numbers[10] = {1.1, 2.2, 3.3, 4.4};

printf("Введите индекс\n");

int index;

scanf("%d", &index);

printf("%f", numbers[index]);

 

Наблюдать и обосновать значения неинициализированных элементов массива.

1.3. Многомерные массивы

Создать и инициализировать в программе глобальный двумерный массив одного из типов данных. Организовать вывод по нажатию кнопки значения некоторого элемента массива по двум индексам (задействовать два поля). Инициализировать двумерный массив двумя способами (как двумерный и как одномерный). Программный код привести в отчете.

Примеры инициализации .

 

int numbers[3][2] = {{11, 12}, {21, 22}, {31, 32}};

или

int numbers[3][2] = {11, 12, 21, 22, 31, 32};

 

1.4. Структуры

Определить сложный тип данных – структуру. Создать переменную данного типа и инициализировать ее поля. Определить с помощью функции sizeof () и обосновать размер переменной. Придумать две структуры с использованием не менее трех разных типов данных, упорядоченных по размеру типа и не упорядоченных. Привести в отчет данные о размерах разработанных структур и типов их переменных, и программный код.

Пример.

 

typedef struct { short a; long b; bool c;} DataStr;

 

DataStr data;

 

printf("%d\n", sizeof(data));

printf("%d\n", sizeof(data.a));

 

1.5. Объединения

Определить сложный тип данных – объединение. Создать переменную данного типа и инициализировать ее поля. Определить с помощью функции sizeof () и обосновать размер переменной.

Пример .

 

typedef union { short a; float b; long c;} DataStr;

 

DataStr data;

data.a = 2;

printf("%d\n", data.a);

data.b = 5.23;

printf("%d\n", data.b);

data.c = -3;

printf("%d\n", data.a);

printf("%d\n", data.b);

printf("%d\n", data.c);

 

Объяснить размер объединения и полученные результаты.

1.6. Указатели

Объявить переменную любого типа и указатель на нее. Получить данные из переменной через указатель.

Пример .

 

int a;

int *b;

printf("%d\n", a);

printf("%d\n", b);

 

С помощью отладчика исследовать переменную и указатель на нее.

1.7. Выводы

Привести в отчете в разделе «Наблюдения» полученные результаты.

Сделать и отразить в отчете выводы по исследованным возможностям языка С++.

 

2.