Описать структуру с именем MARSH, содержащую следующие поля:
- название начального пункта маршрута;
- название конечного пункта маршрута;
- номер маршрута.
Написать программу, выполняющую следующие действия:
- ввод с клавиатуры данных в массив, состоящий из восьми элементов типа MARSH, записи должны быть упорядочены по номерам маршрутов;
- вывод на экран информации о маршрутах, которые начинаются или оканчиваются в пункте, название которого введено с клавиатуры;
- если таких маршрутов нет, выдать на дисплей соответствующее сообщение.
Код программы:
//--------------------------------------------------------------------------- #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; //объявление bool sort=1,not_found;//переменных struct Marsh //объявление структуры { char begin[k]; //объявление char end[k]; //полей int numb; //структуры }; char punct[k]; 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; } cin.ignore(); while(true) { cout<<rus(" Введите начальный или конечный пункт маршрута или ""\"end\" для окончания: "); cin.getline(punct,k); cout<<endl; if(strcmp(punct,"end")==0)break; not_found=true; //поиск for(i=0;i<n;i++) //введенного { //пункта if(strcmp(MARSH[i].begin,punct)==0) //в структуре { cout<<endl; cout<<rus(" Конечный пункт маршрута: ")<<MARSH[i].end<<endl; //вывод cout<<rus(" Номер маршрута: ")<<MARSH[i].numb<<endl; //запрошенной информации not_found=false; cout<<endl<<endl; } if(strcmp(MARSH[i].end,punct)==0) { cout<<endl; cout<<rus(" Начальный пункт маршрута: ")<<MARSH[i].begin<<endl; //вывод cout<<rus(" Номер маршрута: ")<<MARSH[i].numb<<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.
Результат работы программы: