Language : C++
(NOTE : Try a few times yourself before moving to the solution)
#include <bits/stdc++.h>
using namespace std;
string ltrim(const string &);
string rtrim(const string &);
/*
* Complete the 'timeInWords' function below.
*
* The function is expected to return a STRING.
* The function accepts following parameters:
* 1. INTEGER h
* 2. INTEGER m
*/
string timeInWords(int h, int m) {
vector v = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen", "twenty", "twenty one", "twenty two", "twenty three", "twenty four", "twenty five", "twenty six", "twenty seven", "twenty eight", "twenty nine" };
string time;
if(m<=30){
if(m==0)
time=v[h]+" o' clock";
else if(m==15)
time="quarter past "+v[h];
else if(m==30)
time="half past "+v[h];
else if(m==1)
time=v[m]+" minute past "+v[h];
else if(m==15)
time="quarter past "+v[h];
else
time=v[m]+" minutes past "+v[h];
}
else{
if(m==45)
time="quarter to "+v[h+1];
else if(m==59)
time=v[60-m]+" minute to "+v[h+1];
else
time=v[60-m]+" minutes to "+v[h+1];
}
return time;
}
int main()
{
ofstream fout(getenv("OUTPUT_PATH"));
string h_temp;
getline(cin, h_temp);
int h = stoi(ltrim(rtrim(h_temp)));
string m_temp;
getline(cin, m_temp);
int m = stoi(ltrim(rtrim(m_temp)));
string result = timeInWords(h, m);
fout << result << "\n";
fout.close();
return 0;
}
string ltrim(const string &str) {
string s(str);
s.erase(
s.begin(),
find_if(s.begin(), s.end(), not1(ptr_fun(isspace)))
);
return s;
}
string rtrim(const string &str) {
string s(str);
s.erase(
find_if(s.rbegin(), s.rend(), not1(ptr_fun(isspace))).base(),
s.end()
);
return s;
}
No comments:
Post a Comment