Массивы структур.
Методика создания массивов структур – точно такая же, как и при создании массивов. Например, что бы создать массив из 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;
} ;