首页 > 代码库 > 山西省高考成绩的排次系统【可查询成绩改正和将作弊成绩去除】
山西省高考成绩的排次系统【可查询成绩改正和将作弊成绩去除】
#include<iostream>
using namespace std;
int main()
{
int i,j,k,o,a[100][100][10],max[100],x[100],n,m,p,cen[100],hang[100],lie[100],g,y=0,q=0,l=0;
int u,d,t,zuo[100],bi[100],kao[100];
int fen[100],r,w;
int j1[100];
cout<<"分别输入山西省所有学校的个数,每个学校的班级个数,每个班级考生的个数:"<<endl;
cin>>n>>m>>p;
cout<<"请输入所在*学校*班级*考号的山西考生的高考成绩:"<<endl;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
for(k=1;k<=p;k++)
{
cout<<"输入第"<<i<<"学校"<<" "<<j<<"班级"<<" "<<"考号为"<<i<<" "<<j<<" "<<k<<"的考生的高考成绩:";
cin>>a[i][j][k];
}
}
}
for(o=1;o<=n*m*p;o++)
{
g=0;
max[o]=-1;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
for(k=1;k<=p;k++)
{
max[o]=(a[i][j][k]>max[o])?a[i][j][k]:max[o];
}
}
}
x[o]=max[o];
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
for(k=1;k<=p;k++)
{
if(x[o]==a[i][j][k])
{
g++;
if(g==1)
{
a[i][j][k]=0;
cen[o]=i;
hang[o]=j;
lie[o]=k;
}
}
}
}
}
}
cout<<"在山西省的所有学校中:"<<endl;
for(o=1;o<=n*m*p;o++)
{
if(x[o]==x[o-1])
{
l++;
cout<<"第"<<o-l<<"名是第"<<cen[o]<<"学校"<<" "<<hang[o]<<"班级"<<" "<<"考号为"<<cen[o]<<" "<<hang[o]<<" "<<lie[o]<<"的考生,他的高考成绩为"<<x[o]<<"分"<<endl;
}
else
cout<<"第"<<o<<"名是第"<<cen[o]<<"学校"<<" "<<hang[o]<<"班级"<<" "<<"考号为"<<cen[o]<<" "<<hang[o]<<" "<<lie[o]<<"的考生,他的高考成绩为"<<x[o]<<"分"<<endl;
l=0;
}
do
{
cout<<"1:有考生因作弊需踢出 2:有考生因被误判需重新排次 3:无错误,将排次计入档案袋"<<endl<<endl;
cin>>d;
if(d==1)
{
cout<<"输入作弊考生的人数:"<<endl;
cin>>t;
y=t;
for(u=1;u<=t;u++)
{
cout<<"输入作弊考生"<<u<<"的考号:"<<endl;
cin>>zuo[u]>>bi[u]>>kao[u];
}
for(u=1;u<=t;u++)
{
for(o=1;o<=n*m*p-q;o++)
{
if(zuo[u]==cen[o]&&bi[u]==hang[o]&&kao[u]==lie[o])
{
do
{
x[o]=x[o+1];
cen[o]=cen[o+1];
hang[o]=hang[o+1];
lie[o]=lie[o+1];
o++;
}
while(o!=n*m*p);
}
}
}
cout<<"将作弊考生踢出后的重新排次为:"<<endl<<endl;
l=0;
for(o=1;o<=n*m*p-t-q;o++)
{
if(x[o]==x[o-1])
{
l++;
cout<<"第"<<o-l<<"名是第"<<cen[o]<<"学校"<<" "<<hang[o]<<"班级"<<" "<<"考号为"<<cen[o]<<" "<<hang[o]<<" "<<lie[o]<<"的考生,他的高考成绩为"<<x[o]<<"分"<<endl;
}
else
cout<<"第"<<o<<"名是第"<<cen[o]<<"学校"<<" "<<hang[o]<<"班级"<<" "<<"考号为"<<cen[o]<<" "<<hang[o]<<" "<<lie[o]<<"的考生,他的高考成绩为"<<x[o]<<"分"<<endl;
l=0;
}
}
if(d==2)
{
cout<<"输入被误判考生的个数:"<<endl;
cin>>t;
for(u=1;u<=t;u++)
{
cout<<"输入误判考生"<<u<<"的考号以及改正后的分数:"<<endl;
cin>>zuo[u]>>bi[u]>>kao[u]>>fen[u];
}
for(u=1;u<=t;u++)
{
for(o=1;o<=n*m*p-y;o++)
{
if(zuo[u]==cen[o]&&bi[u]==hang[o]&&kao[u]==lie[o])
{
x[o]=fen[u];
for(w=1;w<=n*m*p-y;w++)
{
if(o>1)
{
if(x[o]>x[o-1])
{
r=x[o];
x[o]=x[o-1];
x[o-1]=r;
r=cen[o];
cen[o]=cen[o-1];
cen[o-1]=r;
r=hang[o];
hang[o]=hang[o-1];
hang[o-1]=r;
r=lie[o];
lie[o]=lie[o-1];
lie[o-1]=r;
o--;
}
else
break;
}
}
for(w=1;w<=n*m*p-y;w++)
{
if(x[o]<x[o+1])
{
r=x[o];
x[o]=x[o+1];
x[o+1]=r;
r=cen[o];
cen[o]=cen[o+1];
cen[o+1]=r;
r=hang[o];
hang[o]=hang[o+1];
hang[o+1]=r;
r=lie[o];
lie[o]=lie[o+1];
lie[o+1]=r;
o++;
}
else
break;
}
}
}
}
l=0;
for(o=1;o<=n*m*p-y;o++)
{
if(x[o]==x[o-1])
{
l++;
cout<<"第"<<o-l<<"名是第"<<cen[o]<<"学校"<<" "<<hang[o]<<"班级"<<" "<<"考号为"<<cen[o]<<" "<<hang[o]<<" "<<lie[o]<<"的考生,他的高考成绩为"<<x[o]<<"分"<<endl;
}
else
cout<<"第"<<o<<"名是第"<<cen[o]<<"学校"<<" "<<hang[o]<<"班级"<<" "<<"考号为"<<cen[o]<<" "<<hang[o]<<" "<<lie[o]<<"的考生,他的高考成绩为"<<x[o]<<"分"<<endl;
l=0;
}
q=y;
}
}
while(d!=3);
return 0;
}