Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Chuyển đổi thời gian sang dạng chữ trong C++

Trong hướng dẫn này, chúng ta sẽ thảo luận về chương trình chuyển đổi thời gian từ định dạng số sang dạng chữ (tiếng Anh).

Ý tưởng chính

Chương trình nhận giờ (h) và phút (m), sau đó in ra dạng chữ theo quy tắc tiếng Anh: "o'clock" cho phút 0, "past" cho phút ≤ 30, "to" cho phút > 30, và các trường hợp đặc biệt như "quarter", "half".

Ví dụ minh họa

#include <bits/stdc++.h>
using namespace std;

void convert_time(int h, int m) {
    char nums[][64] = {
        "zero", "one", "two", "three", "four",
        "five", "six", "seven", "eight", "nine",
        "ten", "eleven", "twelve", "thirteen", "fourteen",
        "fifteen", "sixteen", "seventeen", "eighteen", "nineteen",
        "twenty", "twenty one", "twenty two", "twenty three",
        "twenty four", "twenty five", "twenty six", "twenty seven",
        "twenty eight", "twenty nine"
    };
    if (m == 0)
        printf("%s o' clock\n", nums[h]);
    else if (m == 1)
        printf("one minute past %s\n", nums[h]);
    else if (m == 59)
        printf("one minute to %s\n", nums[(h % 12) + 1]);
    else if (m == 15)
        printf("quarter past %s\n", nums[h]);
    else if (m == 30)
        printf("half past %s\n", nums[h]);
    else if (m == 45)
        printf("quarter to %s\n", nums[(h % 12) + 1]);
    else if (m <= 30)
        printf("%s minutes past %s\n", nums[m], nums[h]);
    else
        printf("%s minutes to %s\n", nums[60 - m], nums[(h % 12) + 1]);
}

int main() {
    int h = 8;
    int m = 29;
    convert_time(h, m);
    return 0;
}

Kết quả

twenty nine minutes past eight

Giải thích: Với 8:29, phút 29 ≤ 30 nên dùng "past". Số 29 được tra trong mảng nums → "twenty nine". Giờ 8 → "eight". Kết quả: "twenty nine minutes past eight".