Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программирование на C / C++ / Лабораторная работа №31 / laba 8
.CPP#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