R
romapalivo
Собрал по частям курсовую(что скопировал с готовых исходников, что сам сделал, что сделал по анологии), я сам не большой спец по С++(но все-таки немного разбираюсь), но очень не хотел заказывать работу. Вот она сама - требуется создать базу данных автовокзала(я подробно расписал каждую строку), в главной функции в case 8 и 9 пишет, что идет ссылка на неопределенные функции начиная от функции sortBD и заканчивая функцией poisk25, описаных ранее. Помогите пожалуйста, просто очень долго ее собирал, а ошибка чувствую нестрашная только как не исправлял - не получается!
#include <iostream.h>
#include <conio.h>
#include <fstream.h>
#include <string.h>
#include <iomanip.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
struct Time //Структура времени
{int h, //час
min;}; //минута
struct Perech //основная структура
{int nomer; //номер
char outpunkt[20]; //пункт отправления
char inpunkt[20]; //пункт назначения
Time Dt; //прототип структуры времени
int cost;}; //стоимость
class vokzal //класс динамический массив структур
{
private:
Perech *px; //указатель на массив записей
int n; //число строк в массиве
int f; //число найденных строк
public:
vokzal(){n=0;px=NULL;} //конструктор
~vokzal(){n=0;if(px!=NULL)delete[]px;} //деструктор
void inputfile(); //ввод БД из файла
void newBD(); //создание новой БД
void output(); //вывод БД на экран
void redaktor(); //редактирование БД
int vuibor(); //выбор нужной строки
void outputFile(); //сохранение БД в файл
void add(); //добавление новой записи
void delt(); //удаление записи
void poisk1(); //поиск по номеру автобуса
void rezult(); //вывод результатов поиска на экран
void poisk2(); //поиск по номеру автобуса и по пункту отправления
void sortBD(); //сортировка по номеру
void alfsort(); //сортировка по пункту отправления
void alfsort2(); //сортировка по пункту назначения
void sortBD2(); //сортировка по времени
void sortBD3(); //сортировка по стоимости билета
void poisk12(); //поиск по пункту отправления
void poisk13(); //поиск по пункту назначения
void poisk14(); //поиск по времени
void poisk15(); //поиск по стоимости билета
void poisk22(); //поиск по пункту отправления и по пункту назначения
void poisk23(); //поиск по стоимости билета и по пункту назначения
void poisk24(); //поиск по времени и по пункту отправления
void poisk25(); //поиск по номеру автобуса и по стоимости билета
};
void vokzal::inputfile() //ввод БД из файла
{ifstream fin;
int i; //рабочая переменная для подсчёта
Perech t; //рабочая переменная для подсчёта записей в файле
char file[10]; //переменная для названия файла
if(px!=NULL){delete[]px;n=0;px=NULL;} //очистка рабочей области(массива)
cout<<"Imya vhodnogo faila: ";cin>>file;
fin.open(file);
if(fin==NULL){cout<<file<<" Ne otkruit\n";getch();return;}
n=0;
//подсчёт записей в файле
do{fin>>t.nomer>>t.outpunkt>>t.inpunkt>>t.Dt.h>>t.Dt.min>>t.cost;
n++;
} while(fin.good()); //пока файл не закончился
n--;
fin.close();
px=new Perech[n]; //выделение динамической памти
if(px==NULL){cout<<"Net pamyati\n";n=0;getch();return;}
fin.open(file);
if(fin==NULL){cout<<file<<" Ne otkruit\n";getch();return;}
//ввод массива задолжников из файла
for(i=0;i<n;i++)
{fin>>px.nomer>>px.outpunkt>>px.inpunkt>>px.Dt.h>>px.Dt.min>>px.cost;
}
fin.close();
}
void vokzal:utputFile() //сохранение БД в файл
{ofstream fout;
char file[20]; //переменная для названия файла
int i; //рабочая переменная для подсчёта
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
cout<<"Vvedite fail dlya sohraneniya: ";cin>>file;
fout.open(file,ios:ut|ios::trunc);
if(fout.fail()){cout<<file<<" Ne sozdan\n";getch();n=0;px=NULL;return;}
//запись БД в файл
for(i=0;i<n;i++)
{fout.setf(ios::left);
fout<<setw(6)<<px.nomer<<setw(12)<<px.outpunkt<<setw(11)<<px.inpunkt
<<setw(3)<<px.Dt.h<<setw(4)<<px.Dt.min<<setw(8)<<px.cost<<endl;
}
cout<<"Baza dannuih sohranena\n";getch();
}
void vokzal::newBD() //создание новой БД
{int i; //рабочая переменная для подсчёта
cout<<"Kolichestvo zapisey=";cin>>n;
if(px!=NULL)delete[] px; //очистка рабочей области(массива)
px=new Perech[n]; //выделение динамической памяти
if(px==NULL){cout<<"Net pamyati\n";getch();n=0;return;}
//создание базы данных
for(i=0;i<n;i++)
{cout<<"Nomer avtobusa:";cin>>px.nomer;
cout<<"Punkt otpravleniya: ";cin>>px.outpunkt;
cout<<"Punkt naznacheniya: ";cin>>px.inpunkt;
cout<<"Vremya otpravleniya: ";cin>>px.Dt.h>>px.Dt.min;
cout<<"Stoimost bileta: ";cin>>px.cost;
cout<<endl;
}cout<<"Baza dannuih sozdana";getch();
}
void vokzal:utput() //вывод БД на экран
{int i; //переменная для подсчёта
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
clrscr(); //очистка экрана
cout.setf(ios::left); //выравнивание слева
cout<<endl<<"Baza dannuih 'Avtovokzal'\n"<<endl;
cout<<"N"<<" "<<setw(6)<<"Nomer"<<setw(12)<<"Otpravlenie"<<setw(11)<<"Pribuitie"
<<setw(7)<<"Vremya"<<setw(8)<<"Stoimost"<<endl;
//вывод БД на экран
for(i=0;i<n;i++)
if(px.Dt.h<10 && px.Dt.min<10) //если часы и минуты меньше 10, перед ними пишутся "0"
{cout.setf(ios::left); i++;
cout<<setw(3)<<i<<setw(6)<<px[i-1].nomer<<setw(12)<<px[i-1].outpunkt<<setw(11)<<px[i-1].inpunkt<<"0"
<<setw(1)<<px[i-1].Dt.h<<":"<<"0"<<setw(3)<<px[i-1].Dt.min<<setw(8)<<px[i-1].cost<<endl;
i--; }
else if(px.Dt.h<10) //если часы меньше 10, перед ними пишутся "0"
{cout.setf(ios::left); i++;
cout<<setw(3)<<i<<setw(6)<<px[i-1].nomer<<setw(12)<<px[i-1].outpunkt<<setw(11)<<px[i-1].inpunkt<<"0"
<<setw(1)<<px[i-1].Dt.h<<":"<<setw(4)<<px[i-1].Dt.min<<setw(8)<<px[i-1].cost<<endl;
i-- ;}
else if(px.Dt.min<10) //если минуты меньше 10, перед ними пишутся "0"
{cout.setf(ios::left); i++;
cout<<setw(3)<<i<<setw(6)<<px[i-1].nomer<<setw(12)<<px[i-1].outpunkt<<setw(11)<<px[i-1].inpunkt
<<setw(2)<<px[i-1].Dt.h<<":"<<"0"<<setw(3)<<px[i-1].Dt.min<<setw(8)<<px[i-1].cost<<endl;
i--;}
else
{cout.setf(ios::left); i++;
cout<<setw(3)<<i<<setw(6)<<px[i-1].nomer<<setw(12)<<px[i-1].outpunkt<<setw(11)<<px[i-1].inpunkt
<<setw(2)<<px[i-1].Dt.h<<":"<<setw(4)<<px[i-1].Dt.min<<setw(8)<<px[i-1].cost<<endl;
i--;} ;
getch();
}
int vokzal::vuibor() //выбор нужной строки
{int k; //рабочая переменная для выбора строки
cout.setf(ios::left); //выравнивание слева
output(); //вызывается функция вывода БД на экран
cout<<"Vuiberite stroku: ";cin>>k;
if(k<0|| k>n+1){cout<<"Net takoi stroki\n";getch();}
k--;
return k;
}
void vokzal::redaktor() //редактирование БД
{int j, //рабочая переменная для выбора пункта
N; //рабочая переменная для вызова функции
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
N=vuibor(); //вызывается функция выбора строки
while(1)
{clrscr(); //очистка экрана
if(px[N].Dt.h<10 && px[N].Dt.min<10) //если часы и минуты меньше 10, перед ними пишутся "0"
{cout.setf(ios::left);
cout<<setw(6)<<px[N].nomer<<setw(12)<<px[N].outpunkt<<setw(11)<<px[N].inpunkt<<"0"
<<setw(1)<<px[N].Dt.h<<":"<<"0"<<setw(3)<<px[N].Dt.min<<setw(8)<<px[N].cost<<endl;
}
else if(px[N].Dt.h<10) //если часы меньше 10, перед ними пишутся "0"
{cout.setf(ios::left);
cout<<setw(6)<<px[N].nomer<<setw(12)<<px[N].outpunkt<<setw(11)<<px[N].inpunkt<<"0"
<<setw(1)<<px[N].Dt.h<<":"<<setw(4)<<px[N].Dt.min<<setw(8)<<px[N].cost<<endl;
}
else if(px[N].Dt.min<10) //если минуты меньше 10, перед ними пишутся "0"
{cout.setf(ios::left);
cout<<setw(6)<<px[N].nomer<<setw(12)<<px[N].outpunkt<<setw(11)<<px[N].inpunkt
<<setw(2)<<px[N].Dt.h<<":"<<"0"<<setw(3)<<px[N].Dt.min<<setw(8)<<px[N].cost<<endl;
}
else
{cout.setf(ios::left);
cout<<setw(6)<<px[N].nomer<<setw(12)<<px[N].outpunkt<<setw(11)<<px[N].inpunkt
<<setw(2)<<px[N].Dt.h<<":"<<setw(4)<<px[N].Dt.min<<setw(8)<<px[N].cost<<endl;
}
cout.setf(ios::left); //выравнивание слева
cout<<"1.Nomer avtobusa\n"<<"2.Punkt otpravleniya\n"<<"3.Punkt naznacheniya\n"<<"4.Vremya otpravleniya\n"<<"5.Stoimost bileta\n"<<"6.menu\n"
<<"Vash vuibor ";cin>>j;
if(cin.good())
//выбор редактируемого поля
switch(j)
{case 1:cout<<"Nomer avtobusa: ";cin>>px[N].nomer;break;
case 2:cout<<"Punkt otpravleniya: ";cin>>px[N].outpunkt;break;
case 3:cout<<"Punkt naznacheniya: ";cin>>px[N].inpunkt;break;
case 4:cout<<"Vremya otpravleniya: ";cin>>px[N].Dt.h>>px[N].Dt.min;break;
case 5:cout<<"Stoimost bileta: ";cin>>px[N].cost;break;
case 6:return;
default :cout<<"Neverniy vuibor\n povtorite\n";getch();
}
else
{cout<<"Oshibka vvoda\n";getch();
cin.clear(); //очистка потока ввода
while(cin.get()!='\n')
return;
}
}
}
void vokzal::add()
{int i;
Perech t,
*p;
if(px==NULL){cout<<"massiv pyst\n";getch();return;}
cout<<"Nomer avtobusa: ";cin>>t.nomer;
cout<<"Punkt otpravleniya: ";cin>>t.outpunkt;
cout<<"Punkt naznacheniya: ";cin>>t.inpunkt;
cout<<"Vremya otpravleniya: ";cin>>t.Dt.h>>t.Dt.min;
cout<<"Stoimost bileta: ";cin>>t.cost;
p=px;
px=new Perech[n+1];
if(px==NULL){cout<<"Net pamyati.\n";getch();return;}
for(i=0;i<n;i++)
px=p;
px[n]=t;
n++;
delete[]p;
cout<<"Zapis dobavlena\n";getch();
}
void vokzal::delt()
{int i,N;
Perech *t;
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
t=new Perech[n-1];
if(t==NULL){cout<<"Net pamyati\n";getch();n=0;return;}
if(n==1){delete[] px;px=NULL;}
else {N=vuibor();
for(i=0;i<N;i++)
t=px;
for(i=N+1;i<n;i++)
t[i-1]=px;
delete[] px;
px=t;
}
n--;cout<<"zapis udalena\n";getch();
}
void vokzal:oisk1()
{ int i,c;
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
cout <<"Nomer avtobusa: "; cin>>c;
f=0;
for (i=0;i<n;i++)
if(px.nomer==c)
{ px[f]=px;
f++;
}
if(f==0) {cout<<"Net takoi zapisi\n";getch();return;}
rezult();return;
}
void vokzal:oisk12()
{ int i;
char h[10];
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
cout <<"Punkt otpravleniya: "; cin>>h;
f=0;
for (i=0;i<n;i++)
if(strcmp(px.outpunkt,h)==0)
{ px[f]=px;
f++;
}
if(f==0) {cout<<"Net takoi zapisi\n";getch();return;}
rezult();return;
}
void vokzal:oisk13()
{ int i;
char h[10];
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
cout <<"Punkt naznacheniya: "; cin>>h;
f=0;
for (i=0;i<n;i++)
if(strcmp(px.inpunkt,h)==0)
{ px[f]=px;
f++;
}
if(f==0) {cout<<"Net takoi zapisi\n";getch();return;}
rezult();return;
}
void vokzal:oisk14()
{ int i,c,m, k;
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
cout <<"Chas otpravleniya: "; cin>>c;
cout<<"Minutui: ";cin>>m;
cout<<"1.Vuivesti zapisi do i vkluchaya "<<c<<":"<<m<<endl;
cout<<"2.Vuivesti zapisi posle "<<c<<":"<<m<<endl;
cin>>k;
f=0;
switch(k)
{case 1:{for (i=0;i<n;i++)
{if(px.Dt.h<c)
{px[f]=px;
f++;
}
if(px.Dt.h==c){if(px.Dt.min<=m)
{px[f]=px;
f++;
}}}}
break;
case 2:
{ for (i=0;i<n;i++)if(px.Dt.h>c)
{px[f]=px;
f++;
}} break;
default :cout<<"Neverniy vuibor\n povtorite\n";getch();}
if(f==0) {cout<<"Net takoi zapisi\n";getch();return;}
rezult(); return ;
}
void vokzal:oisk15()
{ int i,c;
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
cout <<"Stoimost bileta: "; cin>>c;
f=0;
for (i=0;i<n;i++)
if(px.cost==c)
{px[f]=px;
f++;
}
if(f==0) {cout<<"Net takoi zapisi\n";getch();return;}
rezult();return;
}
void vokzal::rezult()
{
int i;
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
clrscr();
cout.setf(ios::left);
cout<<endl<<"Rezultatui poiska\n"<<endl;
cout<<setw(3)<<"N"<<setw(6)<<"Nomer"<<setw(12)<<"Otpravlenie"<<setw(11)<<"Pribuitie"
<<setw(8)<<"Vremya"<<setw(8)<<"Stoimost"<<endl;
for (i=0;i<f;i++)
if(px.Dt.h<10 && px.Dt.min<10)
{cout.setf(ios::left); i++;
cout<<setw(3)<<i<<setw(6)<<px[i-1].nomer<<setw(12)<<px[i-1].outpunkt<<setw(11)<<px[i-1].inpunkt<<"0"
<<setw(1)<<px[i-1].Dt.h<<":"<<"0"<<setw(3)<<px[i-1].Dt.min<<setw(8)<<px[i-1].cost<<endl;i--;
}
else if(px.Dt.h<10)
{cout.setf(ios::left); i++;
cout<<setw(3)<<i<<setw(6)<<px[i-1].nomer<<setw(12)<<px[i-1].outpunkt<<setw(11)<<px[i-1].inpunkt<<"0"
<<setw(1)<<px[i-1].Dt.h<<":"<<setw(4)<<px[i-1].Dt.min<<setw(8)<<px[i-1].cost<<endl; i--;
}
else if(px.Dt.min<10)
{cout.setf(ios::left);i++;
cout<<setw(3)<<i<<setw(6)<<px[i-1].nomer<<setw(12)<<px[i-1].outpunkt<<setw(11)<<px[i-1].inpunkt
<<setw(2)<<px[i-1].Dt.h<<":"<<"0"<<setw(3)<<px[i-1].Dt.min<<setw(8)<<px[i-1].cost<<endl;i--;
}
else
{cout.setf(ios::left);i++;
cout<<setw(3)<<i<<setw(6)<<px[i-1].nomer<<setw(12)<<px[i-1].outpunkt<<setw(11)<<px[i-1].inpunkt
<<setw(2)<<px[i-1].Dt.h<<":"<<setw(4)<<px[i-1].Dt.min<<setw(8)<<px[i-1].cost<<endl;i--;
} getch();
}
void vokzal:oisk2()
{ int i,c;
char h[10];
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
cout <<"Nomer avtobusa: "; cin>> c;
cout <<"Punkt otpravleniya: "; cin>> h;
f=0;
for (i=0;i<n;i++)
if (px.nomer==c && stricmp(px.outpunkt,h)==0)
{ px[f]=px;
f++;
}
if(f==0) {cout<<"Net takoi zapisi\n";getch();return;}
rezult();return;
}
void vokzal:oisk22()
{ int i;
char h[10], c[10];
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
cout <<"Punkt otpravleniya: "; cin>> c;
cout <<"Punkt naznacheniya: "; cin>> h;
f=0;
for (i=0;i<n;i++)
if (stricmp(px.outpunkt,c)==0 && stricmp(px.inpunkt,h)==0)
{ px[f]=px;
f++;
}
if(f==0) {cout<<"Net takoi zapisi\n";getch();return;}
rezult();return;
}
void vokzal:oisk23()
{ int i,c;
char h[10];
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
cout <<"Stoimost bileta: "; cin>> c;
cout <<"Punkt naznacheniya: "; cin>> h;
f=0;
for (i=0;i<n;i++)
if (px.cost==c && stricmp(px.inpunkt,h)==0)
{ px[f]=px;
f++;
}
if(f==0) {cout<<"Net takoi zapisi\n";getch();return;}
rezult();return;
}
void vokzal:oisk24()
{ int i,c,m;
char h[10];
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
cout <<"Chas otpravleniya: "; cin>> c;
cout<<"Minutui: ";cin>>m;
cout <<"Punkt otpravleniya: "; cin>> h;
f=0;
for (i=0;i<n;i++)
if ((px.Dt.h==c) && (px.Dt.min==m) && stricmp(px.outpunkt,h)==0)
{ px[f]=px;
f++;
}
if(f==0) {cout<<"Net takoi zapisi\n";getch();return;}
rezult();return;
}
void vokzal:oisk25()
{ int i,c, h;
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
cout <<"Nomer avtobusa: "; cin>> c;
cout <<"Stoimost bileta: "; cin>> h;
f=0;
for (i=0;i<n;i++)
if ((px.nomer==c) && (px.cost==h))
{ px[f]=px;
f++;
}
if(f==0) {cout<<"Net takoi zapisi\n";getch();return;}
rezult();return;
}
void vokzal::sortBD()
{
int fl,i,l;
Perech t;
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
l=n-1;
do
{
fl=0;
for(i=0;i<l;i++)
if(px.nomer>px[i+1].nomer)
{
t=px;
px=px[i+1];
px[i+1]=t;
fl=1;
}
else if(px.nomer==px[i+1].nomer)
{
if(strcmp(px.outpunkt, px[i+1].outpunkt )>0)
{
t=px;
px=px[i+1];
px[i+1]=t;
fl=1;
}
}
l--;
}
while(fl==1);
output();
return;
}
void vokzal::alfsort()
{
int fl,i,l;
Perech t;
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
l=n-1;
do
{fl=0;
for(i=0;i<l;i++)
if(strcmp(px.outpunkt, px[i+1].outpunkt )>0)
{
t=px;
px=px[i+1];
px[i+1]=t;
fl=1;
}
else if(strcmp(px.outpunkt,px[i+1].outpunkt)==0)
{
if(strcmp(px.inpunkt, px[i+1].inpunkt )>0)
{
t=px;
px=px[i+1];
px[i+1]=t;
fl=1;
}
}
l--;
}
while(fl==1);
output();
return;
}
void vokzal::alfsort2()
{
int fl,i,l;
Perech t;
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
l=n-1;
do
{fl=0;
for(i=0;i<l;i++)
if(strcmp(px.inpunkt, px[i+1].inpunkt )>0)
{
t=px;
px=px[i+1];
px[i+1]=t;
fl=1;
}
else if(strcmp(px.inpunkt,px[i+1].inpunkt)==0)
{
if(px.Dt.h>px[i+1].Dt.h )
{
t=px;
px=px[i+1];
px[i+1]=t;
fl=1;
}
}
l--;
}
while(fl==1);
output();
return;
}
void vokzal::sortBD2()
{
int fl,i,l;
Perech t;
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
l=n-1;
do
{
fl=0;
for(i=0;i<l;i++)
if(px.Dt.h>px[i+1].Dt.h)
{
t=px;
px=px[i+1];
px[i+1]=t;
fl=1;
}
else if(px.Dt.h==px[i+1].Dt.h)
{
if( px.Dt.min>px[i+1].Dt.min)
{
t=px;
px=px[i+1];
px[i+1]=t;
fl=1;
}
}
l--;
}
while(fl==1);
output();
return;
}
void vokzal::sortBD3()
{
int fl,i,l;
Perech t;
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
l=n-1;
do
{
fl=0;
for(i=0;i<l;i++)
if(px.cost>px[i+1].cost)
{
t=px;
px=px[i+1];
px[i+1]=t;
fl=1;
}
else if(px.cost==px[i+1].cost)
{
if(px.nomer==px[i+1].nomer)
{
t=px;
px=px[i+1];
px[i+1]=t;
fl=1;
}
}
l--;
}
while(fl==1);
output();
return;
}
void main ()
{vokzal a;
int j, fl;
while (1)
{clrscr();
cout<<" "<<"1.Novaya baza dannuih\n"
<<" "<<"2.Prosmotr bazui dannuih iz faila\n"
<<" "<<"3.Redaktirovanie bazui dannuih\n"
<<" "<<"4.Dobavlenie novoi zapisi\n"
<<" "<<"5.Udalenie zapisi\n"
<<" "<<"6.Prosmotr bazui dannuih\n"
<<" "<<"7.Poisk po odnomu kriteriui\n"
<<" "<<"8.Poisk po dvum kriteriyam\n"
<<" "<<"9.Sortirovka\n"
<<" "<<"10.Sohranenie bazui dannuih\n"
<<" "<<"0.Vuihod\n"
<<"Vash vuibor:";cin>>j;
if(cin.good())
switch(j)
{case 1:a.newBD();break;
case 2:a.inputfile();a.output();break;
case 3:a.redaktor();break;
case 4:a.add();break;
case 5:a.delt();break;
case 6:a.output();break;
case 7:fl=0;
while(fl==0)
{clrscr();
cout<<"1.Poisk po nomeru avtobusa i po punktu otpravleniya\n"
<<"2.Poisk po punktu otpravleniya i po punktu naznacheniya\n"
<<"3.Poisk po punktu naznacheniya i po stoimosti\n"
<<"4.Poisk po vremeni i po puktu otpravleniya\n"
<<"5.Poisk po stoimosti i po nomeru avtobusa\n"
<<"6.Menu\n";
cout<<"Vash vuibor:";
cin>>j;
if(cin.good())
switch(j)
{case 1:a.poisk1();break;
case 2:a.poisk12();break;
case 3:a.poisk13();break;
case 4:a.poisk14();break;
case 5:a.poisk15();break;
case 6:fl=1; break;
default: cout<<"Net takogo pynkta\n";
cout<<"Povtorite vash vuibor\n";
getch();
}
else{cout<<"Oshibka vvoda\n";
cout<<"Posle nagatiya probela, povtorite vash vuibor\n";
getch();
cin.clear();
while(cin.get()!='\n')
continue;
}
}break;
case 8:while(fl==0)
{clrscr();
cout<<"1.Poisk po nomeru avtobusa\n"
<<"2.Poisk po punktu otpravleniya\n"
<<"3.Poisk po punktu naznacheniya\n"
<<"4.Poisk po vremeni\n"
<<"5.Poisk po stoimosti\n"
<<"6.Menu\n";
cout<<"Vash vuibor:";
cin>>j;
if(cin.good())
switch(j)
{case 1:sortBD();break;
case 2:alfsort();break;
case 3:alfsort2();break;
case 4:sortBD2();break;
case 5:sortBD3();break;
case 6:fl=1; break;
default: cout<<"Net takogo pynkta\n";
cout<<"Povtorite vash vuibor\n";
getch();
}
else{cout<<"Oshibka vvoda\n";
cout<<"Posle nagatiya probela, povtorite vash vuibor\n";
getch();
cin.clear();
while(cin.get()!='\n')
continue;
}
}break;
case 9:while(fl==0)
{clrscr();
cout<<"1.Sortirovka po nomeru avtobusa\n"
<<"2.Sortirovka po punktu otpravleniya\n"
<<"3.Sortirovka po punktu naznacheniya\n"
<<"4.Sortirovka po vremeni\n"
<<"5.Sortirovka po stoimosti\n"
<<"6.Menu\n"
cout<<"Vash vuibor:";
cin>>j;
if(cin.good())
switch(j)
{case 1oisk2();break;
case 2oisk22();break;
case 3oisk23();break;
case 4oisk24();break;
case 5oisk25();break;
case 6:fl=1; break;
default: cout<<"Net takogo pynkta\n";
cout<<"Povtorite vash vuibor\n";
getch();
}
else{cout<<"Oshibka vvoda\n";
cout<<"Posle nagatiya probela, povtorite vash vuibor\n";
getch();
cin.clear();
while(cin.get()!='\n')
continue;
}
}break;
case 10:a.outputFile();break;
case 0:cout<<endl<<"Poka"<<endl;getch ();return;
default :cout<<"Neverniy vuibor\n povtorite\n";getch();
}
else
{cout<<"Oshibka vvoda\n";getch();
cin.clear();
while(cin.get()!='\n')
continue;
}
}
}
#include <iostream.h>
#include <conio.h>
#include <fstream.h>
#include <string.h>
#include <iomanip.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
struct Time //Структура времени
{int h, //час
min;}; //минута
struct Perech //основная структура
{int nomer; //номер
char outpunkt[20]; //пункт отправления
char inpunkt[20]; //пункт назначения
Time Dt; //прототип структуры времени
int cost;}; //стоимость
class vokzal //класс динамический массив структур
{
private:
Perech *px; //указатель на массив записей
int n; //число строк в массиве
int f; //число найденных строк
public:
vokzal(){n=0;px=NULL;} //конструктор
~vokzal(){n=0;if(px!=NULL)delete[]px;} //деструктор
void inputfile(); //ввод БД из файла
void newBD(); //создание новой БД
void output(); //вывод БД на экран
void redaktor(); //редактирование БД
int vuibor(); //выбор нужной строки
void outputFile(); //сохранение БД в файл
void add(); //добавление новой записи
void delt(); //удаление записи
void poisk1(); //поиск по номеру автобуса
void rezult(); //вывод результатов поиска на экран
void poisk2(); //поиск по номеру автобуса и по пункту отправления
void sortBD(); //сортировка по номеру
void alfsort(); //сортировка по пункту отправления
void alfsort2(); //сортировка по пункту назначения
void sortBD2(); //сортировка по времени
void sortBD3(); //сортировка по стоимости билета
void poisk12(); //поиск по пункту отправления
void poisk13(); //поиск по пункту назначения
void poisk14(); //поиск по времени
void poisk15(); //поиск по стоимости билета
void poisk22(); //поиск по пункту отправления и по пункту назначения
void poisk23(); //поиск по стоимости билета и по пункту назначения
void poisk24(); //поиск по времени и по пункту отправления
void poisk25(); //поиск по номеру автобуса и по стоимости билета
};
void vokzal::inputfile() //ввод БД из файла
{ifstream fin;
int i; //рабочая переменная для подсчёта
Perech t; //рабочая переменная для подсчёта записей в файле
char file[10]; //переменная для названия файла
if(px!=NULL){delete[]px;n=0;px=NULL;} //очистка рабочей области(массива)
cout<<"Imya vhodnogo faila: ";cin>>file;
fin.open(file);
if(fin==NULL){cout<<file<<" Ne otkruit\n";getch();return;}
n=0;
//подсчёт записей в файле
do{fin>>t.nomer>>t.outpunkt>>t.inpunkt>>t.Dt.h>>t.Dt.min>>t.cost;
n++;
} while(fin.good()); //пока файл не закончился
n--;
fin.close();
px=new Perech[n]; //выделение динамической памти
if(px==NULL){cout<<"Net pamyati\n";n=0;getch();return;}
fin.open(file);
if(fin==NULL){cout<<file<<" Ne otkruit\n";getch();return;}
//ввод массива задолжников из файла
for(i=0;i<n;i++)
{fin>>px.nomer>>px.outpunkt>>px.inpunkt>>px.Dt.h>>px.Dt.min>>px.cost;
}
fin.close();
}
void vokzal:utputFile() //сохранение БД в файл
{ofstream fout;
char file[20]; //переменная для названия файла
int i; //рабочая переменная для подсчёта
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
cout<<"Vvedite fail dlya sohraneniya: ";cin>>file;
fout.open(file,ios:ut|ios::trunc);
if(fout.fail()){cout<<file<<" Ne sozdan\n";getch();n=0;px=NULL;return;}
//запись БД в файл
for(i=0;i<n;i++)
{fout.setf(ios::left);
fout<<setw(6)<<px.nomer<<setw(12)<<px.outpunkt<<setw(11)<<px.inpunkt
<<setw(3)<<px.Dt.h<<setw(4)<<px.Dt.min<<setw(8)<<px.cost<<endl;
}
cout<<"Baza dannuih sohranena\n";getch();
}
void vokzal::newBD() //создание новой БД
{int i; //рабочая переменная для подсчёта
cout<<"Kolichestvo zapisey=";cin>>n;
if(px!=NULL)delete[] px; //очистка рабочей области(массива)
px=new Perech[n]; //выделение динамической памяти
if(px==NULL){cout<<"Net pamyati\n";getch();n=0;return;}
//создание базы данных
for(i=0;i<n;i++)
{cout<<"Nomer avtobusa:";cin>>px.nomer;
cout<<"Punkt otpravleniya: ";cin>>px.outpunkt;
cout<<"Punkt naznacheniya: ";cin>>px.inpunkt;
cout<<"Vremya otpravleniya: ";cin>>px.Dt.h>>px.Dt.min;
cout<<"Stoimost bileta: ";cin>>px.cost;
cout<<endl;
}cout<<"Baza dannuih sozdana";getch();
}
void vokzal:utput() //вывод БД на экран
{int i; //переменная для подсчёта
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
clrscr(); //очистка экрана
cout.setf(ios::left); //выравнивание слева
cout<<endl<<"Baza dannuih 'Avtovokzal'\n"<<endl;
cout<<"N"<<" "<<setw(6)<<"Nomer"<<setw(12)<<"Otpravlenie"<<setw(11)<<"Pribuitie"
<<setw(7)<<"Vremya"<<setw(8)<<"Stoimost"<<endl;
//вывод БД на экран
for(i=0;i<n;i++)
if(px.Dt.h<10 && px.Dt.min<10) //если часы и минуты меньше 10, перед ними пишутся "0"
{cout.setf(ios::left); i++;
cout<<setw(3)<<i<<setw(6)<<px[i-1].nomer<<setw(12)<<px[i-1].outpunkt<<setw(11)<<px[i-1].inpunkt<<"0"
<<setw(1)<<px[i-1].Dt.h<<":"<<"0"<<setw(3)<<px[i-1].Dt.min<<setw(8)<<px[i-1].cost<<endl;
i--; }
else if(px.Dt.h<10) //если часы меньше 10, перед ними пишутся "0"
{cout.setf(ios::left); i++;
cout<<setw(3)<<i<<setw(6)<<px[i-1].nomer<<setw(12)<<px[i-1].outpunkt<<setw(11)<<px[i-1].inpunkt<<"0"
<<setw(1)<<px[i-1].Dt.h<<":"<<setw(4)<<px[i-1].Dt.min<<setw(8)<<px[i-1].cost<<endl;
i-- ;}
else if(px.Dt.min<10) //если минуты меньше 10, перед ними пишутся "0"
{cout.setf(ios::left); i++;
cout<<setw(3)<<i<<setw(6)<<px[i-1].nomer<<setw(12)<<px[i-1].outpunkt<<setw(11)<<px[i-1].inpunkt
<<setw(2)<<px[i-1].Dt.h<<":"<<"0"<<setw(3)<<px[i-1].Dt.min<<setw(8)<<px[i-1].cost<<endl;
i--;}
else
{cout.setf(ios::left); i++;
cout<<setw(3)<<i<<setw(6)<<px[i-1].nomer<<setw(12)<<px[i-1].outpunkt<<setw(11)<<px[i-1].inpunkt
<<setw(2)<<px[i-1].Dt.h<<":"<<setw(4)<<px[i-1].Dt.min<<setw(8)<<px[i-1].cost<<endl;
i--;} ;
getch();
}
int vokzal::vuibor() //выбор нужной строки
{int k; //рабочая переменная для выбора строки
cout.setf(ios::left); //выравнивание слева
output(); //вызывается функция вывода БД на экран
cout<<"Vuiberite stroku: ";cin>>k;
if(k<0|| k>n+1){cout<<"Net takoi stroki\n";getch();}
k--;
return k;
}
void vokzal::redaktor() //редактирование БД
{int j, //рабочая переменная для выбора пункта
N; //рабочая переменная для вызова функции
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
N=vuibor(); //вызывается функция выбора строки
while(1)
{clrscr(); //очистка экрана
if(px[N].Dt.h<10 && px[N].Dt.min<10) //если часы и минуты меньше 10, перед ними пишутся "0"
{cout.setf(ios::left);
cout<<setw(6)<<px[N].nomer<<setw(12)<<px[N].outpunkt<<setw(11)<<px[N].inpunkt<<"0"
<<setw(1)<<px[N].Dt.h<<":"<<"0"<<setw(3)<<px[N].Dt.min<<setw(8)<<px[N].cost<<endl;
}
else if(px[N].Dt.h<10) //если часы меньше 10, перед ними пишутся "0"
{cout.setf(ios::left);
cout<<setw(6)<<px[N].nomer<<setw(12)<<px[N].outpunkt<<setw(11)<<px[N].inpunkt<<"0"
<<setw(1)<<px[N].Dt.h<<":"<<setw(4)<<px[N].Dt.min<<setw(8)<<px[N].cost<<endl;
}
else if(px[N].Dt.min<10) //если минуты меньше 10, перед ними пишутся "0"
{cout.setf(ios::left);
cout<<setw(6)<<px[N].nomer<<setw(12)<<px[N].outpunkt<<setw(11)<<px[N].inpunkt
<<setw(2)<<px[N].Dt.h<<":"<<"0"<<setw(3)<<px[N].Dt.min<<setw(8)<<px[N].cost<<endl;
}
else
{cout.setf(ios::left);
cout<<setw(6)<<px[N].nomer<<setw(12)<<px[N].outpunkt<<setw(11)<<px[N].inpunkt
<<setw(2)<<px[N].Dt.h<<":"<<setw(4)<<px[N].Dt.min<<setw(8)<<px[N].cost<<endl;
}
cout.setf(ios::left); //выравнивание слева
cout<<"1.Nomer avtobusa\n"<<"2.Punkt otpravleniya\n"<<"3.Punkt naznacheniya\n"<<"4.Vremya otpravleniya\n"<<"5.Stoimost bileta\n"<<"6.menu\n"
<<"Vash vuibor ";cin>>j;
if(cin.good())
//выбор редактируемого поля
switch(j)
{case 1:cout<<"Nomer avtobusa: ";cin>>px[N].nomer;break;
case 2:cout<<"Punkt otpravleniya: ";cin>>px[N].outpunkt;break;
case 3:cout<<"Punkt naznacheniya: ";cin>>px[N].inpunkt;break;
case 4:cout<<"Vremya otpravleniya: ";cin>>px[N].Dt.h>>px[N].Dt.min;break;
case 5:cout<<"Stoimost bileta: ";cin>>px[N].cost;break;
case 6:return;
default :cout<<"Neverniy vuibor\n povtorite\n";getch();
}
else
{cout<<"Oshibka vvoda\n";getch();
cin.clear(); //очистка потока ввода
while(cin.get()!='\n')
return;
}
}
}
void vokzal::add()
{int i;
Perech t,
*p;
if(px==NULL){cout<<"massiv pyst\n";getch();return;}
cout<<"Nomer avtobusa: ";cin>>t.nomer;
cout<<"Punkt otpravleniya: ";cin>>t.outpunkt;
cout<<"Punkt naznacheniya: ";cin>>t.inpunkt;
cout<<"Vremya otpravleniya: ";cin>>t.Dt.h>>t.Dt.min;
cout<<"Stoimost bileta: ";cin>>t.cost;
p=px;
px=new Perech[n+1];
if(px==NULL){cout<<"Net pamyati.\n";getch();return;}
for(i=0;i<n;i++)
px=p;
px[n]=t;
n++;
delete[]p;
cout<<"Zapis dobavlena\n";getch();
}
void vokzal::delt()
{int i,N;
Perech *t;
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
t=new Perech[n-1];
if(t==NULL){cout<<"Net pamyati\n";getch();n=0;return;}
if(n==1){delete[] px;px=NULL;}
else {N=vuibor();
for(i=0;i<N;i++)
t=px;
for(i=N+1;i<n;i++)
t[i-1]=px;
delete[] px;
px=t;
}
n--;cout<<"zapis udalena\n";getch();
}
void vokzal:oisk1()
{ int i,c;
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
cout <<"Nomer avtobusa: "; cin>>c;
f=0;
for (i=0;i<n;i++)
if(px.nomer==c)
{ px[f]=px;
f++;
}
if(f==0) {cout<<"Net takoi zapisi\n";getch();return;}
rezult();return;
}
void vokzal:oisk12()
{ int i;
char h[10];
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
cout <<"Punkt otpravleniya: "; cin>>h;
f=0;
for (i=0;i<n;i++)
if(strcmp(px.outpunkt,h)==0)
{ px[f]=px;
f++;
}
if(f==0) {cout<<"Net takoi zapisi\n";getch();return;}
rezult();return;
}
void vokzal:oisk13()
{ int i;
char h[10];
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
cout <<"Punkt naznacheniya: "; cin>>h;
f=0;
for (i=0;i<n;i++)
if(strcmp(px.inpunkt,h)==0)
{ px[f]=px;
f++;
}
if(f==0) {cout<<"Net takoi zapisi\n";getch();return;}
rezult();return;
}
void vokzal:oisk14()
{ int i,c,m, k;
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
cout <<"Chas otpravleniya: "; cin>>c;
cout<<"Minutui: ";cin>>m;
cout<<"1.Vuivesti zapisi do i vkluchaya "<<c<<":"<<m<<endl;
cout<<"2.Vuivesti zapisi posle "<<c<<":"<<m<<endl;
cin>>k;
f=0;
switch(k)
{case 1:{for (i=0;i<n;i++)
{if(px.Dt.h<c)
{px[f]=px;
f++;
}
if(px.Dt.h==c){if(px.Dt.min<=m)
{px[f]=px;
f++;
}}}}
break;
case 2:
{ for (i=0;i<n;i++)if(px.Dt.h>c)
{px[f]=px;
f++;
}} break;
default :cout<<"Neverniy vuibor\n povtorite\n";getch();}
if(f==0) {cout<<"Net takoi zapisi\n";getch();return;}
rezult(); return ;
}
void vokzal:oisk15()
{ int i,c;
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
cout <<"Stoimost bileta: "; cin>>c;
f=0;
for (i=0;i<n;i++)
if(px.cost==c)
{px[f]=px;
f++;
}
if(f==0) {cout<<"Net takoi zapisi\n";getch();return;}
rezult();return;
}
void vokzal::rezult()
{
int i;
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
clrscr();
cout.setf(ios::left);
cout<<endl<<"Rezultatui poiska\n"<<endl;
cout<<setw(3)<<"N"<<setw(6)<<"Nomer"<<setw(12)<<"Otpravlenie"<<setw(11)<<"Pribuitie"
<<setw(8)<<"Vremya"<<setw(8)<<"Stoimost"<<endl;
for (i=0;i<f;i++)
if(px.Dt.h<10 && px.Dt.min<10)
{cout.setf(ios::left); i++;
cout<<setw(3)<<i<<setw(6)<<px[i-1].nomer<<setw(12)<<px[i-1].outpunkt<<setw(11)<<px[i-1].inpunkt<<"0"
<<setw(1)<<px[i-1].Dt.h<<":"<<"0"<<setw(3)<<px[i-1].Dt.min<<setw(8)<<px[i-1].cost<<endl;i--;
}
else if(px.Dt.h<10)
{cout.setf(ios::left); i++;
cout<<setw(3)<<i<<setw(6)<<px[i-1].nomer<<setw(12)<<px[i-1].outpunkt<<setw(11)<<px[i-1].inpunkt<<"0"
<<setw(1)<<px[i-1].Dt.h<<":"<<setw(4)<<px[i-1].Dt.min<<setw(8)<<px[i-1].cost<<endl; i--;
}
else if(px.Dt.min<10)
{cout.setf(ios::left);i++;
cout<<setw(3)<<i<<setw(6)<<px[i-1].nomer<<setw(12)<<px[i-1].outpunkt<<setw(11)<<px[i-1].inpunkt
<<setw(2)<<px[i-1].Dt.h<<":"<<"0"<<setw(3)<<px[i-1].Dt.min<<setw(8)<<px[i-1].cost<<endl;i--;
}
else
{cout.setf(ios::left);i++;
cout<<setw(3)<<i<<setw(6)<<px[i-1].nomer<<setw(12)<<px[i-1].outpunkt<<setw(11)<<px[i-1].inpunkt
<<setw(2)<<px[i-1].Dt.h<<":"<<setw(4)<<px[i-1].Dt.min<<setw(8)<<px[i-1].cost<<endl;i--;
} getch();
}
void vokzal:oisk2()
{ int i,c;
char h[10];
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
cout <<"Nomer avtobusa: "; cin>> c;
cout <<"Punkt otpravleniya: "; cin>> h;
f=0;
for (i=0;i<n;i++)
if (px.nomer==c && stricmp(px.outpunkt,h)==0)
{ px[f]=px;
f++;
}
if(f==0) {cout<<"Net takoi zapisi\n";getch();return;}
rezult();return;
}
void vokzal:oisk22()
{ int i;
char h[10], c[10];
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
cout <<"Punkt otpravleniya: "; cin>> c;
cout <<"Punkt naznacheniya: "; cin>> h;
f=0;
for (i=0;i<n;i++)
if (stricmp(px.outpunkt,c)==0 && stricmp(px.inpunkt,h)==0)
{ px[f]=px;
f++;
}
if(f==0) {cout<<"Net takoi zapisi\n";getch();return;}
rezult();return;
}
void vokzal:oisk23()
{ int i,c;
char h[10];
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
cout <<"Stoimost bileta: "; cin>> c;
cout <<"Punkt naznacheniya: "; cin>> h;
f=0;
for (i=0;i<n;i++)
if (px.cost==c && stricmp(px.inpunkt,h)==0)
{ px[f]=px;
f++;
}
if(f==0) {cout<<"Net takoi zapisi\n";getch();return;}
rezult();return;
}
void vokzal:oisk24()
{ int i,c,m;
char h[10];
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
cout <<"Chas otpravleniya: "; cin>> c;
cout<<"Minutui: ";cin>>m;
cout <<"Punkt otpravleniya: "; cin>> h;
f=0;
for (i=0;i<n;i++)
if ((px.Dt.h==c) && (px.Dt.min==m) && stricmp(px.outpunkt,h)==0)
{ px[f]=px;
f++;
}
if(f==0) {cout<<"Net takoi zapisi\n";getch();return;}
rezult();return;
}
void vokzal:oisk25()
{ int i,c, h;
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
cout <<"Nomer avtobusa: "; cin>> c;
cout <<"Stoimost bileta: "; cin>> h;
f=0;
for (i=0;i<n;i++)
if ((px.nomer==c) && (px.cost==h))
{ px[f]=px;
f++;
}
if(f==0) {cout<<"Net takoi zapisi\n";getch();return;}
rezult();return;
}
void vokzal::sortBD()
{
int fl,i,l;
Perech t;
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
l=n-1;
do
{
fl=0;
for(i=0;i<l;i++)
if(px.nomer>px[i+1].nomer)
{
t=px;
px=px[i+1];
px[i+1]=t;
fl=1;
}
else if(px.nomer==px[i+1].nomer)
{
if(strcmp(px.outpunkt, px[i+1].outpunkt )>0)
{
t=px;
px=px[i+1];
px[i+1]=t;
fl=1;
}
}
l--;
}
while(fl==1);
output();
return;
}
void vokzal::alfsort()
{
int fl,i,l;
Perech t;
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
l=n-1;
do
{fl=0;
for(i=0;i<l;i++)
if(strcmp(px.outpunkt, px[i+1].outpunkt )>0)
{
t=px;
px=px[i+1];
px[i+1]=t;
fl=1;
}
else if(strcmp(px.outpunkt,px[i+1].outpunkt)==0)
{
if(strcmp(px.inpunkt, px[i+1].inpunkt )>0)
{
t=px;
px=px[i+1];
px[i+1]=t;
fl=1;
}
}
l--;
}
while(fl==1);
output();
return;
}
void vokzal::alfsort2()
{
int fl,i,l;
Perech t;
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
l=n-1;
do
{fl=0;
for(i=0;i<l;i++)
if(strcmp(px.inpunkt, px[i+1].inpunkt )>0)
{
t=px;
px=px[i+1];
px[i+1]=t;
fl=1;
}
else if(strcmp(px.inpunkt,px[i+1].inpunkt)==0)
{
if(px.Dt.h>px[i+1].Dt.h )
{
t=px;
px=px[i+1];
px[i+1]=t;
fl=1;
}
}
l--;
}
while(fl==1);
output();
return;
}
void vokzal::sortBD2()
{
int fl,i,l;
Perech t;
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
l=n-1;
do
{
fl=0;
for(i=0;i<l;i++)
if(px.Dt.h>px[i+1].Dt.h)
{
t=px;
px=px[i+1];
px[i+1]=t;
fl=1;
}
else if(px.Dt.h==px[i+1].Dt.h)
{
if( px.Dt.min>px[i+1].Dt.min)
{
t=px;
px=px[i+1];
px[i+1]=t;
fl=1;
}
}
l--;
}
while(fl==1);
output();
return;
}
void vokzal::sortBD3()
{
int fl,i,l;
Perech t;
if(px==NULL){cout<<"Massiv pust\n";getch();return;}
l=n-1;
do
{
fl=0;
for(i=0;i<l;i++)
if(px.cost>px[i+1].cost)
{
t=px;
px=px[i+1];
px[i+1]=t;
fl=1;
}
else if(px.cost==px[i+1].cost)
{
if(px.nomer==px[i+1].nomer)
{
t=px;
px=px[i+1];
px[i+1]=t;
fl=1;
}
}
l--;
}
while(fl==1);
output();
return;
}
void main ()
{vokzal a;
int j, fl;
while (1)
{clrscr();
cout<<" "<<"1.Novaya baza dannuih\n"
<<" "<<"2.Prosmotr bazui dannuih iz faila\n"
<<" "<<"3.Redaktirovanie bazui dannuih\n"
<<" "<<"4.Dobavlenie novoi zapisi\n"
<<" "<<"5.Udalenie zapisi\n"
<<" "<<"6.Prosmotr bazui dannuih\n"
<<" "<<"7.Poisk po odnomu kriteriui\n"
<<" "<<"8.Poisk po dvum kriteriyam\n"
<<" "<<"9.Sortirovka\n"
<<" "<<"10.Sohranenie bazui dannuih\n"
<<" "<<"0.Vuihod\n"
<<"Vash vuibor:";cin>>j;
if(cin.good())
switch(j)
{case 1:a.newBD();break;
case 2:a.inputfile();a.output();break;
case 3:a.redaktor();break;
case 4:a.add();break;
case 5:a.delt();break;
case 6:a.output();break;
case 7:fl=0;
while(fl==0)
{clrscr();
cout<<"1.Poisk po nomeru avtobusa i po punktu otpravleniya\n"
<<"2.Poisk po punktu otpravleniya i po punktu naznacheniya\n"
<<"3.Poisk po punktu naznacheniya i po stoimosti\n"
<<"4.Poisk po vremeni i po puktu otpravleniya\n"
<<"5.Poisk po stoimosti i po nomeru avtobusa\n"
<<"6.Menu\n";
cout<<"Vash vuibor:";
cin>>j;
if(cin.good())
switch(j)
{case 1:a.poisk1();break;
case 2:a.poisk12();break;
case 3:a.poisk13();break;
case 4:a.poisk14();break;
case 5:a.poisk15();break;
case 6:fl=1; break;
default: cout<<"Net takogo pynkta\n";
cout<<"Povtorite vash vuibor\n";
getch();
}
else{cout<<"Oshibka vvoda\n";
cout<<"Posle nagatiya probela, povtorite vash vuibor\n";
getch();
cin.clear();
while(cin.get()!='\n')
continue;
}
}break;
case 8:while(fl==0)
{clrscr();
cout<<"1.Poisk po nomeru avtobusa\n"
<<"2.Poisk po punktu otpravleniya\n"
<<"3.Poisk po punktu naznacheniya\n"
<<"4.Poisk po vremeni\n"
<<"5.Poisk po stoimosti\n"
<<"6.Menu\n";
cout<<"Vash vuibor:";
cin>>j;
if(cin.good())
switch(j)
{case 1:sortBD();break;
case 2:alfsort();break;
case 3:alfsort2();break;
case 4:sortBD2();break;
case 5:sortBD3();break;
case 6:fl=1; break;
default: cout<<"Net takogo pynkta\n";
cout<<"Povtorite vash vuibor\n";
getch();
}
else{cout<<"Oshibka vvoda\n";
cout<<"Posle nagatiya probela, povtorite vash vuibor\n";
getch();
cin.clear();
while(cin.get()!='\n')
continue;
}
}break;
case 9:while(fl==0)
{clrscr();
cout<<"1.Sortirovka po nomeru avtobusa\n"
<<"2.Sortirovka po punktu otpravleniya\n"
<<"3.Sortirovka po punktu naznacheniya\n"
<<"4.Sortirovka po vremeni\n"
<<"5.Sortirovka po stoimosti\n"
<<"6.Menu\n"
cout<<"Vash vuibor:";
cin>>j;
if(cin.good())
switch(j)
{case 1oisk2();break;
case 2oisk22();break;
case 3oisk23();break;
case 4oisk24();break;
case 5oisk25();break;
case 6:fl=1; break;
default: cout<<"Net takogo pynkta\n";
cout<<"Povtorite vash vuibor\n";
getch();
}
else{cout<<"Oshibka vvoda\n";
cout<<"Posle nagatiya probela, povtorite vash vuibor\n";
getch();
cin.clear();
while(cin.get()!='\n')
continue;
}
}break;
case 10:a.outputFile();break;
case 0:cout<<endl<<"Poka"<<endl;getch ();return;
default :cout<<"Neverniy vuibor\n povtorite\n";getch();
}
else
{cout<<"Oshibka vvoda\n";getch();
cin.clear();
while(cin.get()!='\n')
continue;
}
}
}