- •Самарский государственный технический университет
- •Утверждено на заседании кафедры электротехники, информатики и компьютерных технологий 30.01.03.
- •Лабораторная работа №7 программирование с использованием структур
- •Общие сведения о структурах
- •Имя_структуры . Имя_элемента_структуры
- •Список товаров
- •Листинг программы
- •Результат выполнения программы
- •Порядок выполнения работы
- •Задание на выполнение лабораторной работы
- •Содержание отчета
- •Варианты заданий
- •Контрольные вопросы
- •Библиографический список
- •Приложение Математические функции
- •Типы данных
Список товаров
Таблица 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