Вариант 7

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

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

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

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

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

//---------------------------------------------------------------------------
#include<iostream.h>
#include<conio.h>
#include<windows.h>
#include<stdlib.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[k];          //структуры
  };
int main(int argc, char* argv[])
{
 char time[k];
 int n,i;       //объявление
 bool not_found;  //переменных
 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>>time;
   if(strcmp(time,"end")==0)break;
   not_found=true;
   for(i=0;i<n;i++)               //поиск
    {                             //введенного времени
     if(strcmp(TRAIN[i].time,time)==0)      //в структуре
      {
       cout<<rus("\n Пункт назначения: ")<<TRAIN[i].destiny<<endl; //вывод
       cout<<rus(" Номер поезда: ")<<TRAIN[i].numb<<endl;       //запрошенной  информации
       not_found=false;
       cout<<endl;
      }
    } //если нет такой информации выводится сообщение
   if(not_found)cout<<rus("\n Таких поездов нет!")<<endl<<endl;
  }
 getch();
 return 0;
}
//---------------------------------------------------------------------------
int compare(const void *train1,const void *train2) //функция для сортировки
 {
  return strcmp((reinterpret_cast<const Train*>(train1))->destiny,
                (reinterpret_cast<const Train*>(train2))->destiny);
 }
//---------------------------------------------------------------------------
char bufrus[256];
char *rus(const char *text)
 {
  CharToOem(text,bufrus);
  return bufrus;
 }
//---------------------------------------------------------------------------

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

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

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

Вариант 6
Вариант 8
error: Content is protected !!