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

oop
c++

(Tài Nguyên) #1

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

(Tài Nguyên) #2

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


(rogp10) #3

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


(Tài Nguyên) #4

vi sao ah, em kohng hieu


(Đỗ Đăng Khôi) #5

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.


(SITUVN.gcd) #6

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.


(Tài Nguyên) #7

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?