Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа_№7С++.doc
Скачиваний:
8
Добавлен:
15.11.2019
Размер:
161.79 Кб
Скачать

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

Таблица 1

Наименование товара

Цена

Количество

1

2

3

4

5

Карандаш

Ручка

Линейка

Ластик

Тетрадь

1.50

3.40

0.85

1.00

1.20

12

20

10

25

30

Листинг программы

#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;

}

}

Результат выполнения программы

Исходный список товаров:

1. Карандаш 1.5 12

2. Ручка 3.4 20

3. Линейка 0.85 10

4. Ластик 1 25

5. Тетрадь 1.2 30

Сортировка по наименованию товара (по алфавиту):

1. Карандаш 1.5 12

2. Ластик 1 25

3. Линейка 0.85 10

4. Ручка 3.4 20

5. Тетрадь 1.2 30

Сортировка по убыванию цены товара:

1. Ручка 3.4 20

2. Карандаш 1.5 12

3. Тетрадь 1.2 30

4. Ластик 1 25

5. Линейка 0.85 10

Сортировка по убыванию количества товара:

1. Тетрадь 1.2 30

2. Ластик 1 25

3. Ручка 3.4 20

4. Карандаш 1.5 12

5. Линейка 0.85 10