Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на C / C++ / Курсовая работа - Счета за ремонтные работы.doc
Скачиваний:
153
Добавлен:
02.05.2014
Размер:
1.03 Mб
Скачать

3. Конструкторы и деструкторы

dannie::~dannie() //деструктор возвращения памяти (очистка данных массивов)

{if(m>0) delete []x;

if(k>0) delete []y;

if(s>0) delete []z;

if(f>0) delete []c;

if(p>0) delete []v;

}

dannie::dannie(dannie&w) //конструктор копирования

{int i;

m=w.m;

k=w.k;

s=w.s;

f=w.f;

p=w.p;

x=new FIRMA[m];

y=new FIRMA[k];

z=new FIRMA[s];

c=new FIRMA[f];

v=new FIRMA[p];

for(i=0;i<m;i++)

x[i]=w.x[i];

for(i=0;i<k;i++)

y[i]=w.y[i];

for(i=0;i<s;i++)

z[i]=w.z[i];

for(i=0;i<f;i++)

c[i]=w.c[i];

for(i=0;i<p;i++)

v[i]=w.v[i];

}

4. Подпрограммы

void dannie::xinputfile() // загрузка данных из файла

{ ifstream fin;

delete []x;

FIRMA t;

int i;

char file[L];

cout<<"Ima vhodnogo faila:";

cin>>file; //ввод пути к нужному файлу

fin.open(file); //открытие файла

if(fin.fail()){cout<<file<<"Ne otkr\n";getch();exit(1);}

m=0;

do{ //цикл подсчёта кол-ва строк данных

fin>>naz0>>vid0>>edn0>>st0>>dt10>>dt20>>dt30>>om0;

m++;

} while(fin.good());

m--;

fin.close(); //закрытие файла

x=newFIRMA[m]; //создание нового динамического массива

if(x==NULL){cout<<"Net pamati!";getch();exit(1);}

fin.open(file); //открытие файла

if(fin.fail()){cout<<file<<"Ne otkr\n";getch();exit(1);}

for(i=0;i<m;i++) //цикл записи данных в созданный массив

{fin>>naz0>>vid0>>edn0>>st0>>dt10>>dt20>>dt30>>om0;

x[i].set_naz(naz0);

x[i].get().set_vid(vid0);

x[i].get().set_edn(edn0);

x[i].get().set_st(st0);

x[i].set_dt1(dt10);

x[i].set_dt2(dt20);

x[i].set_dt3(dt30);

x[i].set_om(om0);

}

fin.close(); //закрытие файла

}

voiddannie::xoutput() //вывод на экран загруженных из файла данных

{ inti;

cout.setf(ios::left); //манипулятор выравнивания текста по левому краю

cout<<setw(17)<<"FIRMA"<<setw(17)<<"VID"<<setw(13)<<"EDINICA"<<setw(13)<<"STOIMOST"<<setw(9)<<"DATA"<<setw(10)<<"OBEM"<<endl<<endl;

for(i=0;i<m;i++) //цикл вывода на экран загруженных из файла данных

cout<<setw(17)<<x[i].get_naz()<<setw(17)<<x[i].get().get_vid()<<setw(13)<<x[i].get().get_edn()<<setw(10)<<x[i].get().get_st()<<setw(3)<<x[i].get_dt1()<<setw(3)<<x[i].get_dt2()<<setw(6)<<x[i].get_dt3()<<setw(10)<<x[i].get_om()<<endl;

}

voiddannie::xoutputfile() //сохранение исходных данных в текстовый файл

{ofstream mout;

int i;

char file[L];

cout<<"Sohranenie faila: Vvedite ima:\n";

cin>>file; //ввод пути для сохранения файла

cout<<endl;

mout.open(file); //открытие нового файла

if(mout.fail()){cout<<"Ne otkr\n";

getch();exit(1);

}

for(i=0;i<m;i++) // цикл записи данных в файл

{

mout<<x[i].get_naz()<<endl;

mout<<x[i].get().get_vid()<<endl;

mout<<x[i].get().get_edn()<<endl;

mout<<x[i].get().get_st()<<endl;

mout<<x[i].get_dt1()<<endl;

mout<<x[i].get_dt2()<<endl;

mout<<x[i].get_dt3()<<endl;

mout<<x[i].get_om()<<endl;

}

mout.close(); //закрытие созданного файла

}

