在不知道数组大小的情况下,数组中的最大/最小元素

C++ max/min element in an array without knowing array size

本文关键字:数组 元素 不知道 情况下      更新时间:2023-10-16

我被分配了一个任务,它没什么特别的,但我确实在这里碰壁了…

得到算术平均值后,我需要比较它们并输出最高和最低的值。

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(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;
}