Xây dựng một lớp Time mô tả các thông tin về giờ, phút và giây.
Lớp Time có các thành phần sau:

  • Các thuộc tính mô tả giờ, phút và giây

  • Hàm thiết lập có ba tham số giờ, phút và giây, được lấy giá trị ngầm định là 0

  • Hàm thành phần set(int, int, int) để xác lập thời gian

  • Hàm hiển thị giờ theo 24 tiếng

  • Hàm hiển thị giờ theo 12 tiếng (AM và PM)

  • Các hàm thành phần dùng để lấy giá trị và xác lập giá trị cho từng thành phần giờ, phút và giây

 

Lời giải

#include <iostream>
#include <iomanip>
using namespace std;

class Time {
private:
    int hour;
    int minute;
    int second;

public:
    // Hàm khởi tạo (constructor) có tham số mặc định
    Time(int h = 0, int m = 0, int s = 0) {
        hour = (h >= 0 && h < 24) ? h : 0;
        minute = (m >= 0 && m < 60) ? m : 0;
        second = (s >= 0 && s < 60) ? s : 0;
    }

    // Hàm set để thiết lập lại giá trị thời gian
    void setTime(int h, int m, int s) {
        hour = (h >= 0 && h < 24) ? h : 0;
        minute = (m >= 0 && m < 60) ? m : 0;
        second = (s >= 0 && s < 60) ? s : 0;
    }

    // Các hàm get để lấy giá trị từng thành phần
    int getHour() const { return hour; }
    int getMinute() const { return minute; }
    int getSecond() const { return second; }

    // Các hàm set riêng từng thành phần
    void setHour(int h) { hour = (h >= 0 && h < 24) ? h : 0; }
    void setMinute(int m) { minute = (m >= 0 && m < 60) ? m : 0; }
    void setSecond(int s) { second = (s >= 0 && s < 60) ? s : 0; }

    // Hàm hiển thị theo 24 giờ
    void display24Hour() const {
        cout << setfill('0') << setw(2) << hour << ":"
             << setfill('0') << setw(2) << minute << ":"
             << setfill('0') << setw(2) << second << endl;
    }

    // Hàm hiển thị theo 12 giờ (AM/PM)
    void display12Hour() const {
        int displayHour = hour % 12;
        if (displayHour == 0) displayHour = 12;
        cout << setfill('0') << setw(2) << displayHour << ":"
             << setfill('0') << setw(2) << minute << ":"
             << setfill('0') << setw(2) << second
             << (hour < 12 ? " AM" : " PM") << endl;
    }
};

int main() {
    Time t1; // Mặc định 00:00:00
    cout << "Thoi gian mac dinh (24h): ";
    t1.display24Hour();
    cout << "Thoi gian mac dinh (12h): ";
    t1.display12Hour();

    Time t2(13, 45, 30);
    cout << "Thoi gian khoi tao (24h): ";
    t2.display24Hour();
    cout << "Thoi gian khoi tao (12h): ";
    t2.display12Hour();

    t2.setTime(23, 59, 59);
    cout << "Thoi gian sau setTime (24h): ";
    t2.display24Hour();
    cout << "Thoi gian sau setTime (12h): ";
    t2.display12Hour();

    return 0;
}

 

Trích đề thi HUST

Để lại một bình luận