Problem 45 What Time Is It

博客围绕将数字形式的时间转换成文字形式的问题展开,指出所有规则已给出,编码时需全面考虑,避免遗漏情况。

这个问题是要求把数字形式的时间转换成文字形式的。所有的regulation都给出了,编码的时候小心一点考虑全面就是了。

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main(){
 
 string exp;
 
 int hr, min;
 char dump;
 ifstream fin("clock.in");
 fin>>hr>>dump>>min;

 string hour[] = {"one", "two", "three", "four",
      "five","six", "seven", "eight",
      "nine","ten", "eleven","twelve"};

 string minute[] = {" o'clock", "one", "two", "three",
        "four", "five","six", "seven",
        "eight", "nine", "ten", "eleven",
        "twelve", "thirteen", "fourteen",
        "fifteen","sixteen", "seventeen",
        "eighteen","nineteen"};

 string key[] = {"twenty", "thirty", "forty"};
 
 switch(min){
  case 0:
   exp = hour[hr - 1] + minute[min];
   break;
  case 15:
   exp = "quarter past " + hour[hr - 1];
   break;
  case 30:
   exp = hour[hr - 1] + " thirty";
   break;
  case 45:
   exp = "quarter to " + hour[hr % 12];
   break;
  default:
   if(min < 20) exp = hour[hr - 1] + " " + minute[min];
   else if(min > 45)
    exp = minute[60 - min] + " to " + hour[hr % 12];
   else{
    exp = hour[hr - 1] + " " + key[min / 10 - 2];
    if(min % 10) exp = exp + "-" + minute[min % 10];
   }
   break;
 }
 
 // ASCII code: 'A' = 65, 'a' = 97
 exp[0] = exp[0] - (97 - 65);
 ofstream fout("clock.out");
 fout<<exp<<endl;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值