Как бы я реализовал эту функцию maximumGrade?

#c

Вопрос:

 #include <fstream> // For file handling
#include <iomanip> // For formatted output
#include <iostream> // For cin, cout, and system
#include <string> // For string data type
#include "CourseGrade.h"
using namespace std;

CourseGrade* maximumGrade(CourseGrade* course0, CourseGrade* course1)
{

}

int main()
{
    cout << "Course Grade App!" << endl;
    cout << "--------------------------" << endl;
    cout << endl;

    //Prompting and creating CourseGrade objects and pointer values from inputs
    int c1;
    float g1;
    cout << "Please enter the first course and its grade: ";
    cin >> c1 >> g1;
    CourseGrade Course0(c1, g1);
    CourseGrade* ptrCourse0;
    ptrCourse0 = amp;Course0;

    int c2;
    float g2;
    cout << "Please enter the second course and its grade: ";
    cin >> c2 >> g2;
    CourseGrade Course1(c2, g2);
    CourseGrade* ptrCourse1;
    ptrCourse1 = amp;Course1;

    int c3;
    float g3;
    cout << "Please enter the third course and its grade: ";
    cin >> c3 >> g3;
    CourseGrade Course2(c3, g3);
    CourseGrade* ptrCourse2;
    ptrCourse2 = amp;Course2;


    cout << "-----------------------------------" << endl;
    cout << "Course" << setw(10) << "Grade" << endl;
    cout << "-----------------------------------" << endl;
    cout << ptrCourse0->getCourse() << setw(10) << ptrCourse0->getGrade() << endl;
    cout << ptrCourse1->getCourse() << setw(10) << ptrCourse1->getGrade() << endl;
    cout << ptrCourse2->getCourse() << setw(10) << ptrCourse2->getGrade() << endl;
    cout << "-----------------------------------" << endl;

    cout << "The course with the maximum grade is: " << maximumGrade(ptrCourse0, ptrCourse1) << endl;

    cout << "The average grade is: " << (ptrCourse0->getGrade()   ptrCourse1->getGrade()   ptrCourse2->getGrade()) / 3 << endl;
}
// End of main.cpp

void CourseGrade::setCourse(int c)
{
    if (c >= 1000 amp;amp; c <= 9999)
    {
        course = c;
    }
}

void CourseGrade::setGrade(float g)
{
    if (g >= 0.00 amp;amp; g <= 100.00)
    {
        grade = g;
    }
    
}

int CourseGrade::getCourse() const
{
    return course;
}

float CourseGrade::getGrade() const
{
    return grade;
}

CourseGrade::CourseGrade(int c, float g)
{
    if (c >= 1000 amp;amp; c <= 9999)
    {
        course = c;
    }
    else
    {
        course = 1000;
    }

    if (g >= 0.00 amp;amp; g <= 100.00)
    {
        grade = g;
    }
    else
    {
        grade = 0.00;
    }
}
 

Не могли бы вы, ребята, пожалуйста, помочь мне? У меня есть три объекта из-за запроса, но он запрашивает только два указателя? Я совершенно не знаю, как получить максимальную оценку, чтобы показать курс с наибольшей оценкой. Я попытался использовать операторы if для сравнения оценок двух указателей, показывающих значения оценок. Он ДОЛЖЕН использовать указатели для сравнения оценок курса. Спасибо вам, ребята!

Ответ №1:

У меня есть три объекта из-за запроса, но он запрашивает только два указателя?

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

     CourseGrade courses[3] = { Course0, Course1, Course2 };
    cout << "The course with the maximum grade is: "
         << maximumGrade(courses, courses 3)->getCourse() << endl;
 

Тело maximumGrade может тогда быть, например.

     CourseGrade *c = NULL;
    float g = 0;    // current maximum
    for (; course0 < course1;   course0) if (g <= course0->getGrade())
                                             g = (c = course0)->getGrade();
    return c;
 

Комментарии:

1. Спасибо, но я решил эту проблему целую вечность назад.