Вариант 8

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

  • название пункта назначения;
  • номер поезда;
  • время отправления.

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

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

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

//---------------------------------------------------------------------------
#include<iostream.h>
#include<conio.h>
#include<windows.h>
#include <vcl.h>
#pragma hdrstop
#pragma argsused
//---------------------------------------------------------------------------
char *rus(const char *text);//функция для распознавания русских символов
int compare(const void *train1,const void *train2); //объявление функции для сортировки
const int k=30; //объявление именованной константы
struct Train //объявление структуры
 {
  char destiny[k]; //объявление
  int numb;    //полей 
  char time; //структуры
 };
int main(int argc, char* argv[])
{

 int n,i;      //объявление
 bool not_found;//переменных
 char punkt[k];
 cout<<rus("Введите количество структур TRAIN: ");cin>>n;//ввод кол-ва структур
 cout<<endl;
 cin.ignore();
 Train *TRAIN=new Train[n];//выделение в динамической памяти место под массив структур
 for(i=0;i<n;i++)
  {
   cout<<' '<<(i+1)<<rus(".Введите пункт назначения: ");
   cin.getline(TRAIN[i].destiny,k);                                                    //ввод
   cout<<rus("   Введите номер поезда: ");cin>>TRAIN[i].numb;                     //данных
   cout<<rus("   Введите время отправления: ");
   cin.ignore();cin.getline(TRAIN[i].time,k);                //в структуру
   cout<<endl;
  }
 qsort(TRAIN,n,sizeof(Train),compare); //вызов функции для сортировки
 cout<<endl;
 cout<<rus(" Список поездов упорядоченных по времени отправления:\n\n");
 for(i=0;i<n;i++)
  {                              //вывод отсортированной структуры
   cout<<rus(" Пункт назначения: ")<<TRAIN[i].destiny<<endl;
   cout<<rus(" Номер поезда: ")<<TRAIN[i].numb<<endl;
   cout<<rus(" Время отправления: ")<<TRAIN[i].time<<endl;
   cout<<endl;
  }
 cout<<rus("\n Информация о поездах направляющихся в пункт, название которого\
  введено с клавиатуры:")<<endl<<endl;
 while(true)
  {
   cout<<rus(" Введите пункт назначения или слово ""\"end\" для окончания: ");cin>>punkt;
   if(strcmp(punkt,"end")==0)break;
   not_found=true;
   for(i=0;i<n;i++)
    {
     if(strcmp(TRAIN[i].destiny,punkt)==0)
      {
       cout<<rus("\n Пункт назначения: ")<<TRAIN[i].destiny<<endl; //вывод
       cout<<rus(" Номер поезда: ")<<TRAIN[i].numb<<endl;       //запрошенной
       cout<<rus(" Время отправления: ")<<TRAIN[i].time<<endl;  //информации
       not_found=false;
       cout<<endl;
      }
    } //если нет такой информации выводится сообщение
   if(not_found)cout<<rus("\n Таких поездов нет!")<<endl;
  }
 getch();
 return 0;
}
//---------------------------------------------------------------------------
int compare(const void *train1,const void *train2)
 {
   return strcmp((reinterpret_cast<const Train*>(train1))->time,
                           (reinterpret_cast<const Train*>(train2))->time);
 }
//---------------------------------------------------------------------------
char bufrus[256];
char *rus(const char *text)
 {
  CharToOem(text,bufrus);
  return bufrus;
 }
//---------------------------------------------------------------------------

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

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

Результат работы. Восьмой вариант. Структуры

Вариант 7
Вариант 9
error: Content is protected !!