컴공생의 다이어리
[c++] 숫자로 주어진 시간을 텍스트로 변환 본문
문제
시간이 숫자로 주어지면 텍스트로 변환하는 프로그램을 작성하시오. 분이 0이면 o'clock을 사용한다. 1분부터 30분까지는 past를 사용하고 31분부터 59분까지는 to를 사용한다.
코드
#include<iostream>
#include<string>
using namespace std;
void timeInWords(string s[]){
//s[1]~s[20] = 1~20, s[21]~s[29] = 21~29, s[30]=30
s[1] = "one"; s[2] = "two";
s[3] = "three"; s[4] = "four";
s[5] = "five"; s[6] = "six";
s[7] = "seven"; s[8] = "eight";
s[9] = "nine"; s[10] = "ten";
s[11] = "eleven"; s[12] = "twelve";
s[13] = "thirteen"; s[14] = "fourteen";
s[15] = "quarter"; s[16] = "sixteen";
s[17] = "seventeen"; s[18] = "eighteen";
s[19] = "nineteen"; s[20] = "twenty";
s[21] = s[20] + " " + s[1];
s[22] = s[20] + " " + s[2];
s[23] = s[20] + " " + s[3];
s[24] = s[20] + " " + s[4];
s[25] = s[20] + " " + s[5];
s[26] = s[20] + " " + s[6];
s[27] = s[20] + " " + s[7];
s[28] = s[20] + " " + s[8];
s[29] = s[20] + " " + s[9];
s[30] = "half";
}
int main(){
int hr, mn; //hr = hour, mn = minute
string s[31];
string text;//output
while (1){
cout << "hour 입력 : ";
cin >> hr;
cout << "minute 입력 : ";
cin >> mn;
if (hr >= 1 && hr <= 12 && mn >= 00 && mn <= 59)
break;
else
cout << "hour 혹은 minute을 잘못 입력하셨습니다!" << endl;
}
timeInWords(s);
if (mn == 0){
text = s[hr] + " o'clock";
}
else if (mn <= 30){
if (mn == 1)
text = s[mn] + " minute past " + s[hr];
else
text = s[mn] + " minutes past " + s[hr];
}
else if (mn > 30){
if (mn == 59)
text = s[60 - mn] + " minute to " + s[hr + 1];
else
text = s[60 - mn] + " minutes to " + s[hr + 1];
}
cout << text << endl;
return 0;
}
출력결과
728x90
반응형
'Development > C & C++' 카테고리의 다른 글
[c] scanf 데이터 입력 (0) | 2021.03.16 |
---|---|
[c++] 강력한 패스워드 만들기 (0) | 2021.02.17 |
[c++] 두 지점 A, B 사이에 위치할 수 있는 C (0) | 2021.02.14 |
[c++] 입력받은 문자열에서의 특정 문자 빈도 수 (0) | 2021.02.13 |
[c++] 2차 함수의 최대 값과 최소값 찾기 (0) | 2021.02.12 |
Comments