30/09/2018, 23:17

Hackerrank Challenge : Day 2 : MealCost

Mình đang theo khóa này của anh Đạt trên Youtube và cũng tự solve các challenge luôn.
Mình sẽ post lời giải của mình ở đây,ai có cách làm ngắn gọn hơn thì góp ý với nhé
Bài MealCost

#include <cmath>
#include <cstdio>
#include <iostream>
#include <vector>
#include <iostream>
#include <algorithm>
#include <iomanip>
using namespace std;


int main() {
	/* Enter your code here. Read input from STDIN. Print output to STDOUT */  
	double mealCost;
	int tipPercent;
	int taxPercent;
	cin >> mealCost;
	cin >> tipPercent;
	cin >> taxPercent;
	double totalCost = mealCost + (mealCost * tipPercent/100) + (mealCost * taxPercent/100);
	int payment = mealCost + (mealCost * tipPercent/100) + (mealCost * taxPercent/100);
	double soDu = totalCost - payment;
	if (soDu >= 0.5){
	 payment += 1;
	 cout << "The total meal cost is "<< payment << " dollars." << endl;
	}
	else{

		cout << "The total meal cost is "<< payment << " dollars." << endl;

	}
	return 0;
}
Mai Anh Dũng viết 01:18 ngày 01/10/2018

Bài này có một chỗ có thể cải tiến được.

    double mealCost;
    double tipPercent;
    double taxPercent;
    
    cin >> mealCost >> tipPercent >> taxPercent;

    double tip = mealCost * tipPercent / 100;
    double tax = mealCost * taxPercent / 100;
    double totalCost = mealCost + tip + tax;

    cout << "The total meal cost is " << round(totalCost) << " dollars.";

    return 0;
Beo Sen viết 01:19 ngày 01/10/2018

round

Cám ơn anh tại em ko biết cái round() này (hehe tranh thủ ghi vào note luôn)
Lúc đầu em dùng double cho cái mealCost rồi sau đó em sài int cho cái totalCost (vì int nên là số lẻ kiểu 1.23456 thì nó đưa ra số 1) --> cheat Thì bị fail cái test case cuối (chắc nó là kiểu 1.9999 -> phải làm tròn lên 2 thì int nó lại về 1)

Sơn viết 01:33 ngày 01/10/2018

Em thiếu cái dấu chấm đằng sau dollars, mất nửa tiếng mới mò ra

Người bí ẩn viết 01:23 ngày 01/10/2018

Haha
Bởi vậy, nhiều người code giỏi lắm mà vô 30 days không biết sai lỗi ngố ngẩn nao

Bài liên quan
0