C ++ элемент max / min в массиве, не зная размера массива - PullRequest
1 голос
/ 12 ноября 2011

Мне дали задание, ничего особенного, но я действительно ударился об стену ...

После получения арифметических значений мне нужно сравнить их и вывести самые высокие и самые низкие.

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

Ответы [ 2 ]

5 голосов
/ 12 ноября 2011

Если вы хотите, чтобы O (1) получил доступ к максимальным и минимальным студентам;с самого начала чтения обновляйте максимальную и минимальную оценку ученика в каждом проходе чтения.

, чтобы быть более понятным: отслеживать минимальную и максимальную оценку ученика с самого начала выполнения и обновлять максимальную и минимальную оценкустуденты при каждом прочтении данных о студентах сдают, если это необходимо.

0 голосов
/ 12 ноября 2011
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;
}
...