Массивы структур.

Методика создания массивов структур – точно такая же, как и при создании массивов. Например, что бы создать массив из 100 экземпляров BestStudentструктуры Student, необходима следующая запись:

Student BestStudent[100];

В результате будет создан сто элементный массив BestStudent типа Student. Следовательно, каждый элемент массива, такой как BestStudent[0] или BestStudent[99], - это объект типа Student, и доступ к его полям можно организовать уже рассмотренным выше образом:

 

cin >> BestStudent[0].Name; // Инициализация поля Name

cout << >> BestStudent[99].Rating; //Вывод на экран содержимого поля Rating

Следует иметь в виду, что сам BestStudent- это массив, а не структура, так что конструкции типа BestStudent.Name являются ошибочными.

Рассмотрим следующий пример. Требуется разработать программу, последовательно формирующую в процессе диалога с пользователем документ такого содержания:

СВЕДЕНИЯ О СТОИМОСТИ ВЫДАННЫХ ДЕТАЛЕЙ

N/n ДЕТАЛЬ СТОИМОСТЬ . ВЫДАНО РАСХОД
n а[8] t k c = t * k
ИТОГО: s1 s2 s3

Диалог должен осуществляться по следующему сценарию:

и т.д.

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

Из постановки задачи следует, что запись содержит несколько разнотипных полей: порядковый номер детали (n/n), для его хранения целесообразно использовать тип int; наименование детали (ДЕТАЛЬ) – здесь может использоваться массив, например из 8-и символов; количество выданных деталей (ВЫДАНО) – данному полю соответствует тип int; а полю стоимости детали (РАСХОД) – тип double. Очевидно, что применение массива в данном случае не представляется возможным. Действительно, массив может содержать несколько элементов, однако каждый элемент должен быть одного типа, что противоречит условию задачи. Выходом из создавшейся ситуации будет применение структуры – более универсальной формы данных, чем массив.

Ниже приведен один из возможных вариантов программы решения поставленной задачи на основе применения массива структур.

 

// Программа 2

// Решение экономической задачи с использованием массивов структур

 

#include <iostream>

#include <iomanip> // Для использования манипуляторов потока setw()

// и setprecision()

const int n=3; // Размерность обрабатываемого массива структур

struct zap // Рабочий вариант объявление структуры zap,

{

char a[8];

double t;

int k;

double c;

} ;