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 :slight_smile:

#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;
}

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;
1 Like

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 :smiley: 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) :smiley:

2 Likes

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

2 Likes

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

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?