Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Praktikum_programmirovanie / Praktikum_programmirovanie.doc
Скачиваний:
65
Добавлен:
30.03.2015
Размер:
15.88 Mб
Скачать

Лабораторная работа №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, которая хранит фамилию, год рождения и вес человека

заполняем поля структуры с клавиатуры