.
Microsoft visual c++ 2008. Урок 21. Структуры
Автор megabax   
11.04.2013 г.
New Page 1

Microsoft visual c++ 2008. Урок 21. Структуры

Часто возникает необходимость как то сгруппировать однородные данные. Например, пусть мы пишем программу расчета заработной платы. Эта программа доложена хранить на каждого сотрудника следующие данные:

  • Фамилия, имя, отчество.

  • Табельный номер.

  • Оклад.

  • Количество отработанных дней.

  • Размер начисленной заработной платы.

Мы можем, например, объявить 5 массивов: для ФИО, табельных номеров, окладов, отработанных дней и начисленной з/п. Ладно, а если у нас в программе нужно еще хранить, допустим, тарифную сетку, список подразделений и еще кучу данных. И для каждого объекта нам надо создавать ряд массивов, при чем у все объектов размер массивом различный. То-есть, у нас будет туева куча массивов, в которых мы сами потом запутаемся. К счастью, в C++ есть такая конструкция, как структура. Благодаря ей мы можем, например, для хранения сведений о сотрудниках использовать не пять массивов, а все один. И при том это не двумерный массив. Так что к полям массива мы будем обращаться не по индексу, а по имени. Таким образом,  мы упрощаем процесс программирования.

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

А теперь рассмотрим пример:

// les21.cpp: определяет точку входа для консольного приложения.

//

 

#include "stdafx.h"

#include <string.h>

#include <stdio.h>

#include <conio.h>

 

 

 

//структура склада

struct Store

{

       char name[20]; //наименование склада

       char fio[30]; //ФИО кладощика

};

 

//структура товара

struct Ware

{

       char name[30]; //наименование товара

       double price; //цена товара

};

 

//структура остатка

struct Rest

{

       int ware; //индекс товара

       int store; //индекс склада

       int rest; //остаток

};

 

 

int _tmain(int argc, _TCHAR* argv[])

{

       struct Ware wares[3];

       struct Store stores[3];

       struct Rest rests[9];

 

       //заполним товары

       strcpy(wares[0].name,"Beer baltika 9");

       wares[0].price=40.23;

       strcpy(wares[1].name,"White bread");

       wares[1].price=10.5;

       strcpy(wares[2].name,"Grain");

       wares[2].price=25.11;

 

       //заполним склады

       strcpy(stores[0].name,"Maiakovskogo, 11");

       strcpy(stores[0].fio,"Ivanov Ivan Ivanovich");

       strcpy(stores[1].name,"Pobedi, 22");

       strcpy(stores[1].fio,"Petrov Petr Petrovich");

       strcpy(stores[2].name,"Shop");

       strcpy(stores[2].fio,"Ivaonva Maria Ivanovna");

 

       //заполним остатки

       rests[0].rest=12;

       rests[0].store=0;

       rests[0].ware=0;

 

       rests[1].rest=11;

       rests[1].store=1;

       rests[1].ware=0;

 

       rests[2].rest=1;

       rests[2].store=2;

       rests[2].ware=0;

 

       rests[3].rest=33;

       rests[3].store=0;

       rests[3].ware=1;

 

       rests[4].rest=14;

       rests[4].store=1;

       rests[4].ware=1;

 

       rests[5].rest=111;

       rests[5].store=2;

       rests[5].ware=1;

 

       rests[6].rest=1;

       rests[6].store=0;

       rests[6].ware=2;

 

       rests[7].rest=1;

       rests[7].store=1;

       rests[7].ware=2;

 

       rests[8].rest=1;

       rests[8].store=2;

       rests[8].ware=2;

 

 

       for (int i=0; i<9; i++)

       {

             printf("In the store: %s %d ware: %s\n, on the price: %f, fio: %s\n",

                    stores[rests[i].store].name,

                    rests[i].rest,

                    wares[rests[i].ware].name,

                    wares[rests[i].ware].price,

                    stores[rests[i].store].fio

                    );

       };

        _getch();

       return 0;

}

 Это пример кода использующего структуру. Сохраните его как образец синтаксиса, на случай, когда вам потребуется работать со структурой.

А вот протокол работы программы:

Microsoft visual c++ 2008. Урок 21. Структуры


Скриншоты, помеченные знаком *, являются цитатами и иллюстрациями   программного продукта "Microsoft Visual C++ Express Edition", авторское право на который принадлежит корпорации Microsoft.. 


 

Последнее обновление ( 11.04.2013 г. )