首页 > 解决方案 > 如何为我的 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(); 显然不起作用。这是我第一次学习如何编程,所以我不完全确定要做什么做。无论如何,谢谢你的任何帮助。

标签: c++

解决方案


据我了解,您只需要使用您之前创建的设置功能来更改时间。像这样的东西:(未经测试)

编辑:有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();

}

推荐阅读