Вариант 10

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

  • название начального пункта маршрута;
  • название конечного пункта маршрута;
  • номер маршрута.

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

  1. ввод с клавиатуры данных в массив, состоящий из восьми элементов типа MARSH, записи должны быть упорядочены по номерам маршрутов;
  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 argc, char* argv[])
{
 const int k=30;  //объявление именованной константы
 int n,i,nomer=0;      //объявление
 bool sort=1,not_found;//переменных
 struct Marsh       //объявление структуры
  {
   char begin[k];    //объявление
   char end[k];        //полей
   int numb;        //структуры
  };
 Marsh buffer;     //объявление структуры buffer для сортировки
 cout<<rus(" Введите количество структур MARSH: ");cin>>n;//ввод кол-ва структур
 cout<<endl;
 Marsh *MARSH=new Marsh[n];//выделение в динамической памяти место под массив структур
 for(i=0;i<n;i++)
  {
   cout<' '<<(i+1)<<rus(".Введите начальный пункт маршрута: ");
   cin.ignore();cin.getline(MARSH[i].begin,k);                                             //ввод
   cout<<rus("   Введите конечный пункт маршрута: ");
   cin.getline(MARSH[i].end,k);   //данных
   cout<<rus("   Введите номер маршрута: ");cin>>MARSH[i].numb;                   //в структуру
   cout<<endl;
  }
 while(sort)
  {                                                                 //сортировка
   sort=0;                                                    //структуры
   for(i=0;i<n-1;i++)                                            //по
   if(MARSH[i].numb>MARSH[i+1].numb)  //номеру
    {                                                                   //маршрута
     buffer=MARSH[i];
     MARSH[i]=MARSH[i+1];
     MARSH[i+1]=buffer;
     sort=1;
    }
  }
 cout<<endl;
 cout<<rus(" Список маршрутов упорядоченных по номерам:\n\n");
 for(i=0;i<n;i++)
  {                              //вывод отсортированной структуры
   cout<<rus(" Начальный пункт маршрута: ")<<MARSH[i].begin<<endl;
   cout<<rus(" Конечный пункт маршрута: ")<<MARSH[i].end<<endl;
   cout<<rus(" Номер маршрута: ")<<MARSH[i].numb<<endl;
   cout<<endl;
  }
 while(true)
  { 
   cout<<rus(" Введите номер маршрута или 0 для окончания: ");cin>>nomer;
   cout<<endl;
   if(0==nomer)break;
   else
    {
     not_found=true;
     for(i=0;i<n;i++)                                                            //поиск
      {                                                                                                   //введенного номера маршрута
       if(MARSH[i].numb==nomer)                                                            //в структуре
        {
         cout<<rus(" Начальный пункт маршрута: ")<<MARSH[i].begin<<endl;             //вывод
         cout<<rus(" Конечный пункт маршрута: ")<<MARSH[i].end<<endl;                //запрошенной информации
         not_found=false;
         cout<<endl<<endl;
        }
      }   //если нет такой информации выводится сообщение
     if(not_found)cout<<rus("  Такого маршрута нет!")<<endl<<endl;
    }
  }
 getch();
 return 0;
}
//---------------------------------------------------------------------------
char bufrus[256];
char *rus(const char *text)
 {
  CharToOem(text,bufrus);
  return bufrus;
 }
//---------------------------------------------------------------------------

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

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

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

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