voiddannie::xadd() //добавление записи в таблицу данных

{FIRMA t;

if(m==L){cout<<" Massiv zapolnen";

getch();return;}

cout<<"FIRMA: "; cin>>naz0; // начало ввода нужных данных

cout<<"VID: "; cin>>vid0;

cout<<"EDINICA: "; cin>>edn0;

cout<<"STOIMOST: ";cin>>st0;

cout<<"DATA: Day: ";cin>>dt10;

cout<<"Month: ";cin>>dt20;

cout<<"Year: ";cin>>dt30;

cout<<"OBEM: ";cin>>om0; //конец ввода нужных данных

t.set_naz(naz0);

t.get().set_vid(vid0);

t.get().set_edn(edn0);

t.get().set_st(st0);

t.set_dt1(dt10);

t.set_dt2(dt20);

t.set_dt3(dt30);

t.set_om(om0);

x[m]=t;m++; //добавление строки в таблицу данных

}

voiddannie::xdelet() //удаление строки из таблицы данных

{FIRMA t;

int i;

cout<<"FIRMA: ";cin>>t.get_naz(); //ввод данных строки, которую нужно удалить

cout<<"VID: ";cin>>t.get().get_vid();

for(i=0;i<m;i++) //цикл поиска нужной строки

if(sravndn(t,x[i])==0)break;

if(i==m){cout<<"Net . ";getch();}

else

xdelet(i); //удаление строки

}

intsravndn(FIRMAf1,FIRMAf2); //прототип функции сравнения двух строк по виду

intsravndn(FIRMAf1,FIRMAf2) //сравнение двух строк по названию и виду

{if(strcmp(f1.get_naz(),f2.get_naz())>0)return 1;

if(strcmp(f1.get_naz(),f2.get_naz())<0)return (-1);

if(strcmp(f1.get().get_vid(),f2.get().get_vid())>0)return 1;

if(strcmp(f1.get().get_vid(),f2.get().get_vid())<0)return (-1);

return 0;

}

void dannie::xdelet(int j) // подпрограмма удаления строки

{ int i;

if(j<0||j>=m) {cout<<"Net takoi stroki."; getch(); return;}

for(i=j+1; i<m; i++)

x[i-1]=x[i];

m--;

}

voiddannie::xalfsortfirm() // алфавитная сортировка по названию фирмы

{int i,n,fl;

FIRMA t;

n=m;

do{ fl=0;n--;

for(i=0;i<n;i++) //цикл сравнения и перестановки строк

if(strcmp(x[i].get_naz(),x[i+1].get_naz())>0)

{t=x[i];

x[i]=x[i+1];

x[i+1]=t;

fl=1;}

}while(fl==1);

}

voiddannie::xalfsortvid() //алфавитная сортировка по видам работы

{int i,n,fl;

FIRMA t;

n=m;

do{ fl=0;n--;

for(i=0;i<n;i++) //цикл сравнения и перестановки строк

if(strcmp(x[i].get().get_vid(),x[i+1].get().get_vid())>0)

{t=x[i];

x[i]=x[i+1];

x[i+1]=t;

fl=1;}

}while(fl==1);

}

voiddannie::xsortom() //числовая сортировка по объёму исполненной работы

{int i,fl;

FIRMA t;

do{fl=0;

for(i=0;i<m-1;i++) //цикл сравнения и перестановки строк

if(x[i].get_om()<x[i+1].get_om())

{t=x[i];

x[i]=x[i+1];

x[i+1]=t;

fl=1;

}

}

while(fl==1);

}

voiddannie::yperechen() //перечень видов работ

