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".