- •Основные сведения
- •Ввод и вывод данных через потоки
- •Описание функций математического модуля math
- •Модуль random
- •Лабораторная работа №1 Выполнение программы простой структуры. Вычисление выражений с использованием стандартных функций
- •Варианты
- •Лабораторная работа №2
- •Варианты
- •Лабораторная работа №3
- •Лабораторная работа №4 Работа с одномерными массивами
- •Сортировка массивов
- •Сортировка методом пузырьков (метод простого обмена)
- •Сортировка методом вставок
- •Сортировка методом простого выбора
- •Постановка задачи
- •Варианты
- •Лабораторная работа №5
- •Постановка задачи
- •Варианты
- •Методические указания
- •Лабораторная работа №6 Динамические массивы
- •Постановка задачи
- •Варианты
- •Лабораторная работа №7
- •Постановка задачи
- •Варианты
- •Лабораторная работа №8 Хранение данных на внешних носителях
- •Определение конца файла
- •Закрытие файла, если он больше не нужен
- •Ввод/вывод данных с помощью функций унаследованных от с
- •Постановка задачи
Лабораторная работа №7
Типы данных, определяемые
пользователем
В реальных задачах информация, которую требуется обрабатывать, может иметь достаточно сложную структуру. Для ее адекватного представления используются типы данных, построенные на основе простых типов данных, массивов и указателей. Язык C++ позволяет программисту определять свои типы данных и правила работы с ними.
Для того чтобы сделать программу более ясной, можно задать типу новое имя с помощью ключевого слова typedef:
typedef тип новое_имя [ размерность ];
В данном случае квадратные скобки являются элементом синтаксиса. Размерность может отсутствовать. Примеры:
typedef unsigned int UINT:
typedef char Msg[100];
typedef struct
{
char fio[30];
int date, code;
double salary;
} Worker:
Введенное таким образом имя можно использовать таким же образом, как и имена стандартных типов:
UINT i . j : / / две переменных типа unsigned int
Msg str[10] : / / массив из 10 строк по 100 символов
Worker staff[100] : / / массив из 100 структур
Структуры (struct)
Если вашей программе требуется хранить связанную информацию разных типов, она может использовать структуру. Структура представляет собой переменную, группирующую связанные части информации, называемые элементами, типы которых могут различаться. Группируя данные в одну переменную подобным образом, вы упрощаете ваши программы, снижая количество переменных, которыми необходимо управлять, передавать в функции и т. д
В отличие от массива, все элементы которого однотипны, структура может содержать элементы разных типов.
Для определения структуры используется ключевое слово struct, за которым обычно следует имя и левая фигурная скобка. Следом за открывающей фигурной скобкой указывается тип и имя одного или нескольких элементов. За последним элементом размещается правая закрывающая фигурная скобка. На данном этапе можно (необязательно) объявить переменные данной структуры:
struct имя_типа_какое_придет_вам_в_голову {
тип_поля имя_поля;
тип_поля имя_поля;
…………………….
тип_поля имя_поля;
} [имя переменной]; После скобки } ставится точка с запятой !!!
Пример описания структуры
struct comp {
int a;
int b;
};
В данном случае определение не объявляет какие-либо переменные типа этой структуры. После того как вы определите структуру, ваша программа может объявить переменные типа этой структуры, используя имя структуры (иногда называемое структурным тэгом), как показано ниже:
comp z[10]; // создали массив из 10 пар чисел
comp x1={3,4}; // создали переменную х1, которая состоит из 2 чисел - 3 и 4
Чтобы присвоить значение элементу или обратиться к значению элемента, используйте оператор C++ точку (.).
z[0].a=1; // В самый первый элемент массива z записали числа 1 и 2
z[0].b=2;
x1.a=5; // теперь х1 вместо 3 содержит число 5
ПРИМЕР. Создали структуру из 3 полей и завели переменную koord, которая содержит координаты (x,y,z) точки в пространстве
struct {
float x,y,z;
} koord;
Структура должна быть описана до того, как будет использоваться!!! Лучше всего до описания функций, в том числе до функции main.
struct Base_D { char fio[10]; int year,ves; };
Base_D k;
cout<<"введите фамилию"; cin>>k.fio; cout<<"введите год "; cin>>k.year; cout<<"введите вес"; cin>>k.ves; |
создали новый тип Base_D, который содержит фамилию (из 10 символов), год рождения и вес человека
завели переменную k, которая хранит фамилию, год рождения и вес человека
заполняем поля структуры с клавиатуры |