컴공생의 다이어리

[c++] 숫자로 주어진 시간을 텍스트로 변환 본문

Development/C & C++

[c++] 숫자로 주어진 시간을 텍스트로 변환

컴공 K 2021. 2. 15. 23:45

문제

시간이 숫자로 주어지면 텍스트로 변환하는 프로그램을 작성하시오. 분이 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
반응형
Comments