Вариант 19

Описать структуру с именем PRICE, содержащую следующие поля:

  • название товара;
  • название магазина, в котором продается товар;
  • стоимость товара в руб.

Написать программу, выполняющую следующие действия:

  1. ввод с клавиатуры данных в массив, состоящий из восьми элементов типа PRICE, записи разместить в алфавитном порядке по названиям магазинов;
  2. вывод на экран информации о товарах, продающихся в магазине, название которого введено с клавиатуры;
  3. если такого магазина нет, выдать на дисплей соответствующее сообщение.

Код программы:

//---------------------------------------------------------------------------
#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.

Результат работы программы:

Результат работы. Девятнадцатый вариант. Структуры

Вариант 18
Вариант 20
error: Content is protected !!