1

私は仕事を与えられました、それは特別なことではありませんが、私はここで壁にぶつかりました...

算術的な手段を得た後、私はそれらを比較し、最高のものと最低のものを出力する必要があります。

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

2 に答える 2

5

O(1)が最大および最小の成績の学生にアクセスするようにしたい場合。リーディングの最初から、各リードパスで最高および最低の成績の生徒を更新します。

より明確にするために:実行の最初から最小および最大の成績の学生を追跡し、必要に応じて各学生のデータ読み取りパスで最大および最小の成績の学生を更新します。

于 2011-11-12T13:10:31.703 に答える
-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;
}
于 2011-11-12T13:34:17.537 に答える