
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;
}