- •Министерство образования и науки рф Государственное образовательное учреждение высшего образования «Уфимский государственный авиационный технический университет»
- •Решение задач разной категории сложности средствами языков высокого уровня
- •Постановка задачи
- •Алгоритм решения задачи
- •Анализ предлагаемой реализации
- •Код программы:
- •Результаты тестирования
- •Заключение
Код программы:
#pragma argsused
#pragma argsused
#include <iostream.h>
#include <fstream.h>
#include <conio.h>
#include <iomanip>
int i,j;
struct VUZ
{
char name[20];
char adres[20];
};
struct SPEC
{
char vuze[10][20];
};
struct RATES
{
float day;
float vecher;
float zaochka;
};
struct PRICES
{
float price;
};
class bd
{
private:
int n,m;
VUZ vuz[10];
SPEC spec[10];
RATES rates[10];
PRICES prices[10];
public:
bd() {n=0;m=0;}
void input_vuz();
void input_spec();
void input_rates();
void input_prices();
void output_vuz();
void output_spec();
void output_rates();
void output_prices();
void all_about_vuz();
void all_about_spec();
void poisk();
void Min();
void Add_Vuz();
void Del_Vuz();
~bd(){};
};
//-----------------------------------------
void bd::input_vuz()
{
int k;
k=1;
cout<<"Vvedite kol-vo vuzov: ";
cin>>n;
cout<<endl;
system("cls");
for (i=0;i<n;i++)
{
cout<<"Naimenovanie VUZa #"<<k<<": ";
cin>>vuz[i].name;
k++;
}
k=1;
system("cls");
for (i=0;i<n;i++)
{
cout<<"Adres VUZa #"<<k<<": ";
cin>>vuz[i].adres;
k++;
}
k=1;
ofstream fout("VUZ.txt");
for(i=0;i<n;i++)
fout<<vuz[i].name<<" "<<vuz[i].adres<<"\n";
fout.close();
}
//-----------------------------------------
void bd::input_spec()
{
// n=2;
cout<<"Vvedite kol-vo spec: ";
cin>>m;
system("cls");
cout<<"Vvedite po "<<m<<" spec na kazhdiy VUZ"<<endl;
for (i=0;i<n;i++)
for (j=0;j<m;j++)
{
cout<<"Naimenovanie spec ";
cin>>spec[i].vuze[j];
}
ofstream fout("SPEC.txt");
for(i=0;i<n;i++)
for(j=0;j<m;j++)
fout<<spec[i].vuze[j]<<"\n";
fout.close();
}
//-----------------------------------------------
void bd::input_rates()
{
cout<<"Vvedite konkurs na specialnosti"<<endl;
//--------------------
ifstream fin("SPEC.txt");
for(i=0;i<n;i++)
for(j=0;j<m;j++)
fin>>spec[i].vuze[j];
fin.close();
//-----------------------
for(i=0;i<n;i++) {
for(j=0;j<m;j++)
{
cout<<spec[i].vuze[j]<<endl;
}
cout<<endl;
}
for(i=0;i<m*n;i++)
{
cout<<endl;
cout<<"Day rate: ";
cin>>rates[i].day;
cout<<"Day vecher: ";
cin>>rates[i].vecher;
cout<<"Day zaochka: ";
cin>>rates[i].zaochka;
cout<<"OK"<<endl;
}
//--------------------
ofstream fout("RATES.txt");
for(i=0;i<m*n;i++)
fout<<rates[i].day<<" "<<rates[i].vecher<<" "<<rates[i].zaochka<<"\n";
fout.close();
}
//-----------------------------------------
void bd:: input_prices()
{
//--------------- -------------
ifstream fin("SPEC.txt");
for(i=0;i<n;i++)
for(j=0;j<m;j++)
fin>>spec[i].vuze[j];
fin.close();
//-------------------------------
for(i=0;i<n;i++)
for(j=0;j<m;j++)
cout<<"Price at "<<spec[i].vuze[j]<<endl;
cout<<endl<<"Vvedite prices"<<endl;
for(i=0;i<n*m;i++)
{
cout<<"Price: ";
cin>>prices[i].price;
}
//----------------------------------
ofstream fout("PRICES.txt");
for(i=0;i<m*n;i++)
fout<<prices[i].price<<"\n";
fout.close();
}
//-------------------------------------------------
void bd::output_vuz()
{ //n=2;
int k;
k=1;
ifstream fin1("VUZ.txt");
for(i=0;i<n;i++)
fin1>>vuz[i].name>>vuz[i].adres;
fin1.close();
for (i=0;i<n;i++)
{
cout<<setw(13)<<"Naimenovanie VUZa #"<<k<<": "<<vuz[i].name<<setw(15)
<<"|Adres: "<<vuz[i].adres<<endl;
k++;
}
k=1;
}
//-----------------------------------------
void bd::output_spec()
{
//n=2;m=2;
ifstream fin2("SPEC.txt");
for(i=0;i<n;i++)
for(j=0;j<m;j++)
fin2>>spec[i].vuze[j];
fin2.close();
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
cout<<"Naimenovanie spec "<<endl;
cout<<spec[i].vuze[j]<<"\n";
}
}
//---------------------------------------
void bd::output_rates()
{
// n=2;m=2;
ifstream fin3("RATES.txt");
for(i=0;i<n*m;i++)
fin3>>rates[i].day>>rates[i].vecher>>rates[i].zaochka;
fin3.close();
for(i=0;i<m*n;i++)
{
cout<<"Spec #"<<i+1<<"konkurs day: ";
cout<<rates[i].day<<endl;
cout<<"Spec #"<<i+1<<"konkurs vecher: ";
cout<<rates[i].vecher<<endl;
cout<<"Spec #"<<i+1<<"konkurs zaochka: ";
cout<<rates[i].zaochka<<endl;
}
}
//------------------------------------------------
void bd::output_prices()
{
//n=2;m=2;
ifstream fin4("PRICES.txt");
for(i=0;i<m*n;i++)
fin4>>prices[i].price;
fin4.close();
for(i=0;i<m*n;i++)
cout<<prices[i].price<<endl;
}
//----------------------------------------------
void bd:: all_about_vuz()
{
//n=2;m=2;
int k, choose_vuz;
k=1;
ifstream fin1("VUZ.txt");
ifstream fin2("SPEC.txt");
ifstream fin3("RATES.txt");
//------------------------
for(i=0;i<n;i++)
fin1>>vuz[i].name>>vuz[i].adres;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
fin2>>spec[i].vuze[j];
for(i=0;i<n*m;i++)
fin3>>rates[i].day>>rates[i].vecher>>rates[i].zaochka;
fin1.close();
fin2.close();
fin3.close();
for (i=0;i<n;i++)
{
cout<<"Naimenovanie VUZa #"<<k<<": ";
cout<<vuz[i].name<<endl;
k++;
}
cout<<"Kakoi vuz interesyet(int number)?: ";
cin>>choose_vuz;
choose_vuz--;
i=choose_vuz;
cout<<"Naimenovanie VUZa: "<<vuz[i].name<<endl<<endl;
cout<<"Adres VUZa: "<<vuz[i].adres<<endl<<endl;
cout<<"Specialnosti:"<<endl;
for(j=0;j<m;j++)
cout<<setw(15)<<spec[i].vuze[j]<<"\n";
}
//----------------------------
void bd::all_about_spec()
{
int k,choose_spec;
k=1;
//n=2;m=2;
ifstream fin1("VUZ.txt");
ifstream fin2("SPEC.txt");
ifstream fin3("RATES.txt");
ifstream fin4("PRICES.txt");
for(i=0;i<n;i++)
{
fin1>>vuz[i].name>>vuz[i].adres;
}
for(i=0;i<n;i++)
for(j=0;j<m;j++)
fin2>>spec[i].vuze[j];
for(i=0;i<n*m;i++)
fin3>>rates[i].day>>rates[i].vecher>>rates[i].zaochka;
for (i=0;i<n*m;i++)
fin4>>prices[i].price;
fin1.close();
fin2.close();
fin3.close();
fin4.close();
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
cout<<vuz[i].name<<" ";
cout<<spec[i].vuze[j]<<" # "<<k<<endl;
k++;
}
cout<<"Which spec interesyet(int number)? ";
cin>>choose_spec;
choose_spec--;
i=choose_spec;
cout<<endl;
cout<<"Rate day "<<rates[i].day<<endl;
cout<<"Rate vecher "<<rates[i].vecher<<endl;
cout<<"Rate zaochka "<<rates[i].zaochka<<endl;
cout<<endl;
cout<<"Price "<<prices[i].price<<endl;
}
//------------------------------------------------
void bd::poisk()
{
int k;
// n=2; m=2;
char poisk[20];
ifstream fin1("VUZ.txt");
ifstream fin2("SPEC.txt");
ifstream fin3("RATES.txt");
ifstream fin4("PRICES.txt");
for(i=0;i<n;i++)
fin1>>vuz[i].name>>vuz[i].adres;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
fin2>>spec[i].vuze[j];
for(i=0;i<m*n;i++)
fin3>>rates[i].day>>rates[i].vecher>>rates[i].zaochka;
for(i=0;i<m*n;i++)
fin4>>prices[i].price;
fin1.close();
fin2.close();
fin3.close();
fin4.close();
cout<<"Poisk po Specialnosti. Chto Interesyet? "<<endl;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
cout<<spec[i].vuze[j]<<endl;
}
cout<<"Vvedite naimenovanie spec(char): ";
cin>>poisk;
k=0;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
if (strcmp(poisk,spec[i].vuze[j])==0)
{
cout<<endl;
cout<<"VUZ "<<vuz[i].name<<endl;
cout<<"Adres "<<vuz[i].adres<<endl;
cout<<"Rate day "<<rates[k].day<<endl;
cout<<"Rate vecher "<<rates[k].vecher<<endl;
cout<<"Rate zaochka "<<rates[k].zaochka<<endl;
cout<<"Price "<<prices[k].price<<endl;
}
k++;
}
}
//------------------------------------------------------
void bd:: Min()
{
//n=2;m=2;
int k,tmp1;
float tmp;
float MinDay[20], MinVecher[20], MinZaochka[20];
int MinDayVuz[20], MinVecherVuz[20], MinZaochkaVuz[20];
char MinPoisk[20];
ifstream fin1("VUZ.txt");
ifstream fin2("SPEC.txt");
ifstream fin3("RATES.txt");
for(i=0;i<n;i++)
fin1>>vuz[i].name>>vuz[i].adres;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
fin2>>spec[i].vuze[j];
for(i=0;i<m*n;i++)
fin3>>rates[i].day>>rates[i].vecher>>rates[i].zaochka;
fin1.close();
fin2.close();
fin3.close();
for(i=0;i<n;i++)
for(j=0;j<m;j++)
cout<<spec[i].vuze[j]<<endl;
cout<<"Vvedite Spec for poisk Min(char) ";
cin>>MinPoisk;
k=0;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
if (strcmp(MinPoisk,spec[i].vuze[j])==0)
{
MinDay[i]=rates[k].day;
MinVecher[i]=rates[k].vecher;
MinZaochka[i]=rates[k].zaochka;
MinDayVuz[i]=i;
MinVecherVuz[i]=i;
MinZaochkaVuz[i]=i;
}
k++;
}
for(i=0;i<n;i++)
{
cout<<"MinDay "<<MinDay[i]<<endl;
cout<<"MinVecher "<<MinVecher[i]<<endl;
cout<<"MinZaochka "<<MinZaochka[i]<<endl;
}
for (i=0;i<n-1;i++)
for(j=0;j<n-1;j++)
{
if(MinDay[i+1]<MinDay[i])
{
tmp=MinDay[i+1];
MinDay[i+1]=MinDay[i];
MinDay[i]=tmp;
tmp1=MinDayVuz[i+1];
MinDayVuz[i+1]=MinDayVuz[i];
MinDayVuz[i]=tmp1;
}
if(MinVecher[i+1]<MinVecher[i])
{
tmp=MinVecher[i+1];
MinVecher[i+1]=MinVecher[i];
MinVecher[i]=tmp;
tmp1=MinVecherVuz[i+1];
MinVecherVuz[i+1]=MinVecherVuz[i];
MinVecherVuz[i]=tmp1;
}
if(MinZaochka[i+1]<MinZaochka[i])
{
tmp=MinZaochka[i+1];
MinZaochka[i+1]=MinZaochka[i];
MinZaochka[i]=tmp;
tmp1=MinZaochkaVuz[i+1];
MinZaochkaVuz[i+1]=MinZaochkaVuz[i];
MinZaochkaVuz[i]=tmp1;
}
cout<<endl;
cout<<"MinKonkurs"<<endl;
cout<<endl;
for(i=0;i<n;i++)
{
j=MinDayVuz[i];
cout<<"MinDay "<<MinDay[i]<<" "<<vuz[j].name<<endl;
}
for(i=0;i<n;i++)
{
j=MinVecherVuz[i];
cout<<"MinVecher "<<MinVecher[i]<<" "<<vuz[j].name<<endl;
}
for(i=0;i<n;i++)
{
j=MinZaochkaVuz[i];
cout<<"Zaochka "<<MinZaochka[i]<<" "<<vuz[j].name<<endl;
}
}
}
//-----------------------
void bd::Add_Vuz()
{ //n=2;m=2;
//-----------------------------------------
ifstream fin1("VUZ.txt");
ifstream fin2("SPEC.txt");
ifstream fin3("RATES.txt");
ifstream fin4("PRICES.txt");
for(i=0;i<n;i++)
fin1>>vuz[i].name>>vuz[i].adres;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
fin2>>spec[i].vuze[j];
for(i=0;i<m*n;i++)
fin3>>rates[i].day>>rates[i].vecher>>rates[i].zaochka;
for(i=0;i<m*n;i++)
fin4>>prices[i].price;
fin1.close();
fin2.close();
fin3.close();
fin4.close();
//--------------------------- -----
cout<<"Dobavlenie vuza"<<endl;
cout<<"Naimenovanie VUZa: ";
cin>>vuz[n].name;
cout<<"adres VUZa: ";
cin>>vuz[n].adres;
for (i=n;i!=n+1;i++)
for (j=0;j<m;j++)
{
cout<<"Naimenovanie spec: ";
cin>>spec[i].vuze[j];
}
for(i=m*n;i!=m*n+m;i++)
{
cout<<"Day rate ";
cin>>rates[i].day;
cout<<"Day vecher ";
cin>>rates[i].vecher;
cout<<"Day zaochka ";
cin>>rates[i].zaochka;
cout<<"OK"<<endl;
}
cout<<"Vvedite prices"<<endl;
for(i=m*n;i!=m*n+m;i++)
cin>>prices[i].price;
n++;
//------------------------------------------
ofstream fout1("VUZ.txt");
ofstream fout2("SPEC.txt");
ofstream fout3("RATES.txt");
ofstream fout4("PRICES.txt");
for(i=0;i<n;i++)
fout1<<vuz[i].name<<" "<<vuz[i].adres<<"\n";
for(i=0;i<n;i++)
for(j=0;j<m;j++)
fout2<<spec[i].vuze[j]<<"\n";
for(i=0;i<m*n;i++)
fout3<<rates[i].day<<" "<<rates[i].vecher<<" "<<rates
[i].zaochka<<"\n"; for(i=0;i<m*n;i++)
fout4<<prices[i].price<<"\n";
fout1.close();
fout2.close();
fout3.close();
fout4.close();
}
//--------------------------------------------
void bd::Del_Vuz()
{
int k,del_vuz;
// n=3;m=2;
//----------------------------------------
ifstream fin1("VUZ.txt");
ifstream fin2("SPEC.txt");
ifstream fin3("RATES.txt");
ifstream fin4("PRICES.txt");
for(i=0;i<n;i++)
fin1>>vuz[i].name>>vuz[i].adres;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
fin2>>spec[i].vuze[j];
for(i=0;i<m*n;i++)
fin3>>rates[i].day>>rates[i].vecher>>rates[i].zaochka;
for(i=0;i<m*n;i++)
fin4>>prices[i].price;
fin1.close();
fin2.close();
fin3.close();
fin4.close();
k=1;
//------------------------------------------------
for (i=0;i<n;i++)
{
cout<<"Naimenovanie VUZa #"<<k<<endl;
cout<<vuz[i].name<<endl;
k++;
}
cout<<"Vvedite nomer to delete: ";
cin>>del_vuz;
del_vuz--;
for(i=del_vuz;i<n;i++)
{
strcpy(vuz[i].name,vuz[i+1].name);
strcpy(vuz[i].adres,vuz[i+1].adres);
}
for(i=del_vuz;i<n;i++)
for(j=0;j<m;j++)
strcpy(spec[i].vuze[j],spec[i+1].vuze[j]);
for(i=del_vuz*m;i<m*n;i++)
{
rates[i].day=rates[i+m].day;
rates[i].vecher=rates[i+m].vecher;
rates[i].zaochka=rates[i+m].zaochka;
}
for(i=del_vuz*m;i<m*n;i++)
prices[i].price=prices[i+m].price;
n--;
//------------------------------
ofstream fout1("VUZ.txt");
ofstream fout2("SPEC.txt");
ofstream fout3("RATES.txt");
ofstream fout4("PRICES.txt");
for(i=0;i<n;i++)
fout1<<vuz[i].name<<" "<<vuz[i].adres<<"\n";
for(i=0;i<n;i++)
for(j=0;j<m;j++)
fout2<<spec[i].vuze[j]<<"\n";
for(i=0;i<m*n;i++)
fout3<<rates[i].day<<" "<<rates[i].vecher<<" "<<rates
[i].zaochka<<"\n"; for(i=0;i<m*n;i++)
fout4<<prices[i].price<<"\n";
fout1.close();
fout2.close();
fout3.close();
fout4.close();
cout<<"VUZ udalen"<<endl;
}
//--------------------------------------------
int main()
{
int vybor;
vybor=16;
bd a;
while (vybor!=15)
{
cout<<"1.Vvod VUZ \n";
cout<<"2.Vvod Specialnostei \n";
cout<<"3.Vvod konkursa \n";
cout<<"4.Vvod tsen \n";
cout<<"5.Vivod VUZ \n";
cout<<"6.Vivod Specialnostei \n";
cout<<"7.Vivod konkursa \n";
cout<<"8.Vivod tsen \n";
cout<<"9.Vse o VUZe \n";
cout<<"10.Vse o specialnosti \n";
cout<<"11.Poisk \n";
cout<<"12.Minimalniy konkurs \n";
cout<<"13.Dobavlenie VUZa \n";
cout<<"14.Udalenie VUZa \n";
cout<<"15.EXIT \n";
cin>>vybor;
switch(vybor)
{
case 1: a.input_vuz(); break;
case 2: a.input_spec(); break;
case 3: a.input_rates(); break;
case 4: a.input_prices(); break;
case 5: a.output_vuz(); break;
case 6: a.output_spec(); break;
case 7: a.output_rates(); break;
case 8: a.output_prices(); break;
case 9: a.all_about_vuz(); break;
case 10: a.all_about_spec(); break;
case 11: a.poisk(); break;
case 12: a.Min(); break;
case 13: a.Add_Vuz(); break;
case 14: a.Del_Vuz(); break;
case 15: exit(0);
default: cout<<endl<<"Oshibka! Vvedite number 1-15. "<<endl<<endl;
}
}
getch();
}
//------------------------------------------------------------------------
