Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программирование на C / C++ / Лабораторная работа №4 / laba9
.CPP#include<iostream.h>
#include<fstream.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#include<iomanip.h>
const int l=31;
struct fio
{ //бвагЄвга fio ўЄ«оз Ґв ¤ лҐ бв㤥⮢:
char fam[l]; //д ¬Ё«ЁЁ
char im[l]; //Ё¬Ґ
char ot[l]; //®взҐбвў
};
struct student
{ //бвагЄвга student ўЄ«оз Ґв ¤ лҐ бв㤥⮢:
fio f; //”€Ћ
char gr[l]; //ЈагЇЇг
int col; //Є®«ЁзҐбвў® Ў ««®ў
};
struct gruppa
{ //бвагЄвга gruppa ўЄ«оз Ґв ¤ лҐ ЈагЇЇ:
char gr[l]; // §ў ЁҐ ЈагЇЇл
int ng; //Є®«ЁзҐбвў® бв㤥⮢
};
const int N=100;
class massiv //Є« бб massiv
{private:
student s[N];
int m;
gruppa z[N];
int k;
public:
void inputstfile();
void outputst();
void perech();
void sortgr();
void outputgrmax();
void outputgrfile();
void alfsortfio();
void outputstfile();
void alfsortgr();
void sortcol();
};
void massiv:: inputstfile() // ўў®¤ Ё§ д ©«
{ifstream fin;
char file[l];
cout<<"imya faila:";
cin>>file;
fin.open(file);
if(fin==NULL){cout<<"fail ne otkrit";
getch();
exit(1);
}
m=0;
fin>>s[m].f.fam>>s[m].f.im>>s[m].f.ot>>s[m].gr>>s[m].col;
while (fin.good())
{
m++;
fin>>s[m].f.fam>>s[m].f.im>>s[m].f.ot>>s[m].gr>>s[m].col;
}
}
void massiv:: outputst() //ўлў®¤ нЄа ¬ ббЁў бв㤥⮢
{
int i;
for(i=0;i<m;i++)
{
cout<<setw(14)<<setiosflags(ios::left)<<s[i].f.fam
<<setw(11)<<setiosflags(ios::left)<<s[i].f.im
<<setw(15)<<setiosflags(ios::left)<<s[i].f.ot
<<setw(6)<<setiosflags(ios::left)<<s[i].gr
<<setw(10)<<setiosflags(ios::left)<<s[i].col<<endl;
if((i+1)%10==0) getch();
}
getch();
}
void massiv:: perech() // д®а¬Ёа®ў ЁҐ ЇҐаҐзп ЈагЇЇ,
{int i,j,fl,max; // ў Є®в®але ¬ ЄбЁ¬ «м®Ґ Є®«ЁзҐбвў® бв㤥⮢,
max=s[0].col; // Ўа ўиЁе ¬ ЄбЁ¬ «м®Ґ Є®«ЁзҐбвў® Ў ««®ў (ЊЂ•)
k=0;
for(i=1;i<m;i++) //ўлзЁб«ҐЁҐ ¬ ЄбЁ¬ «м®Ј® Є®«ЁзҐбвў Ў ««®ў
if (s[i].col>max) max=s[i].col;
for(i=0;i<m;i++)
if (s[i].col==max)
{fl=1;
for(j=0;j<k;j++)
if(strcmp(s[i].gr,z[j].gr)==0)
{fl=0;
z[j].ng++;
}
if (fl==1)
{strcpy(z[k].gr,s[i].gr);
z[k].ng=1;
k++;
}
}
}
void massiv::sortgr() // б®авЁа®ўЄ ЇҐаҐзп ЈагЇЇ (ЊЂ•)
{int i,l,fl; // ў «д ўЁв®¬ Ї®ап¤ЄҐ
gruppa t;
l=k-1;
do
{
fl=0;
for(i=0;i<l;i++)
if(strcmp(z[i].gr,z[i+1].gr)>0)
{
t=z[i];
z[i]=z[i+1];
z[i+1]=t;
fl=1;
}
l--;
} while(fl==1);
}
void massiv:: outputgrmax() // ўлў®¤ нЄа ЇҐаҐзп ЈагЇЇ (ЊЂ•)
{
int i,max1;
max1=z[0].ng;
cout<<"Tablichka grupp."<<endl;
for(i=0;i<k;i++)
if (z[i].ng>=max1) max1=z[i].ng;
for(i=0;i<k;i++)
if (z[i].ng==max1)
cout<<setw(6)<<setiosflags(ios::left)<<z[i].gr
<<setw(10)<<setiosflags(ios::left)<<z[i].ng<<endl;
getch();
}
void massiv:: outputgrfile()// б®еа ҐЁҐ ў д ©«Ґ ЇҐаҐзп ЈагЇЇ (ЊЂ•)
{ofstream out;
char file[l];
int i,max1;
cout<<"imya faila:";
cin>>file;
out.open(file);
if (out==NULL) {cout<<"Fail ne naiden";
getch();
exit(1);
}
max1=z[0].ng;
for(i=0;i<k;i++)
if (z[i].ng>=max1) max1=z[i].ng;
out<<"gruppa "<<"kolichestvo studentov MAX "<<endl;
for(i=0;i<k;i++)
if (z[i].ng==max1) {out<<setw(6)<<setiosflags(ios::left)<<z[i].gr
<<setw(10)<<setiosflags(ios::left)<<z[i].ng<<endl;}
out.close();
}
void massiv:: alfsortfio()//б®авЁа®ўЄ ¬ ббЁў бв㤥⮢ Ї® д ¬Ё«ЁЁ, Ё¬ҐЁ, ®взҐбвўг
{int i,l,fl; //ў «д ўЁв®¬ Ї®ап¤ЄҐ
student t;
l=m-1;
do
{
fl=0;
for(i=0;i<l;i++)
{
if(strcmp(s[i].f.fam,s[i+1].f.fam)>0)
{
t=s[i];
s[i]=s[i+1];
s[i+1]=t;
fl=1;
}
else if(strcmp(s[i].f.fam,s[i+1].f.fam)==0)//ў б«гз Ґ б®ўЇ ¤ҐЁп д ¬Ё«Ё©
if(strcmp(s[i].f.im,s[i+1].f.im)>0) //б®авЁа®ўЄ Ї® Ё¬ҐЁ
{
t=s[i];
s[i]=s[i+1];
s[i+1]=t;
fl=1;
}
else if(strcmp(s[i].f.im,s[i+1].f.im)==0)//ў б«гз Ґ б®ўЇ ¤ҐЁп Ё¬Ґ
if(strcmp(s[i].f.ot,s[i+1].f.ot)>0)//б®авЁа®ўЄ Ї® ®взҐбвўг
{
t=s[i];
s[i]=s[i+1];
s[i+1]=t;
fl=1;
}
}
l--;
} while(fl==1);
}
void massiv:: outputstfile () //б®еа ҐЁҐ ў д ©«Ґ ¬ ббЁў бв㤥⮢
{ofstream fout;
char file[l];
int i;
cout<<"imya faila:";
cin>>file;
fout.open(file);
if (fout==NULL) {cout<<"Fail ne naiden";
getch();
exit(1);
}
cout<<"familiya "<<"imya "<<"otchestvo "<<"gruppa "<<"Kolichestvo ballov"<<endl;
for(i=0;i<m;i++)
fout<<setw(14)<<setiosflags(ios::left)<<s[i].f.fam
<<setw(11)<<setiosflags(ios::left)<<s[i].f.im
<<setw(15)<<setiosflags(ios::left)<<s[i].f.ot
<<setw(6)<<setiosflags(ios::left)<<s[i].gr
<<setw(10)<<setiosflags(ios::left)<<s[i].col<<endl;
fout.close();
}
void massiv:: alfsortgr()//б®авЁа®ўЄ ¬ ббЁў бв㤥⮢ Ї® §ў Ёо ЈагЇЇл
{int fl,i,l; //ў «д ўЁв®¬ Ї®ап¤ЄҐ
student t;
l=m-1;
do
{
fl=0;
for(i=0;i<l;i++)
{
if(strcmp(s[i].gr,s[i+1].gr)>0)
{
t=s[i];
s[i]=s[i+1];
s[i+1]=t;
fl=1;
}
else if(strcmp(s[i].gr,s[i+1].gr)==0)//ў б«гз Ґ б®ўЇ ¤ҐЁп §ў Ё© ЈагЇЇ
if(strcmp(s[i].f.fam,s[i+1].f.fam)>0)//б®авЁа®ўЄ Ї® ”€Ћ
{
t=s[i];
s[i]=s[i+1];
s[i+1]=t;
fl=1;
}
else if(strcmp(s[i].f.fam,s[i+1].f.fam)==0)
if(strcmp(s[i].f.im,s[i+1].f.im)>0)
{
t=s[i];
s[i]=s[i+1];
s[i+1]=t;
fl=1;
}
else if(strcmp(s[i].f.im,s[i+1].f.im)==0)
if(strcmp(s[i].f.ot,s[i+1].f.ot)>0)
{
t=s[i];
s[i]=s[i+1];
s[i+1]=t;
fl=1;
}
}
l--;
} while(fl==1);
}
void massiv:: sortcol()//б®авЁа®ўЄ ¬ ббЁў бв㤥⮢ Ї® Є®«ЁзҐбвўг Ў ««®ў
{int fl,i,l; //ў Ї®ап¤ЄҐ гЎлў Ёп
student t;
l=m-1;
do
{
fl=0;
for(i=0;i<l;i++)
{if(s[i].col<s[i+1].col)
{
t=s[i];
s[i]=s[i+1];
s[i+1]=t;
fl=1;
}
if(s[i].col==s[i+1].col)//ў б«гз Ґ б®ўЇ ¤ҐЁп Є®«ЁзҐбвў Ў ««®ў
if(strcmp(s[i].gr,s[i+1].gr)>0)//б®авЁа®ўЄ Ї® §ў Ёо ЈагЇЇл
{
t=s[i];
s[i]=s[i+1];
s[i+1]=t;
fl=1;
}
}
l--;
}while(fl==1);
}
void main() //ѓ« ў п Їа®Ја ¬¬ //
{massiv h;
int p;
while(1)
{clrscr();
cout<<"1.vvod iz faila.\n";
cout<<"2.vivod na ekran.\n";
cout<<"3.formirovanie perechnya GRUPPMAX.\n";
cout<<"4.sortirovka GRUPPMAX v alfavitnom poryadke.\n";
cout<<"5.vivod na ekran perechnya GRUPPMAX.\n";
cout<<"6.sohranenie v faile perechnya GRUPPMAX.\n";
cout<<"7.sortirovka FIO v alfavitnom poryadke :2.\n";
cout<<"8.sohranenie v faile FIO v alfavitnom poryadke.\n";
cout<<"9.sortirovka vseh grupp v alfavitnom poryadke :2,8.\n";
cout<<"10.sortirovka perecnya po kolichestvu ballov :2,8.\n";
cout<<"11.vihod iz programmi.\n";
cout<<endl<<endl;
cout<<"vash vibor (1%11):";
cin>>p;
switch(p)
{ case 1:h.inputstfile();break;
case 2:h.outputst();break;
case 3:h.perech();break;
case 4:h.sortgr();break;
case 5:h.outputgrmax();break;
case 6:h.outputgrfile();break;
case 7:h.alfsortfio();break;
case 8:h.outputstfile();break;
case 9:h.alfsortgr();break;
case 10:h.sortcol();break;
case 11:cout<<"konets raboti";
getch();
return;
default:cout<<"net punkta";
getch();
break;
}
}
}