Как вывести максимальное значение, используя векторный объект в c ++? - PullRequest
0 голосов
/ 16 апреля 2020

enter image description here enter image description here

Функция inputGrade - это функция, которая принимает только целые числа.

Q1.Мне нужно вернуть максимальное значение через функцию topGrade, но я не знаю, почему я вернул его в качестве указателя. Есть ли что-нибудь лучше, чем просто вернуть его как int?

Q2. На фотографии выше, когда объявлен вектор, он не вписал размер. Если компилировать без указания размера, происходит ошибка. Могу ли я думать, что это ошибка?

Q3. Ниже приведен исходный код, который я написал. Есть ли какая-то часть для дополнения?

 #include<iostream>
 #include<vector>
 using namespace std;
 int inputGrade(float grade){
 cin >> grade;
 if ((grade - (int)grade) != 0.0 || grade < 0 || grade>100) {
    cout << "invalid input!!!" << endl;
    exit(EXIT_FAILURE);
}
else
    return (int)grade;
 }
int* topGrade(const vector<int>& grade) {
int max;
if (grade[0] >= grade[1] && grade[0] >= grade[2]) {
    max = grade[0];
    return &max;
}
if (grade[1] >= grade[2] && grade[1] >= grade[0]) {
    max = grade[1];
    return &max;
}
if (grade[2] >= grade[1] && grade[2] >= grade[0]) {
    max = grade[2];
    return &max;
}
}

int main() {
    vector<int>grades(3);
    grades[1] = 0;
    grades[2] = 0;
    float _grade = 0;
    for (int i = 0; i < 3; i++) {
        cout << "input " << i << "-th grade(0~100):";
        int grade = inputGrade(_grade);
        grades[i] = grade;
    }
    cout << "Top Grade: " << *topGrade(grades);
    return 0;
}

Спасибо, что прочитали мой вопрос, и я буду ждать вашего ответа

...