C++ элемент max/min в массиве, не зная размера массива
Мне дали задание, ничего особенного, но я тут попал в стену...
После получения арифметических средств мне нужно сравнить их и вывести самые высокие и самые низкие.
X - это число студента, vid[] - среднее арифметическое.
Например:
Студент номер х имеет среднее арифметическое VID [я]
и задача хочет, чтобы я вывел, какой студент имеет самый высокий, а какой - самый низкий.
Хуже всего то, что я не могу использовать такие вещи, как 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 ответа
Если вы хотите, чтобы 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;
}