{int i,s,j,fl,n;

delete []y;

FIRMA t;

k=0;

n=m;

y=newFIRMA[n]; //создание нового динамического массива для перечня

if(y==NULL){cout<<"Net pamati!";getch();exit(1);}

for(i=0;i<n;i++)

{ fl=0;

for(j=0;j<k;j++) //цикл подсчёта количества

if(strcmp(x[i].get().get_vid(),y[j].get().get_vid())==0)

{fl=1;

ng0++;

y[j].set_ng(ng0);

break;

}

if(fl==0)

{strcpy(y[k].get().get_vid(),x[i].get().get_vid()); //присваивание строки одного массива к другому

ng0=1;

y[k].set_ng(ng0);

k++;

}

}}

void dannie::youtput() // вывод на экран перечня видов

{int i;

cout.setf(ios::left);

cout<<" "<<setw(15)<<"VID RABOTI"<<setw(5)<<"KOl-VO"<<endl;

for(i=0;i<k;i++) //цикл вывода на экран данных массива

cout<<i+1<<" "<<setw(15)<<y[i].get().get_vid()<<" "<<setw(5)<<y[i].get_ng()<<endl;

}

voiddannie::ysortvid() //алфавитная сортировка перечня по видам работы

{int i,fl,n;

FIRMA t;

n=k;

do{ fl=0;n--;

for(i=0;i<n;i++) //цикл сравнения и перестановки строк

if(strcmp(y[i].get().get_vid(),y[i+1].get().get_vid())>0)

{t=y[i];

y[i]=y[i+1];

y[i+1]=t;

fl=1;}

}while(fl==1); }

voiddannie::ysortkolvo() //сортировка перечня по количеству

{{int i,fl;

FIRMA t;

do{fl=0;

for(i=0;i<k-1;i++) //цикл сравнения и перестановки строк

if(y[i].get_ng()<y[i+1].get_ng())

{t=y[i];

y[i]=y[i+1];

y[i+1]=t;

fl=1;

}

}

while(fl==1);

}

}

void dannie::youtputbinfile() // сохранение перечня в бинарный файл

{ofstream fout;

char file[L];

cout<<"Ima faila: ";

cin>>file; //ввод пути для сохранения файла

fout.open(file,ios::out|ios::binary); //открытие бинарного файла

if(fout.fail()){ cout<<file<<"Ne sozdan.\n";

getch();

exit(1);}

fout.write((char *)y,k*sizeof(FIRMA)); // запись данных в файл

fout.close(); //закрытие бинарного файла

}

voiddannie::yinputfile() //загрузка данных из бинарного файла

{delete []y;

k=0;

ifstream fin;

int nn;

char file[L];

cout<<"Ima faila: ";

cin>>file; //ввод пути к нужному файлу

fin.open(file,ios::in |ios::binary); // открытие файла

if(fin.fail()){ cout<<file<<"Ne otkrit.\n";

getch();

exit(1);}

fin.seekg(0,ios::end); // подсчёт количества строк

k=fin.tellg()/sizeof(FIRMA); //запись количества в переменную k

nn=fin.tellg();

y=newFIRMA[k]; //создание массива для записи данных

fin.seekg(0,ios::beg);

fin.read((char*)y,nn); //запись данных в массив

fin.close(); //закрытие файла

}

voidmenu1(danniewt); //прототип функции подменю для работы с перечнем видов работ

voidmenu1(danniewt) //подменю для работы с перечнем видов работ

{intj;

while(1) //цикл меню

{clrscr();

cout<<endl;

cout<<"1.Prosmotr perechna.\n ";

cout<<"2.Alfavitnaia sortirovka po vidu.\n";

cout<<"3.Sortirovka po kol-vy.\n";

cout<<"4.Sohranenie v fail.\n";

cout<<"5.Zagruzka iz faila.\n";

cout<<"6.Vozvrat v glavnoe menu.\n";

cin>>j;

switch(j){

case 1: wt.youtput();getch();break;

case 2: wt.ysortvid();break;

case 3: wt.ysortkolvo();break;

case 4: wt.youtputbinfile();break;

case 5: wt.yinputfile();break;

case 6: return;

}

}

}

