Site icon C/C++ Структурное программирование

Вариант 20

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

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

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

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

//---------------------------------------------------------------------------
#include<iostream.h>
#include<conio.h>
#include<windows.h>
#include<vcl.h>
#pragma hdrstop
#pragma argsused
//---------------------------------------------------------------------------
char *rus(const char *text);//функция для распознавания русских символов
int main()
 {
  int i,n,r_schet;   //объявление
  bool not_found,sort=1;  //переменных
  struct Order //объявление структуры
   {
    char rspl; //объявление
    char rspol; //полей 
    double money; //структуры
   };
  Order temp;
  cout<<rus(" Введите количество структур ORDER: ");cin>>n;                       //ввод кол-ва структур
  cout<<endl;
  Order *ORDER=new Order[n];                                       //выделение в динамической памяти место под массив структур
  for(i=0;i<n;i++)
   {
    cout<<' '<<(i+1)<<rus(".Введите расчетный счет плательщика: ");cin>>ORDER[i].rspl;            //ввод
    cout<<rus("   Введите расчетный счет получателя: ");cin>>ORDER[i].rspol;                               //данных
    cout<<rus("   Введите перечисляемую сумму: ");cin>>ORDER[i].money;                          //в структуру
    cout<<endl;
   }
  while(sort)
   {
     sort=0;
     for(i=0;i<n-1;i++)
     if(ORDER[i].rspl>ORDER[i+1].rspl)
      {
        temp=ORDER[i];
        ORDER[i]=ORDER[i+1];
        ORDER[i+1]=temp;
        sort=1;
      }
   }  
  cout<<endl;  
  cout<<rus(" Записи упорядоченные по расчетным счетам:\n\n");
  for(i=0;i<n;i++)
   {                                  //вывод отсортированной структуры
    cout<<rus(" Расчетный счет плательщика: ")<<ORDER[i].rspl<<endl;
    cout<<rus(" Расчетный счет получателя: ")<<ORDER[i].rspol<<endl;
    cout<<rus(" Перечисляемая сумму: ")<<ORDER[i].money<<endl;
    cout<<endl;
   }
  cout<<rus("\n Информация о сумме, снятой с расчетного счета плательщика введенного с клавиатуры:")<<endl;
  while(true)
   { 
    cout<<endl;
    cout<<rus(" Введите р/с или 0 для окончания: ");cin>>r_schet;
    cout<<endl;
    if(r_schet==0)break;
    not_found=true;
    for(i=0;i<n;i++)
     {
      if(ORDER[i].rspl==r_schet)
       {
        cout<<rus(" Сумма: ")<<ORDER[i].money<<endl; //вывод
        not_found=false;                           //запрошенной  информации
       }
     }    //если нет такой информации выводится сообщение
    if(not_found)cout<<rus(" Такого р/с нет!")<<endl;
   }
  getch();
  return 0;
 }
//---------------------------------------------------------------------------
char bufrus[256];
char *rus(const char *text)
 {
  CharToOem(text,bufrus);
  return bufrus;
 }
//---------------------------------------------------------------------------

Для уменьшения количества выводимой на экран информации, заполним только 2 структуры ORDER.

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

Вариант 19
Exit mobile version