Описать структуру с именем TRAIN, содержащую следующие поля:
- название пункта назначения;
- номер поезда;
- время отправления.
Написать программу, выполняющую следующие действия::
- ввод с клавиатуры данных в массив, состоящий из восьми элементов типа TRAIN, записи должны быть упорядочены по номерам поездов;
- вывод на экран информации о поезде, номер которого введен с клавиатуры;
- если таких поездов нет, выдать на дисплей соответствующее сообщение.
Код программы:
//--------------------------------------------------------------------------- #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,numb=0; //объявление bool sort=1,not_found;//переменных struct Train //объявление структуры { char destiny[k]; //объявление int numb; //полей char time[k]; //структуры }; Train buffer; //объявление структуры buffer для сортировки 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; } while(sort) { //сортировка sort=0; //структуры for(i=0;i<n-1;i++) //по if(TRAIN[i].numb>TRAIN[i+1].numb) //времени { //отправления buffer=TRAIN[i]; TRAIN[i]=TRAIN[i+1]; TRAIN[i+1]=buffer; sort=1; } } 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(" Введите номер поезда или 0 для окончания: ");cin>>numb; if(0==numb)break; not_found=true; for(i=0;i<n;i++) { if(TRAIN[i].numb==numb) { cout<<rus("\n Пункт назначения: ")<<TRAIN[i].destiny<<endl; //вывод cout<<rus(" Время отправления: ")<<TRAIN[i].time<<endl; //запрошенной информации not_found=false; cout<<endl; } } //если нет такой информации выводится сообщение if(not_found)cout<<rus("\n Таких поездов нет!")<<endl<<endl; } getch(); return 0; } //--------------------------------------------------------------------------- char bufrus[256]; char *rus(const char *text) { CharToOem(text,bufrus); return bufrus; } //---------------------------------------------------------------------------
Для уменьшения количества выводимой на экран информации, заполним только 2 структуры TRAIN.
Результат работы программы: