Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР_07_Структуры-VC++7-2003.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
156.67 Кб
Скачать

Лабораторная работа № 7

Структуры

Цель

  • Изучение назначения, формата объявления и правил определения структур.

  • Изучение правил доступа к членам структур.

  • Составление консольных приложений с использованием структур.

Теоретические сведения

Понятие структуры

Массивом называется набор элементов одинакового типа. Структура является набором элементов произвольных типов. Ключевое слово struct определяет тип структуры:

struct [tag] { member-list } [declarators];

[struct] tag declarators;

где

  • struct – ключевое слово типа структуры;

  • tag – идентификатор (имя) пользовательского типа структуры;

  • member-list – список объявлений полей;

  • declarators – имена объектов типа tag.

Структура является пользовательским, сложным типом данных. Он состоит из «полей» или «элементов», которые могут быть разного типа. Например, переменная Man типа Worker может быть объявлена непосредственно:

struct Worker

{

char* Name;

int Year;

char* Speciality;

} Man;

Структура Woman объявлена с предварительным объявлением типа:

struct Worker

{

char* Name;

int Year;

char* Speciality;

};

Worker Woman;

Объявления полей одинакового типа могут быть объединены подобно обычным объявлениям переменных. Кроме того, поля структуры (подобно массиву) могут быть инициализированы:

struct Coordinate

{

int X, Y, Z;

} Point = {12, 6, 25};

Доступ к полям структуры

К конкретным членам (полям) структуры можно обратиться с использованием оператора . (точка). Например:

struct Worker // объявление структуры

{

char* Name; // фамилия рабочего

int Year; // год его рождения

} Man;

Man.Name=”Sidorov”;

Man.Year=1972;

printf(" %-10s %4d %-10s\n", Man.Name, Man .Year);

К объектам типа структуры часто обращаются через указатели, используя оператор -> (разыменование указателя на структуру). Например:

struct Worker // объявление структуры

{

char* Name; // фамилия рабочего

Int Year; // год его рождения

};

Worker * Man=new Worker;

Man->Name=”Sidorov”;

Man->Year=1972;

printf(" %-10s %4d %-10s\n", Man->Name, Man->Year);

Если Man – указатель на тип Worker, то Man->Year эквивалентно (*Man).Year. Объекты типа структуры можно присваивать, передавать в качестве аргументов и возвращать в качестве значений функций.

Постановка задачи

  1. Исходные данные считать из предварительно созданного текстового файла.

  2. Выполнить заданные действия с массивом структур.

  3. Исходный массив структур вывести на экран.

  4. Результаты обработки массива структур вывести в другой текстовый файл.

Требования

  • Оформить вычисления в виде консольного приложения.

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

  • Для ввода/вывода данных с консоли применить средства стандартной библиотеки <stdio.h>.

  • В отчет включить текст основной программы, исходного файла данных, результаты расчета на экране и текст результирующего файла.

Пример:

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

  • фамилия (строка);

  • год рождения (целое число);

  • специальность (строка).