Скачиваний:
26
Добавлен:
02.05.2014
Размер:
7.54 Кб
Скачать
#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;
		  }
		  }
}
Соседние файлы в папке Лабораторная работа №4