这个问题是要求把数字形式的时间转换成文字形式的。所有的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;
}
博客围绕将数字形式的时间转换成文字形式的问题展开,指出所有规则已给出,编码时需全面考虑,避免遗漏情况。
934

被折叠的 条评论
为什么被折叠?



