簡體   English   中英

數組中的C ++ max / min元素,不知道數組大小

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

我接到了一項任務,這沒什么特別的,但我確實在這里撞牆了......

獲得算術意味着我需要比較它們並輸出最高和最低的值。

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

如果你想要O(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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM