Лекция: Имя_структуры . имя_элемента_структуры

При этом с полями структур можно выполнять любые операции, применимые к типу этих полей.

Например:

XY. N[0]=37; //присваивание поля N[0] структуры XY

cin >> EE[3]. value;//ввод значения поля value структуры EE[3]

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

Например:

card dictionary=

{«Подбельский В.В.», «Язык Си ++», «М.»,

«Финансы и статистика», 1999, 560};

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

Например:

struct complex {float real, im;} comple [2] [3]=

{{{1,1}, {1,1}, {1,1}}, {{2,2}, {2,2}, {2,2}}};

Для структур одного и того же типа определена операция присваивания. При этом происходит поэлементное копирование полей структур.

Например:

XY=EE[3]; //предполагается, что структура EE[3] уже

//инициализирована

XX=XY;

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

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

а) по алфавиту наименования товара;

б) по убыванию цены товара;

в) по убыванию числа единиц товара.

Вывести отсортированный список на печать (лист. 8.1).

Таблица 8.1

Список товаров

№ Наименование товара Цена Количество
Карандаш Ручка Линейка Ластик Тетрадь 1.50 3.40 0.85 1.00 1.20

Листинг 8.1.struktur.сpp

#include <iostream.h>

#include <string.h> //Подключает функцию сравнения строк strcmp

#include <iomanip.h>

//Определение структуры

struct tovar //tovar — глобальный тип структуры

{

char *name; //Наименование товара

float price; //Цена товара

short kol; //Количество товара

}sp[]={{«Карандаш»,1.50,12}, //Инициализация массива структур sp[]

{«Ручка»,3.40,20},

{«Линейка»,0.85,10},

{«Ластик»,1.00,25},

{«Тетрадь»,1.20,30}};

void out_sp(int,tovar*); //Прототип функции вывода на печать

void sort(char,int,tovar*); //Прототип функции сортировки

void main()

{

int n=5;

cout<<«Исходный список товаров:»<<endl;

out_sp(n,sp); //Вызов функции вывода

sort('t',n,sp); //Сортировка по наименованию товара

cout<<«Сортировка по наименованию товара (по алфавиту):»<<endl;

out_sp(n,sp);

sort('p',n,sp); //Сортировка по убыванию цены товара

cout<<«Сортировка по убыванию цены товара:»<<endl;

out_sp(n,sp);

sort('k',n,sp); //Сортировка по убыванию количества товара

cout<<«Сортировка по убыванию количества товара:»<<endl;

out_sp(n,sp);

}

//Функция вывода списка на печать out_sp

void out_sp(int m,tovar *tabl)

{

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

cout<<(i+1)<<". "

<<setw(8)<<tabl[i].name

<<setw(6)<<tabl[i].price

<<setw(4)<<tabl[i].kol<<endl;

}

/*Функция сортировки sort:

при ch='t' — по наименованию товара (по алфавиту)

при ch='p' — по цене товара

при ch='k' — по количеству товара*/

void sort(char ch,int m,tovar *lst)

{ tovar x;

for(int i=0;i<m-1;i++)

for(int j=i+1;j<m;j++)

if((ch=='t' && strcmp(lst[i].name,lst[j].name)>0)||

(ch=='p' && lst[i].price<lst[j].price)||

(ch=='k' && lst[i].kol<lst[j].kol))

{x=lst[i];lst[i]=lst[j];lst[j]=x;

}

}

еще рефераты
Еще работы по информатике