void dannie::zperechen() // перечень цен

{int i,j,fl,n;

delete []z;

FIRMA t;

ng0=0;

s=0;

n=m;

z=newFIRMA[n]; //создание нового динамического массива для перечня

if(z==NULL){cout<<"Net pamati!";getch();exit(1);}

for(i=0;i<n;i++)

{ fl=0;

for(j=0;j<s;j++)

if(x[i].get().get_st()==z[j].get().get_st())

{fl=1;

ng0++;

z[j].set_ng1(ng0);

break;

}

if(fl==0)

{st0=x[i].get().get_st();

z[s].get().set_st(st0);

strcpy(z[s].get_naz(),x[i].get_naz());

strcpy(z[s].get().get_vid(),x[i].get().get_vid());

ng0=1;

z[s].set_ng1(ng0);

s++;

}

}}

voidmenu2(danniewt); //прототип функции подменю для работы с перечнем цен

voidmenu2(danniewt) //подменю для работы с перечнем цен

{intj;

while(1) //цикл меню

{clrscr();

cout<<endl;

cout<<"1.Prosmotr perechna.\n ";

cout<<"2.Alfavitnaia sortirovka po vidu.\n";

cout<<"3.Sortirovka po cene.\n";

cout<<"4.Sohranenie v fail.\n";

cout<<"5.Zagruzka iz faila.\n";

cout<<"6.Vozvrat v glavnoe menu.\n";

cin>>j;

switch(j){

case 1: wt.zoutput();getch();break;

case 2: wt.zsortvid();break;

case 3: wt.zsortst();break;

case 4: wt.zoutputbinfile();break;

case 5: wt.zinputfile();break;

case 6: return;

}

}

}

void dannie::zoutput() // вывод перечня цен на экран

{inti;

cout.setf(ios::left); //манипулятор выравнивания текста по левому краю

cout<<" "<<setw(20)<<"FIRMA"<<setw(20)<<"VID RABOTI"<<setw(15)<<"STOIMOST"<<setw(10)<<"KOL-VO"<<endl;

for(i=0;i<s;i++) //цикл вывода данных на экран

cout<<i+1<<" "<<setw(20)<<z[i].get_naz()<<setw(20)<<z[i].get().get_vid()<<setw(15)<<z[i].get().get_st()<<setw(10)<<z[i].get_ng1()<<endl;

}

voiddannie::zsortvid() //сортировка перечня по видам работ

{int i,fl,n;

FIRMA t;

n=s;

do{ fl=0;n--;

for(i=0;i<n;i++) //цикл сравнения и перестановки строк

if(strcmp(z[i].get().get_vid(),z[i+1].get().get_vid())>0)

{t=z[i];

z[i]=z[i+1];

z[i+1]=t;

fl=1;}

}while(fl==1);

}

voiddannie::zsortst() //сортировка перечня цен по цене

{int i,fl;

FIRMA t;

do{fl=0;

for(i=0;i<s-1;i++) //цикл сравнения и перестановки строк

if(z[i].get().get_st()<z[i+1].get().get_st())

{t=z[i];

z[i]=z[i+1];

z[i+1]=t;

fl=1;

}

}

while(fl==1);

}

void dannie::zoutputbinfile() // сохранение перечня в бинарный файл

{ofstream fout;

char file[L];

cout<<"Ima faila: ";

cin>>file; //ввод пути для создания файла

fout.open(file,ios::out|ios::binary); //создание бинарного файла

if(fout.fail()){ cout<<file<<"Ne sozdan.\n";

getch();

exit(1);}

fout.write((char *)z,s*sizeof(FIRMA)); // сохранения данных в файл

fout.close(); //закрытие бинарного файла

}

voiddannie::zinputfile() //загрузка данных из бинарного файла

