Day 2 - Operators

HackerRank's 30 Days of Code

·

2 min read

Takeaways of the day:

  • round()

  • reminder to convert the variable types using eg double (tax_percent)

  • take your time

The challenge:

I was honestly a little lost as I was tackling the challenge due to the long string of provided codes... This led to me frantically trying to understand the codes by intensively researching on them.

I mean... just what is ltrim() and rtrim()? There's also stoi and more unfamiliar words...

Ultimately, I just gave up on understanding the provided code and focused on finishing the task instead... While that is probably not the most desirable thing to do right now, I think it is the best approach for me, since I find myself forgetting the new concepts and terms without putting them to use...

The Solution:

#include <bits/stdc++.h>
#include <cmath>

using namespace std;

string ltrim(const string &);
string rtrim(const string &);

/*
 * Complete the 'solve' function below.
 *
 * The function accepts following parameters:
 *  1. DOUBLE meal_cost
 *  2. INTEGER tip_percent
 *  3. INTEGER tax_percent
 */

void solve(double meal_cost, int tip_percent, int tax_percent) {
    double tip = meal_cost * (double (tip_percent)/100);
    double tax = meal_cost * (double (tax_percent)/100);
    double final_cost = meal_cost + tip + tax;
    cout << round(final_cost);

}
//the rest of the codes were provided
int main()
{
    string meal_cost_temp;
    getline(cin, meal_cost_temp);

    double meal_cost = stod(ltrim(rtrim(meal_cost_temp)));

    string tip_percent_temp;
    getline(cin, tip_percent_temp);

    int tip_percent = stoi(ltrim(rtrim(tip_percent_temp)));

    string tax_percent_temp;
    getline(cin, tax_percent_temp);

    int tax_percent = stoi(ltrim(rtrim(tax_percent_temp)));

    solve(meal_cost, tip_percent, tax_percent);

    return 0;
}

string ltrim(const string &str) {
    string s(str);

    s.erase(
        s.begin(),
        find_if(s.begin(), s.end(), not1(ptr_fun<int, int>(isspace)))
    );

    return s;
}

string rtrim(const string &str) {
    string s(str);

    s.erase(
        find_if(s.rbegin(), s.rend(), not1(ptr_fun<int, int>(isspace))).base(),
        s.end()
    );

    return s;
}

See you in the next post!