Bài toán tính tiền taxi c++

#include<iostream>

using namespace std;

int main() {
	int km;
	float moneypay,pay2,pay5;
	cout << "enter your km do you go: ";          
	cin >> km;
	pay2 = 15000+13500 * (km-1);
	pay5 = 15000 + 13500 * 4 + 11000 * (km - 5);
	moneypay = pay5 * (90 / 100);
	if (km == 1)
		cout << "you have to pay: 15000" << endl;
	else if ((km>=2)&&(km<=5))
		cout<<"you have to pay: 15000+13500*"<<(km-1)<<" = "<<pay2<<endl;
	else
	{
		if (km > 12) {
			cout << "you have to pay: 15000+13500*4+11000*" << (km - 5) << " = " << pay5 << endl;
			cout << "but you spend more than 12km so you are saled. Your money you have to pay is: " << moneypay << endl;
		}
		else 
			cout << "you have to pay: 15000+13500*4+11000*" << (km - 5) << " = " << pay5 << endl;

	}
	system("pause");
	return 0;
}

mình có bài toán tính tiền taxi. km1 thì 15k,km2 tới 5 thì 13500,km5 trở đi thì 11k nếu đi trên 12km thì giảm 10%tổng tiền. khi mình chạy code này thì nhập km là 15 tính tất cả đều tốt nhưng biến moneypay trả về bằng 0. mình tìm rất lâu mà không hiểu sai ở đâu. mọi người giúp mình ạ

(90 / 100) là kiểu int nên chia cho nhau nó bằng 0.Ép kiểu sang float (90.0f / 100) hoặc ((float)90 / 100) . Không nhớ C++ nữa. Hình như vậy

2 Likes

đúng r chỗ (90/100) sẽ = 0.9 vì là chia lấy nguyên / nên sẽ lấy 0 sau đó * pay5 nên moneypay = 0
bạn ép kiểu 1 trong 2 về float.vì ở đây là số nên bạn lấy 90 * 1.0 hoặc 100 * 1.0 cho tiện
done !

sủa thành moneypay = pay5 * 90 / 100; là ok bác . để thế kia là nó lấy phần nguyên của phép chia 2 số nguyên

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