ThoiGian

/*Thời gian có giờ và phút, giờ có giá trị trong khoảng 0-23, phút có giá trị trong khoảng 0-59.
Nhập vào thời gian bắt đầu một ca thi và số phút làm bài thi. Tính thời gian kết thúc ca thi. 
Yêu cầu sử dụng toán tử nhập >> và toán tử xuất << để nhập vào và đưa ra thời gian ở dạng h:mm, 
sử dụng toán tử + để cộng thời gian với số phút,
thời gian được khởi tạo tự động với giờ và phút bằng 0 hoặc khởi tạo bằng giờ, phút cho trước.*/
#include <iostream>
#include <stdio.h>

using namespace std;

//khai bao lop doi tuong thoi gian
class ThoiGian
{
    private:
        int gio, phut;
    
    public:
        ThoiGian();
        ThoiGian operator+(int n);
        //ham ban
        friend istream& operator>>(istream &cin , ThoiGian &tg);
        friend ostream& operator<<(ostream &cout , ThoiGian &tg);
};
//===chuong trinh chinh===
int main()
{
    //tao doi tuong thoi gian
    ThoiGian bd, kt;
    
    //khai bao bien;
    int n;
    
    cout<<"Chuong trinh tinh thoi gian ket thuc cua ca thi.\n\n";
    cout<<"Nhap vao thoi gian bat dau "; cin>>bd;
    cout<<"Nhap vao so phut: "; cin>>n;
    
    //tinh thoi gian ket thuc
    kt = bd + n;
    
    //dua ra man hinh
    printf("\nThoi gian ket thuc ca thi sau %d phut la: ", n);
    cout<<kt;
    
    cout<<endl;
    return 0;
}
//===dinh nghia ham===
ThoiGian::ThoiGian():gio(0),phut(0)
{
    
}

ThoiGian ThoiGian::operator+(int n)
{
    ThoiGian tg;
    
    //cong thoi gian voi n phut
    tg.gio = gio;
    tg.phut = phut + n;
    
    //hieu chinh gio, phut
    tg.gio += tg.phut / 60;
    tg.phut = tg.phut % 60;
    tg.gio = tg.gio % 24;
    
    return tg;
}

//ham ban
istream& operator>>(istream &cin , ThoiGian &tg)
{
    char kt;
    cout<<"(dang h:m): ";
    cin>>tg.gio>>kt>>tg.phut;
   
    return cin;
}

ostream& operator<<(ostream &cout , ThoiGian &tg)
{
    printf("%d:%2d", tg.gio, tg.phut);
    
    return cout;
}

Last updated