Скачиваний:
21
Добавлен:
02.05.2014
Размер:
6.23 Кб
Скачать
#include<iostream.h>
#include<fstream.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
#include<iomanip.h>
const int l=31;
struct fio
  {
    char fam[l];
    char im[l];
    char ot[l];
  };
struct student
  {
    fio f;
    char gr[l];
    int col;
  };
struct gruppa
  {
    char gr[l];
    int ng;
  };
ifstream in;
ofstream out;
void inputstfile(student s[],int &m);
void outputst(student s[],int m);
void outputstfile(student s[],int m);
void outputgrfile(gruppa z[], int m);
void alfsortgr(gruppa z[],int m);
void sortgr(gruppa z[], int m);
void alfsortfio(student s[], int m);
void sortcol(student st[], int m);
//Podprogramma 1//
void inputstfile(student s[],int &m)
{
 m=0;
 in>>s[m].f.fam>>s[m].f.im>>s[m].f.ot>>s[m].gr>>s[m].col;
 while (in.good())
 {
  m++;
  in>>s[m].f.fam>>s[m].f.im>>s[m].f.ot>>s[m].gr>>s[m].col;
 }
}
//Podprogramma 2//
void outputst(student s[],int m)
{ 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();
}
//Podprogramma 3//
void outputstfile (student s[], int m)
{int i;
 out<<"familiya      "<<"imya       "<<"otchestvo      "<<"gruppa "<<"Kolichestvo ballov"<<endl;
 for(i=0;i<m;i++)
   out<<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;
}
//Podprogramma 4//
void outputgrfile(gruppa z[], int m)
{int i,max1;
 max1=z[0].ng;
 for(i=0;i<m;i++)
  if (z[i].ng>=max1) max1=z[i].ng;
 out<<"gruppa "<<"kolichestvo studentov MAX "<<endl;
 for(i=0;i<m;i++)
  if (z[i].ng==max1) {out<<setw(6)<<setiosflags(ios::left)<<z[i].gr
      <<setw(10)<<setiosflags(ios::left)<<z[i].ng<<endl;}
}
//Podrogramma 5//
void alfsortfio(student s[],int m)
{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);
}
//Podprogramma 6//
void alfsortgr(student s[],int m)
{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);
}
//Podprogramma 7//
void outputgrmax(gruppa z[],int m)
{int i,max1;
  max1=z[0].ng;
  cout<<" \n";
  cout<<"Tablichka grupp.\n";
  for(i=0;i<m;i++)
  if (z[i].ng>=max1) max1=z[i].ng;
  for(i=0;i<m;i++)
   {
    if (z[i].ng==max1)
      cout<<setw(6)<<setiosflags(ios::left)<<z[i].gr
	  <<setw(10)<<setiosflags(ios::left)<<z[i].ng<<endl;
    if((i+1)%10==0) getch();
   }
}
//Podrogramma 8//
void sortcol(student s[], int m)
{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);
}
//Podrogramma 9//
void sortgr(gruppa z[], int m)
{int i,l,fl;
 gruppa t;
 l=m-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);
}
//Glavnaya programma//
const int N=100;
void main()
{
 student a[N];
 gruppa b[N];
 int n,i,j,k,fl,max;
 char file[l];
 cout<<endl<<"imya faila:";
 cin>>file;
 in.open(file);
 if (in==NULL) {
		cout<<"fail ne naiden";
		getch;
		exit(1);
	       }
 inputstfile(a,n);
 in.close();
 outputst(a,n);
  max=a[0].col;
  k=0;
  for(i=1;i<n;i++)
     if (a[i].col>max) max=a[i].col;
  for(i=0;i<n;i++)
     if (a[i].col==max)
	{fl=1;
	 for(j=0;j<k;j++)
	     if(strcmp(a[i].gr,b[j].gr)==0)
	       {fl=0;
		b[j].ng++;
	       }
	 if (fl==1)
	    {strcpy(b[k].gr,a[i].gr);
	     b[k].ng=1;
	     k++;
	    }
	}
 cout<<"Uporyadochnyi massiv GRUPPMAX v alfavitnom poryadke:\n";
 sortgr(b,k);
 outputgrmax(b,k);
 out.open("result1.txt");
 if(out==NULL) {
		cout<<"File ne sozdan";
		getch();
		exit(1);
	       }
 outputgrfile(b,k);
 out.close();
 alfsortfio(a,n);
 cout<<" \n";
 cout<<"Uporyadochnyi massiv FIO v alfavitnom poryadke:\n";
 outputst(a,n);
 out.open("result2.txt");
 if(out==NULL) {
		cout<<"File ne sozdan";
		getch();
		exit(1);
	       }
 outputstfile(a,n);
 out.close();
 cout<<" \n";
 cout<<"Uporyadochnyi massiv po kolichestvu ballov:\n";
 sortcol(a,n);
 outputst(a,n);
 out.open("resultst.txt");
 if(out==NULL) {
		cout<<"File ne sozdan";
		getch();
		exit(1);
	       }
 outputstfile(a,n);
 out.close();
 alfsortgr(a,n);
 cout<<" \n";
 cout<<"Uporyadochnyi massiv grupp v alfavitnom poryadke:\n";
 outputst(a,n);
 out.open("result3.txt");
 if(out==NULL) {
		cout<<"File ne sozdan";
		getch();
		exit(1);
	       }
 outputstfile(a,n);
 out.close();
}














Соседние файлы в папке Лабораторная работа №31