{delete []z;

s=0;

ifstream fin;

int nn;

char file[L];

cout<<"Ima faila: ";

cin>>file; //ввод пути к нужному файлу

fin.open(file,ios::in |ios::binary); // открытие файла

if(fin.fail()){ cout<<file<<"Ne otkrit.\n";

getch();

exit(1);}

fin.seekg(0,ios::end); // подсчёт количества строк данных

s=fin.tellg()/sizeof(FIRMA); //запись количества в переменную s

nn=fin.tellg();

z=newFIRMA[s]; //создание динамического массива для записи данных

fin.seekg(0,ios::beg);

fin.read((char*)z,nn); //запись данных в массив

fin.close();

}

voiddannie::vperechen() //перечень единиц измерения

{int i,s,j,fl,n;

delete []v;

FIRMA t;

p=0;

n=m;

v=newFIRMA[n]; //создание нового динамического массива для перечня

if(v==NULL){cout<<"Net pamati!";getch();exit(1);}

for(i=0;i<n;i++)

{ fl=0;

for(j=0;j<p;j++) //цикл подсчёта количества

if(strcmp(x[i].get().get_edn(),v[j].get().get_edn())==0)

{fl=1;

ng0++;

v[j].set_ng2(ng0);

break;

}

if(fl==0)

{strcpy(v[p].get().get_vid(),x[i].get().get_vid()); //присваивание данных строки одногомассива к строке другого

strcpy(v[p].get().get_edn(),x[i].get().get_edn());

ng0=1;

v[p].set_ng2(ng0);

p++;

}

}}

voiddannie::vsortedn() //сортировка перечня единиц измерения по единицам измерения

{int i,fl,n;

FIRMA t;

n=p;

do{ fl=0;n--;

for(i=0;i<n;i++) //цикл сравнения и перестановки строк

if(strcmp(v[i].get().get_edn(),v[i+1].get().get_edn())>0)

{t=v[i];

v[i]=v[i+1];

v[i+1]=t;

fl=1;}

}while(fl==1);

}

voiddannie::vsortvid() //сортировка перечня единиц измерений по видам работ

{int i,fl,n;

FIRMA t;

n=p;

do{ fl=0;n--;

for(i=0;i<n;i++) //цикл сравнения и перестановки строк

if(strcmp(v[i].get().get_vid(),v[i+1].get().get_vid())>0)

{t=v[i];

v[i]=v[i+1];

v[i+1]=t;

fl=1;}

}while(fl==1);

}

voiddannie::voutput() //вывод на экран перечня единиц измерения

{inti;

cout.setf(ios::left); //манипулятор выравнивания текста по левому краю

cout<<" "<<setw(20)<<"VID RABOTI"<<setw(15)<<"EDINICA"<<setw(10)<<"KOL-VO"<<endl;

for(i=0;i<p;i++) //цикл вывода на экран данных перечня

cout<<i+1<<" "<<setw(20)<<v[i].get().get_vid()<<setw(15)<<v[i].get().get_edn()<<setw(10)<<v[i].get_ng2()<<endl;

}

voiddannie::voutputfile() //сохранения перечня в бинарный файл

{ofstream fout;

char file[L];

cout<<"Ima faila: ";

cin>>file; //ввод пути для создания файла

fout.open(file,ios::out|ios::binary); //создание бинарного файла

if(fout.fail()){ cout<<file<<"Ne sozdan.\n";

getch();

exit(1);}

fout.write((char *)v,p*sizeof(FIRMA)); // запись данных в бинарный файл

fout.close(); //закрытие бинарного файла

}

voiddannie::vinputfile() //загрузка данных из бинарного файла

