Читаем C++: базовый курс полностью

Если вам нужно получить доступ к отдельным элементам массива inv_var.item, используйте индексацию. Например, с помощью этого кода можно посимвольно вывести на экран содержимое массива inv_var.item.

int t;

for(t=0; inv_var.itern[t]; t++)

 cout << inv_var.item[t];

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

Структуры могут быть элементами массивов. И в самом деле, массивы структур используются довольно часто. Чтобы объявить массив структур, необходимо сначала определить структуру, а затем объявить массив элементов этого структурного типа. Например, чтобы объявить 100-элементный массив структур типа inv_type (который определен выше), достаточно записать следующее.

inv_type invtry[100];

Чтобы получить доступ к конкретной структуре в массиве структур, необходимо индексировать имя структуры. Например, чтобы отобразить на экране содержимое члена on_hand третьей структуры, используйте такую инструкцию.

cout << invtry[2].on_hand;

Подобно всем переменным массивов, у массивов структур индексирование начинается с нуля.

Простой пример инвентаризации склада

Чтобы продемонстрировать применение структур, разработаем простую программу управления складом, в которой для хранения информации о товарах, размещенных на складе компании, используется массив структур типа inv_type. Различные функции, определенные в этой программе, взаимодействуют со структурой и ее элементами по-разному.

Инвентарная ведомость будет храниться в структурах типа inv_type, организованных в массиве invtry.

const int SIZE = 100;

struct inv_type {

 char item[40]; // наименование товара

 double cost; // стоимость

 double retail; // розничная цена

 int on_hand; // имеющееся в наличии количество

 int lead_time; // число дней до пополнения запасов

} invtry[SIZE];

Размер массива выбран произвольно. При желании его можно легко изменить. Обратите внимание на то, что размерность массива задана с использованием const-переменной. А поскольку размер массива во всей программе используется несколько раз, применение const-переменной для этой цели весьма оправданно. Чтобы изменить размер массива, достаточно изменить значение константной переменной SIZE, а затем перекомпилировать программу. Использование const-переменной для определения "магического числа", которое часто употребляется в программе, — обычная практика в профессиональном С++-коде.

Разрабатываемая программа должна обеспечить выполнение следующих действий:

■ ввод информации о товарах, хранимых на складе;

■ отображение инвентарной ведомости;

■ модификация заданного элемента.

Прежде всего напишем функцию main(), которая должна иметь примерно такой вид.

int main()

{

 char choice;

 init_list();

 for(;;) {

  choice = menu();

  switch(choice) {

   case 'e': enter();

    break;

   case 'd': display();

    break;

   case 'u': update();

    break;

   case 'q': return 0;

  }

 }

}

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

// Инициализация массива структур.

void init_list()

{

 int t;

 // Имя нулевой длины означает пустое имя.

 for(t=0; t

}

Функция init_list() подготавливает массив структур для использования, помещая в первый байт поля item нулевой символ. Предполагается, что если поле item пустое, то структура, в которой оно содержится, попросту не используется.

Функция menu_select() отображает команды меню и принимает вариант, выбранный пользователем.

// Получение команды меню, выбранной пользователем.

int menu()

{

 char ch;

 cout << '\n';

 do {

  cout << "(E)nter\n"; // Ввести новый элемент.

  cout << "(D)isplay\n"; // Отобразить всю ведомость.

  cout << "(U)pdate\n"; // Изменить элемент.

  cout << "(Q)uit\n\n"; // Выйти из программы.

  cout << "Выберите команду: ";

   cin >> ch;

 }while(!strchr("eduq", tolower(ch)));

 return tolower(ch);

}

Перейти на страницу:

Все книги серии Изучайте C++ с профессионалами

C++: базовый курс
C++: базовый курс

В этой книге описаны все основные средства языка С++ - от элементарных понятий до супервозможностей. После рассмотрения основ программирования на C++ (переменных, операторов, инструкций управления, функций, классов и объектов) читатель освоит такие более сложные средства языка, как механизм обработки исключительных ситуаций (исключений), шаблоны, пространства имен, динамическая идентификация типов, стандартная библиотека шаблонов (STL), а также познакомится с расширенным набором ключевых слов, используемым в .NET-программировании. Автор справочника - общепризнанный авторитет в области программирования на языках C и C++, Java и C# - включил в текст своей книги и советы программистам, которые позволят повысить эффективность их работы. Книга рассчитана на широкий круг читателей, желающих изучить язык программирования С++.

Герберт Шилдт

Программирование, программы, базы данных

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных