Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

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



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

Например:

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;

}

}





Дата публикования: 2014-11-02; Прочитано: 373 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...