{delete []v;

p=0;

ifstream fin;

int nn;

char file[L];

cout<<"Ima faila: ";

cin>>file; //ввод пути к нужному файлу

fin.open(file,ios::in |ios::binary); // открытие файла

if(fin.fail()){ cout<<file<<"Ne otkrit.\n";

getch();

exit(1);}

fin.seekg(0,ios::end); // подсчёт количества строк

p=fin.tellg()/sizeof(FIRMA); //запись количества в переменную p

nn=fin.tellg();

v=newFIRMA[s]; //создание динамического массива для записи данных из файла

fin.seekg(0,ios::beg);

fin.read((char*)v,nn); //запись данных в массив

fin.close(); //закрытие бинарного файла

}

voidmenu3(danniewt); //прототип функции подменю для работы с перечнем единиц измерения

voidmenu3(danniewt) //подменю для работы с перечнем единиц измерения

{intj;

while(1) //цикл меню

{clrscr();

cout<<endl;

cout<<"1.Prosmotr perechna.\n ";

cout<<"2.Alfavitnaia sortirovka po vidu.\n";

cout<<"3.Sortirovka po edinicam.\n";

cout<<"4.Sohranenie v fail.\n";

cout<<"5.Zagruzka iz faila.\n";

cout<<"6.Vozvrat v glavnoe menu.\n";

cin>>j;

switch(j){

case 1: wt.voutput();getch();break;

case 2: wt.vsortvid();break;

case 3: wt.vsortedn();break;

case 4: wt.voutputfile();break;

case 5: wt.vinputfile();break;

case 6: return;

}

}

}

void menu4(dannie wt); // прототип функции подменю поиска

void menu4(dannie wt) // подменю поиска

{int j;

while(1) // цикл меню

{clrscr();

cout<<endl;

cout<<"1.Poisk po nazvaniy firmi.\n ";

cout<<"2.Podrobnii poisk.\n";

cout<<"3.Prosmotr.\n";

cout<<"4.Sortirovka po date.\n";

cout<<"5.Sortirovka po vidy.\n";

cout<<"6.Sortirovka po obemy.\n";

cout<<"7.Sortirovka po cene.\n";

cout<<"8.Sohranenie v fail.\n";

cout<<"9.Vozvrat v glavnoe menu.\n";

cout<<"Vash vibor: ";

cin>>j;

switch(j){

case 1: wt.cpoisk1();break;

case 2: wt.cpoisk2();break;

case 3: wt.coutput();getch();break;

case 4: wt.csortdt();break;

case 5: wt.csortvid();break;

case 6: wt.csortom();break;

case 7: wt.csortst();break;

case 8: wt.coutputfile();break;

case 9: return;

}

}

}

void dannie::cpoisk1() // поиск по названию фирмы

{FIRMA t;

delete []c;

c=newFIRMA[m]; //создание нового динамического массива для записи найденныхданных

f=0;

int i;

cout<<"FIRMA: ";cin>>naz0; //ввод данных для поиска

t.set_naz(naz0);

for(i=0;i<m;i++)

{if(strcmp(t.get_naz(),x[i].get_naz())==0) // поиск нужной строки

{ c[f]=x[i]; //запись найденной строки в массив

f++;

}

}

}

voiddannie::cpoisk2() //поиск по названию фирмы, дате исполнения и видам работ

{FIRMA t;

delete []c;

c=newFIRMA[m]; //создание динамического массива для записи найденных данных

f=0;

int i;

cout<<"FIRMA: ";cin>>naz0; //начало ввода данных

cout<<"DATA: Day: ";cin>>dt10;

cout<<"Mounth: ";cin>>dt20;

cout<<"Year: ";cin>>dt30;

cout<<"VID: ";cin>>vid0; //конец ввода данных

t.set_naz(naz0);

t.set_dt1(dt10);

t.set_dt2(dt20);

t.set_dt3(dt30);

t.get().set_vid(vid0);

for(i=0;i<m;i++) //цикл поиска нужных строк и записи их в массив

{if(strcmp(t.get_naz(),x[i].get_naz())==0)

if(sravndate(x[i],t)==0)

if(strcmp(t.get().get_vid(),x[i].get().get_vid())==0)

{ c[f]=x[i];

f++;

}

}

}

