Программирование - это просто
Advertisement
Главная
25.04.2024 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
Microsoft visual c++ 2008. Урок 21. Структуры Печать E-mail
Автор 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 г. )
 
Пред. »
 
© 2024 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги