我接到了一项任务,没什么特别的,但我确实在这里碰到了......
获得算术意味着我需要比较它们并输出最高和最低的值。
x是学生编号,vid []是算术编号。
例如:
学号x具有算术平均值vid [i]
并且任务要我输出哪个学生最高,哪个学生最低。
最糟糕的是我无法使用max()和min()之类的东西,因为我不知道总共有多少学生。另外,它们都是具有相同变量名称vid []的数组。
任何帮助将不胜感激=)
int main()
{
int mokSK=0, p1[25], p2[25], p3[25], x[25], vid[25], iv=0;
ifstream inFile("inFile.in");
ofstream outFile("outFile.out");
inFile >> mokSK;
for(int i=0;i<mokSK;i++)
{
inFile >> x[i] >> p1[i] >> p2[i] >> p3[i];
vid[i]=(p1[i]+p2[i]+p3[i])/3;
outFile<< x[i] <<" " << vid[i] << endl;
}
return 0;
}
答案 0 :(得分:5)
如果您希望O(1)访问最高和最低分等级的学生;从阅读开始,在每个阅读通行证中更新最高和最低分的学生。
更清楚:从执行开始就跟踪最小和最高等级的学生,并在需要时更新每个学生数据阅读通行证中的最高和最低等级学生。
答案 1 :(得分:-1)
int main()
{
int mokSK=0, p1[25], p2[25], p3[25],x[25],vid[25],iv=0;
int minmean = INT_MAX; int minstud= 0;// initialize minmean and max mean with first mean
int maxmean = 0; int maxstud= 0;
ifstream inFile("inFile.in");
ofstream outFile("outFile.out");
inFile >> mokSK;
for(int i=0;i<mokSK;i++)
{
inFile >> x[i] >> p1[i] >> p2[i] >> p3[i];
vid[i]=(p1[i]+p2[i]+p3[i])/3;
if(vid[i]>maxmean){maxmean = vid[i]; maxstud = i;}
if(vid[i]<minmean){minmean = vid[i]; minstud = i;}
// not handled if multple students have maxmean or minmean
outFile<< x[i] <<" " << vid[i] << endl;
}
outFile << "Max mean: " << maxmean << ", student id: " << maxstud << endl;
outFile << "Min mean: " << minmean << ", student id: " << minstud << endl;
return 0;
}