Как отобразить имя, связанное с определенной переменной? ... Уточните эту часть - PullRequest
0 голосов
/ 11 марта 2011
#include <iostream>
#include <stack>
#include <string>

using namespace std;

int main()
{
    string name;
    double gpa;
    double high = 0;

    stack<string>names;

    for (int i=0; i<7; i++)
    {
        cout << " Enter student's name and gpa " << endl;
        cin >> gpa ;
        cin >> name ;
    }

    { 
        if (gpa > high)
        {
            high = gpa;
            names.push(name);
        }
        else if (gpa=high)
        {
            high = gpa;
            names.push(name);
        }
    }

    cout << "Highest gpa is"<< high << "Names with highest gpa "<< ??? <<< endl;
    system("pause");

    return 0;
}

Есть этот список имен и с GPA для этих имен, 7, если быть точным.У меня есть алгоритм, чтобы получить самый высокий средний балл, и я знаю, что есть какое-то условие цикла while, которое нужно использовать, чтобы получить имена людей с самым высоким средним баллом.

Из вопроса 2 люди имеют одинаковый самый высокийГПД ... Как я буду отображать оба этих имени с наивысшим ГПД отдельно?Кажется, я не могу получить ту часть, где я мог бы связать имя с ГПД.

Справка была бы очень признательна.

Отредактировано: есть ли более простой способ использования цикла while где-то внутрицикл в моем коде?Где я использую оператор if (gpa < high), я что-то упускаю, чтобы получить имена с самым высоким GPA?

Ответы [ 2 ]

1 голос
/ 11 марта 2011
struct Data {
 std::string name;
 int gpa;
};

затем используйте std::priority_queue<Data> для его сохранения (http://www.cplusplus.com/reference/stl/priority_queue/) (и обязательно создайте оператор сравнения)

Также используйте == для равенства не = (чтоприсвоение)

0 голосов
/ 11 марта 2011

Попробуйте это:

#include <iostream>
#include <stack>
#include <string>
using namespace std;
int main()
{
    string name;
    double gpa;
    double high = 0;
    stack<string>names;
    for (int i=0;i<7;i++) {
        cout << " Enter student's name and gpa " <<endl;
        cin >> gpa;
        cin >> name;
        if (gpa > high) {
            high = gpa;
            names.clear();
            names.push(name);
        }
        else if (gpa == high) {
            names.push(name);
        }
    }
    cout << "Highest gpa is "<< high << " held by:" << endl;
    for (stack<string>::const_iterator it(names.begin()); it != names.end(); ++it) {
        cout << *it << endl;
    }
    system("pause");
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...