voiddannie::coutput() //вывод на экран найденных строк

{ inti;

cout.setf(ios::left); //манипулятор выравнивания текста по левому краю

cout<<setw(17)<<"FIRMA"<<setw(17)<<"VID"<<setw(13)<<"EDINICA"<<setw(13)<<"STOIMOST"<<setw(9)<<"DATA"<<setw(12)<<"OBEM"<<endl<<endl;

for(i=0;i<f;i++) //цикл вывода данных на экран

cout<<setw(17)<<c[i].get_naz()<<setw(17)<<c[i].get().get_vid()<<setw(13)<<c[i].get().get_edn()<<setw(10)<<c[i].get().get_st()<<setw(3)<<c[i].get_dt1()<<setw(3)<<c[i].get_dt2()<<setw(6)<<c[i].get_dt3()<<setw(10)<<c[i].get_om()<<endl;

}

voiddannie::csortdt() //сортировка найденных данных по дате

{int i,fl;

FIRMA t;

do{fl=0;

for(i=0;i<f-1;i++) //цикл сравнения и перестановки строк

if(sravndate(c[i],t)==0)

{t=c[i];

c[i]=c[i+1];

c[i+1]=t;

fl=1;

}

}

while(fl==1);

}

voiddannie::csortvid() //сортировка найденных данных по видам работ

{int i,n,fl;

FIRMA t;

n=f;

do{ fl=0;n--;

for(i=0;i<n;i++) //цикл сравнения и перестановки строк

if(strcmp(c[i].get().get_vid(),c[i+1].get().get_vid())>0)

{t=c[i];

c[i]=c[i+1];

c[i+1]=t;

fl=1;}

}while(fl==1);

}

voiddannie::csortom() //сортировка найденных данных по объёмам работ

{int i,fl;

FIRMA t;

do{fl=0;

for(i=0;i<f-1;i++) //цикл сравнения и перестановки строк

if(c[i].get_om()<c[i+1].get_om())

{t=c[i];

c[i]=c[i+1];

c[i+1]=t;

fl=1;

}

}

while(fl==1);

}

voiddannie::csortst() //сортировка найденных данных по цене

{int i,fl;

FIRMA t;

do{fl=0;

for(i=0;i<f-1;i++) //цикл сравнения и перестановки строк

if(c[i].get().get_st()<c[i+1].get().get_st())

{t=c[i];

c[i]=c[i+1];

c[i+1]=t;

fl=1;

}

}

while(fl==1);

}

voiddannie::coutputfile() //сохранение найденных данных в текстовый файл

{ofstream mout;

int i;

char file[L];

cout<<"Sohranenie faila: Vvedite ima:\n";

cin>>file; //ввод пути для создания файла

cout<<endl;

mout.open(file); // создание файла

if(mout.fail()){cout<<"Ne sozdan\n";

getch();exit(1);

}

for(i=0;i<f;i++) // цикл записи данных в файл

{

mout<<c[i].get_naz()<<endl;

mout<<c[i].get().get_vid()<<endl;

mout<<c[i].get().get_edn()<<endl;

mout<<c[i].get().get_st()<<endl;

mout<<c[i].get_dt1()<<endl;

mout<<c[i].get_dt2()<<endl;

mout<<c[i].get_dt3()<<endl;

mout<<c[i].get_om()<<endl;

}

mout.close(); //закрытие файла

}

intsravndate(FIRMAf1,FIRMAf2); //прототип подпрограммы сравнения по дате

intsravndate(FIRMAf1,FIRMAf2) //подпрограмма сравнения по дате

{if(f1.get_dt1()<f2.get_dt1())return 1;

if(f1.get_dt1()>f2.get_dt1())return (-1);

if(f1.get_dt2()<f2.get_dt2())return 1;

if(f1.get_dt2()>f2.get_dt2())return (-1);

if(f1.get_dt3()<f2.get_dt3())return 1;

if(f1.get_dt3()>f2.get_dt3())return (-1);

return 0;

}