Problem 45 What Time Is It

来源:互联网 发布:林徽因鲁迅知乎 编辑:程序博客网 时间:2024/05/16 05:50

这个问题是要求把数字形式的时间转换成文字形式的。所有的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;
}

原创粉丝点击