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