对教授关于课程和班级参数的指示感到非常困惑 - 课程介绍C++

Very confused regarding professor's instructions on classes and class parameters - Intro to C++ course

本文关键字:非常 C++ 程介绍 指示 于课程 参数      更新时间:2023-10-16

我们刚刚在此Intro C CS类中学习课程。我包括大部分提示该项目的信息,以防万一回答我的问题很有帮助,但我大胆地对此有特定的问题。

声明并定义一个称为里程表的类。这堂课将有两个 私人变量,一个用于英里驱动,另一个用于 加仑汽油泵入汽车。我们将假设 汽车从一个满罐开始,但是这些值以零开始 默认构造函数。成员功能应包括:

•一个构造函数,该构造函数为两个私有的初始值 变量。

•将两个值设置为零的默认构造函数。

•get_miles函数

•get_gallons功能

一个add_in_trip_miles函数,该函数增加了英里的参数

中的数量

一个add_gas功能,记录了将汽油泵入多少汽油 坦克。

•返回每加仑英里数的MPG功能 对于驱动的里程和储罐中添加的气体总量。

•将英里和加仑重置为零的重置功能。

在您的程序的顶部写出类声明和 底部的功能定义。在中间写一个主 声明里程表对象,然后为用户提供菜单n a循环 为了让他们选择

  1. 参见总里程
  2. 请参阅总加仑
  3. 记录更多的里程
  4. 泵入水箱的唱片加仑
  5. 请参阅汽车获得的平均MPG - 这是一个基于行驶里程和加仑的总数的累积数字 由于里程表是纬度重置的,因此进入储罐中,或创建的对象
  6. 重置里程表
  7. 退出程序

因此,这两个功能基本上是在做同样的事情,一个函数增加了多少英里,另一个函数通过用户输入的值增加了多少加仑的气体。那么,我对教授的问题是,为什么里程功能需要发送到参数的数据,而加仑功能却没有?它们本质上是相同的,所以我很困惑为什么他们不应该既要通过参数,否则都不应该通过。这是我的代码中的这两个功能:

void Odometer::add_in_trip_miles(){
    double milesToAdd;
    cout << "How many miles would you like to add to the total?" << endl;
    cin >> milesToAdd;
    milesDriven += milesToAdd;
}
void Odometer::add_gas(){
    double gallonsToAdd;
    cout << "How many gallons would you like to add to the total?" << endl;
    cin >> gallonsToAdd;
    gallonsGas += gallonsToAdd;       
}

当前第一个不符合项目提示,因为它不会在参数中传递值,因此它仅在函数本身中使用COUT/CIN来获取值添加到总数中的值。我认为我可以通过将COUT/CIN放入int main((并将该值传递到add_in_trip_miles函数中来满足提示。

我给他发送了有关混乱的电子邮件,并得到了以下回应,这使我更加困惑:

输入/输出功能之间有区别 来自键盘/输入文件或输出信息到 屏幕/输出文件和设置功能。我可以使用 设置功能如果他们想进行自己的用户互动,或者 如果他们从中获取信息 在其他地方 - 也许是一个计算的价值。我希望您 将两者都实现,这是我们通常在编写一个 类,以便为应用程序程序员提供选项。

他只是要求更多的功能仅是输入/输出功能,然后将这些输入功能传递到add_in_trip_milesadd_gas中?这封电子邮件使我更加困惑,因为他提到了所需的每个成员函数(在项目提示中(,并且它们都不是输入功能。

这里的任何指导都会很棒,我的代码目前正是他想要做的,但是我不想受到惩罚,因为我没有以某种方式使用功能,等等。让我知道您伙计们想到的任何帮助!

void Odometer::add_in_trip_miles(double milesToAdd){
    milesDriven += milesToAdd; // assuming milesDriven is the private variable in your class!
}
void Odometer::add_gas(double gallonsToAdd){
    gallonsGas += gallonsToAdd;  // assuming gallonsGas is the private variable in your class!      
}

所以如果我做了这样的事情

// Class up here
int main()
{
    Odometer myOdometer;//default constructor both values are 0.
    myOdometer.add_gas(5);// adds 5 to gallons of gas
    myOdometer.add_in_trip_miles(55);//adds 55 to miles driven
   // so if i did
   cout << "Miles: "<<myOdometer.get_miles() << endl;
   cout << "Gallons: "<<myOdometer.get_gallons() << endl;
   // should display:
   // Miles: 5
   // Gallons: 55
}
// Class functions down here

也许您的教授希望您做这样的事情

 // Something like this perhaps, missing 5,6
int main()
{
    Odometer myOdometer;//default constructor both values are 0.
    int caseInt = 0;
    char enterKey;
    do
    {
        cout << "1. See total miles" << endl;
        cout << "2. See total gallons" << endl;
        cout << "3. Record more miles driven" << endl;
        cout << "4. Record gallons pumped into the tank" << endl;
        cout << "5. See avg mpg" << endl;
        cout << "6. Reset the odometer" << endl;
        cout << "7. Quit the program" << endl << endl;
        cin >> caseInt;
        switch(caseInt)
        {
            case 1:
                cout << endl << "Total Miles: "<<myOdometer.get_miles() << endl;
                break;
            case 2:
                cout << endl << "Total Gallons: "<<myOdometer.get_gallons() << endl;
                break;
            case 3:
                double moremilesdriven;
                cout << "Enter the more miles driven: ";
                cin >> moremilesdriven;
                myOdometer.add_in_trip_miles(moremilesdriven);
                cout << endl;
                break;
            case 4:
                double moreGallons;
                cout << "Enter how many more gallons pumped into the tank: ";
                cin >> moreGallons;
                cout << endl;
                myOdometer.add_gas(moreGallons);
                break;
            case 5:
                break;
            case 6:
                break;
            case 7:
                break;
            default:
                cout << "Must be [1-7], Please try again *How 'bout them Hawkeyes*" << endl;
                break;
        } // end switch
    }while(caseInt != 7);
    return 0;
}

进一步的模块化, *请注意,这不是您的类功能,而是您可以直接使用类的函数,因此您可以使用此功能调用添加添加,因为它正在返回Double

double get_miles()
{
    double moremilesdriven;
    cout << "Enter the more miles driven: ";
    cin >> moremilesdriven;
    cout << endl;
    return moremilesdriven;
}

现在案例语句:

case 3:
    myOdometer.add_in_trip_miles(get_miles());
    break;