em có một bài tập và bị mắc ở 2 câu cuối, em cũng ko hiểu lắm về cái nạp toán tử nữa, đây là đề ạ:
Bài tập 40:
Xây dựng lớp PhuongTienGiaoThong (phương tiện giao thông):
+) Thuộc tính : Hãng sản xuất (chuỗi ký tự), Tên phương tiện (chuỗi ký tự), Năm sản xuất (số nguyên), Vận tốc tối đa (float).
+) Phương thức : Hàm thiết lập, hàm nhập, hàm xuất.
- Xây dựng lớp OTo (ô tô) kế thừa lớp PhuongTienGiaoThong bổ sung thêm:
Thuộc tính : Số chỗ ngồi (int), Kiểu động cơ (chuỗi ký tự).
Phương thức:
-
Hàm thiết lập, hàm huỷ bỏ, hàm nhập, hàm xuất.
-
Vận tốc cơ sở: được tính bằng vận tốc tối đa chia cho số bánh.
-
Nạp chồng toán tử < (phương tiện giao thông có “Vận tốc cơ sở” nhỏ hơn thì nhỏ hơn).
Chương trình chính:
(3 -) Nhập từ bàn phím thông tin của một phương tiện giao thông PhuongTienGiaoThong.
(2 -) Hiển thị thông tin của phương tiện giao thông vừa nhập ra màn hình.
(2 -) Nhập thông tin cho n đối tượng OTO bao gồm: Hãng sản xuất, Tên phương tiện, Năm sản xuất, Vận tốc tối đa, số chỗ ngồi, kiểu động cơ.
(1 -) In ra màn hình thông tin của n đối tượng OTO cùng với vận tốc cơ sở.
(2 -) Sắp xếp danh sách các đối tượng OTO theo thứ tự giảm dần của vận tốc cơ sở.
còn đây là code của em ạ:
#include "iostream"
#include "iomanip"
#include "string"
using namespace std;
class PHUONGTIENGIAOTHONG
{
protected:
string hangsx;
string tenpt;
int namsx;
float vmax;
public:
PHUONGTIENGIAOTHONG()
{
hangsx="";
tenpt="";
namsx=0;
vmax=0;
};
void Nhap();
void Xuat();
};
class OTO : public PHUONGTIENGIAOTHONG
{
protected:
int soghe;
string kieudongco;
public:
OTO()
{
soghe = 0;
kieudongco = "";
}
void Nhapth();
void Xuatth();
float Vbase = vmax/4;
bool operator< (OTO &o)
{
if(Vbase < o.Vbase)
return true;
else
return false;
};
};
void swap(OTO &o1,OTO &o2)
{
OTO temp = o1;
o1 = o2;
o2 = temp;
}
void PHUONGTIENGIAOTHONG::Nhap()
{
cout << "Nhap thong tin phuong tien: " << endl;
cout << "Hang san xuat: ";
fflush(stdin);
getline(cin, hangsx);
cout << "Ten phuong tien: ";
fflush(stdin);
getline(cin, tenpt);
cout << "Nam san xuat: ";
cin >> namsx;
cout << "Van toc toi da (km/h): ";
cin >> vmax;
}
// 2
void PHUONGTIENGIAOTHONG::Xuat()
{
cout << setw(10) << hangsx;
cout << setw(15) << tenpt;
cout << setw(15) << namsx;
cout << setw(15) << vmax;
}
// 3
void OTO::Nhapth()
{
PHUONGTIENGIAOTHONG::Nhap();
fflush(stdin);
cout << "so cho ngoi: ";
cin >> soghe;
cout << "kieu dong co: ";
fflush(stdin);
getline(cin, kieudongco);
Vbase;
}
// 4
void OTO::Xuatth()
{
PHUONGTIENGIAOTHONG::Xuat();
cout << setw(15) << soghe;
cout << setw(15) << kieudongco;
cout << setw(15) << Vbase << endl;
}
int main()
{
int n, i;
PHUONGTIENGIAOTHONG p;
p.Nhap();
cout << "thong tin phuong tien vua nhap: " << endl;
p.Xuat();
OTO o[50];
cout << "\n nhap so o to: ";
cin >> n;
for (i = 0; i < n; i++)
o[i].Nhapth();
cout << "thong tin " << n << setw(5) << " doi tuong o to:" << endl;
for (i = 0; i < n; i++)
o[i].Xuatth();
}