对教授关于课程和班级参数的指示感到非常困惑 - 课程介绍C++
Very confused regarding professor's instructions on classes and class parameters - Intro to C++ course
我们刚刚在此Intro C CS类中学习课程。我包括大部分提示该项目的信息,以防万一回答我的问题很有帮助,但我大胆地对此有特定的问题。
声明并定义一个称为里程表的类。这堂课将有两个 私人变量,一个用于英里驱动,另一个用于 加仑汽油泵入汽车。我们将假设 汽车从一个满罐开始,但是这些值以零开始 默认构造函数。成员功能应包括:
•一个构造函数,该构造函数为两个私有的初始值 变量。
•将两个值设置为零的默认构造函数。
•get_miles函数
•get_gallons功能
•一个add_in_trip_miles函数,该函数增加了英里的参数
中的数量•一个add_gas功能,记录了将汽油泵入多少汽油 坦克。
•返回每加仑英里数的MPG功能 对于驱动的里程和储罐中添加的气体总量。
•将英里和加仑重置为零的重置功能。
在您的程序的顶部写出类声明和 底部的功能定义。在中间写一个主 声明里程表对象,然后为用户提供菜单n a循环 为了让他们选择
- 参见总里程
- 请参阅总加仑
- 记录更多的里程
- 泵入水箱的唱片加仑
- 请参阅汽车获得的平均MPG - 这是一个基于行驶里程和加仑的总数的累积数字 由于里程表是纬度重置的,因此进入储罐中,或创建的对象
- 重置里程表
- 退出程序
因此,这两个功能基本上是在做同样的事情,一个函数增加了多少英里,另一个函数通过用户输入的值增加了多少加仑的气体。那么,我对教授的问题是,为什么里程功能需要发送到参数的数据,而加仑功能却没有?它们本质上是相同的,所以我很困惑为什么他们不应该既要通过参数,否则都不应该通过。这是我的代码中的这两个功能:
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_miles
和add_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;
- OpenGL大的3D纹理(>2GB)非常慢
- 为什么需要复制构造函数,在哪些情况下它们非常有用
- 为什么std::互斥需要很长的、非常不规则的时间来共享
- G++ C++17 类模板参数推导在非常特殊的情况下不起作用
- 使用浮点数和双精度数的非常小数字的数学
- 在打开多个其他窗口时使用全屏窗口时帧速率非常低
- 我从int x[3]得到的一个非常奇怪的输出;
- 反向迭代器在C++中非常奇怪的行为
- 将非常大的 int 转换为双倍,在某些计算机上会损失精度
- 我的自定义使用 std::unordered_map 的性能非常慢
- ifstream 尝试读取 9 到 13 之间的无符号字符时非常奇怪的行为
- 一个非常简单的win32套接字代码,但工作错误
- 非常快速地阅读 CSV 文件
- max_element() 给出非常奇怪的错误消息
- 将 mmap 内存用于开销非常低的循环缓冲区
- 内存映射文件访问非常慢
- 超过CPU时间限制:当MPI_Sent一个非常大的int*时
- QtWebengine 5.7.1的性能非常慢
- 如何非常快速地将数字添加到 Vector 中的一系列元素中
- 我在运行函数 GetVolumeInformation() 时得到非常随机的结果