Update

One new tab added. Open in browser view if it is not visible. (25/08/2022 08:48)

The Time in Words

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: