c++ - 如何为我的 3 个数据成员中的每一个调用 set 方法,然后显示我的 set 方法设置的值?
问题描述
我现在正在做我的 C++ 简介作业,只是卡在最后一点,非常感谢一些帮助。
家庭作业的方向是:
确保小时值在 0 – 23 范围内;如果不是,则将小时设置为 1。
确保分钟值在 0 – 59 范围内;如果不是,则将分钟设置为 0。
确保第二个值在 0 – 59 范围内;如果不是,则将第二个设置为 0。
使用上面的值为每个数据成员提供一个 set 函数来验证进入数据成员的输入。
此外,为每个数据成员提供一个 get 函数以检索其值。
提供一个成员函数 displayTime(),它显示小时、分钟和秒,每个都用冒号分隔(示例:3:45:29)。displayTime 应该使用 get 函数来检索数据成员中的数据。
编写一个测试程序来演示 Time 类的功能,如下所示:
1.提示时分秒。
2.创建一个 Time 对象,传递响应上述提示而输入的值。
3.调用displayTime显示“初始时间”。
4.再次提示时分秒,分别调用3个数据成员的set方法。
5.再次调用displayTime显示“修改时间”。
我的项目的当前代码以 .cpp 文件开头:
#include <iostream>
using namespace std;
class Time {
public:
//Time constructor
Time(int hour, int minute, int second)
{
setTime(hour, minute, second);
}
void setTime(int input_hour, int input_minute, int input_second)
{
setHour(input_hour);
setMinute(input_minute);
setSecond(input_second);
}
//set hour function
void setHour(int input_hour)
{
if (input_hour >= 0 && input_hour < 24)
{
hour = input_hour;
}
else
hour = 1;
}
//set minute function
void setMinute(int input_minute)
{
if (input_minute >= 0 && input_minute < 60)
{
minute = input_minute;
}
else
minute = 0;
}
//set second function
void setSecond(int input_second)
{
if (input_second >= 0 && input_second < 60)
{
second = input_second;
}
else
second = 0;
}
//get functions
int getHour()
{
return hour;
}
int getMinute()
{
return minute;
}
int getSecond()
{
return second;
}
// display function
void displayTime()
{
cout << "Time is " << hour << ":" << minute << ":" << second;
}
//private data members
private:
int hour;
int minute;
int second;
};
现在 .h 文件:
#include <iostream>
#include "Time.h"
using namespace std;
int main()
{
int hour, minute, second;
cout << "Enter the hour: ";
cin >> hour;
cout << "Enter the minute: ";
cin >> minute;
cout << "Enter the second: ";
cin >> second;
Time printTime{ hour, minute, second };
cout << "Time is " << printTime.getHour() << ":" << printTime.getMinute() << ":" << printTime.getSecond();
cout << "\n\nEnter the hour: ";
cin >> hour;
cout << "Enter the minute: ";
cin >> minute;
cout << "Enter the second: ";
cin >> second;
cout << "Time is " << setTime();
//the two lines to keep my debugger from crashing
std::cin.ignore();
std::cin.get();
}
我已经顺利完成了 1-3 步,但它的第 4 步和第 5 步让我失望了。我不完全确定我应该在这里做什么。我明白应该发生什么。它应该再次要求用户输入数据,然后它应该通过 set 函数吐出 1:0:0 这是“修改时间”(我认为),但我不确定如何正确编码. 我有一种感觉,这很简单,但我又不知道该怎么做。"倒数第三行 cout << "Time is " << setTime(); 显然不起作用。这是我第一次学习如何编程,所以我不完全确定要做什么做。无论如何,谢谢你的任何帮助。
解决方案
据我了解,您只需要使用您之前创建的设置功能来更改时间。像这样的东西:(未经测试)
编辑:有printTime.displayTime();
使用它!
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main(){
int hour, minute, second;
cout << "Enter the hour: ";
cin >> hour;
cout << "Enter the minute: ";
cin >> minute;
cout << "Enter the second: ";
cin >> second;
Time printTime{ hour, minute, second };
printTime.displayTime();
cout << "\n\nEnter the hour: ";
cin >> hour;
//Change the hour, minutes, and seconds - then display again
printTime.setHour(hour);
cout << "Enter the minute: ";
cin >> minute;
printTime.setMinute(hour);
cout << "Enter the second: ";
cin >> second;
printTime.setSecond(hour);
//Modified time
printTime.displayTime();
}
推荐阅读
- python - sklearn 管道中的列特定处理
- python - 如何在python程序中实现服务器URL
- c# - MessageReceived 处理程序正在阻止网关任务
- java - Java NetBeans 中的 JXTitledPanel 是什么
- android - CoroutineScope(job+Dispatchers.Main) 如何在主/UI 线程上运行?
- c# - 如果定义通过反射位于类内部,则无法检索枚举类型
- vbscript - 配置多个帐户时如何自动化 Outlook?
- opengl - OpenGL 使用着色器将 NV12 转换为 RGB24
- html - 如何将函数的输出作为对象读取
- javascript - 使用正则表达式删除 jquery 字符串中的单引号和最后一个逗号