Описать структуру с именем PRICE, содержащую следующие поля:
- название товара;
- название магазина, в котором продается товар;
- стоимость товара в руб.
Написать программу, выполняющую следующие действия:
- ввод с клавиатуры данных в массив, состоящий из восьми элементов типа PRICE, записи разместить в алфавитном порядке по названиям магазинов;
- вывод на экран информации о товарах, продающихся в магазине, название которого введено с клавиатуры;
- если такого магазина нет, выдать на дисплей соответствующее сообщение.
Код программы:
//--------------------------------------------------------------------------- #include<iostream.h> #include<ctype.h> #include<string.h> #include<conio.h> #include<stdlib.h> #include<vcl.h> #pragma hdrstop #pragma argsused //--------------------------------------------------------------------------- char *rus(const char *text);//функция для распознавания русских символов int compare(const void *price1,const void *price2); //объявление функции для сортировки const int k=30; //объявление именованной константы struct PRICE //объявление структуры { char goods[k]; //объявление char magazin[k]; //полей double cost; //структуры }; int main() { int i,n; //объявление char magazin_name[k]; // bool not_found; //переменных cout<<rus(" Введите количество структур PRICE: ");cin>>n; //ввод кол-ва структур cout<<endl; PRICE *price=new PRICE[n]; for(i=0;i<n;i++) { cout<<' '<<(i+1)<<rus(".Введите название товара: "); cin.ignore();cin.getline(price[i].goods,k); //ввод cout<<rus(" Введите название магазина: "); cin.getline(price[i].magazin,k); //данных cout<<rus(" Введите цену товара: ");cin>>price[i].cost; //в структуру cout<<endl; } qsort(price,n,sizeof(PRICE),compare); //вызов функции для сортировки cout<<rus(" Записи упорядоченные в алфавитном порядке по названиям магазинов:\n\n"); for(i=0;i<n;i++) { //вызов функции для сортировки cout<<rus(" Название товара: ")<<price[i].goods<<endl; cout<<rus(" Название магазина: ")<<price[i].magazin<<endl; cout<<rus(" Цена товара: ")<<price[i].cost<<endl; cout<<endl; } cin.ignore(); cout<<rus("\n Информация о товарах, продающихся в магазине название которого\ введено с клавиатуры:")<<endl; while(true) { cout<<endl; cout<<rus(" Введите название магазина или слово ""\"end\" для окончания: "); cin.getline(magazin_name,k); cout<<endl; if(strcmp(magazin_name,"end")==0)break; not_found=true; for(i=0;i<n;i++) //поиск { //введенного названия магазина if(strcmp(price[i].magazin,magazin_name)==0) //в структуре { cout<<rus(" Название товара: ")<<price[i].goods<<endl; //вывод cout<<rus(" Цена товара: ")<<price[i].cost<<endl; //запрошенной not_found=false; //информации } } //если нет такой информации выводится сообщение if(not_found)cout<<rus(" Такого магазина нет!")<<endl<<endl; } getch(); return 0; } //--------------------------------------------------------------------------- int compare(const void *price1,const void *price2) //функция для сортировки { return strcmp((reinterpret_cast<const PRICE*>(price1))->magazin, (reinterpret_cast<const PRICE*>(price2))->magazin); } //--------------------------------------------------------------------------- char bufrus[256]; char *rus(const char *text) { CharToOem(text,bufrus); return bufrus; } //---------------------------------------------------------------------------
Для уменьшения количества выводимой на экран информации, заполним только 2 структуры PRICE.
Результат работы программы: