Code đúng nhưng logic có vấn đề

Anh chị cho em hỏi tí ạ, đoạn code em gõ thầy giáo bảo là đúng nhưng logic có vấn đề. Mọi người giúp em được không ạ. Em cảm ơn

#include<iostream.h>

class Car
{
public:       
	void init(double,double);        
	double getEff()  {return gas; }  
    double checkGas()  {return gas; }
	double go(double);  
private:                
	double gas;         
	double eff;          
};

double Car::go(	double kilo)
{
	if (gas >= (kilo/eff))            
	{
		gas -= kilo/eff;              
		cout << " Tank only left " << checkGas() << " Liter gas " << endl;
		if (gas==0)          
			cout << " no gas ! ";
	}
	else 
	 {
	   cout << " gas not enough, Tank's gas only cas run "
		    << (kilo = gas * eff)<<" Km ";
	   gas = 0 ;
	}
	return kilo;
}
void Car::init(double G, double E)
{
	gas = G;
	eff = E;
}
int main(void)
{
	Car super;
	super.init(20,30);
	cout << " 1 liter gas can run "<< super.getEff()
		 << " Km " << endl;
	cout << " Tank have " << super.checkGas() << " liter gas, now " << endl;

	while ( super.checkGas() > 0 )
	{
		double kilo;
		cout << " How many Km do you run : ";
		cin >> kilo ;
		super.go(kilo);
	}
	return 0;
}

la sao ah, ac co the noi ro cho e duoc ko ah

Bạn vui lòng KHÔNG đặt tên đối tượng là super :smiley:

2 Likes

vi sao ah, em kohng hieu

Logic có vấn đề
Vậy bài toán yêu cầu gì ?
Có lẻ code không thỏa yêu cầu đề nên sai Logic thôi.

1. Sai sót

2. Hàm dựng

Bạn nên khởi tạo bằng hàm dựng thay vì dùng hàm init().

3. cout

Không/hạn chế in ra trực tiếp trong các phương thức của lớp.

2 Likes

E tìm đc lỗi sai rồi, bài toán là 1 lít gas thì xe chạy đk 20km, xe còn 20 lít, mình nhập số km vào thì sẽ hiện ra số xắng thừa. E nhập vào và tính số xăng thừa thấy sai với tí lệ nên sửa lại chỗ init(20,30) thành 20,20

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