Bài tập Lập trình hướng đối tượng nạp chồng toán tử

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

Mắc 2 câu cuối?

  • nạp chồng là cái gì? gg thử xem
  • sắp xếp theo vận tốc cơ sở giảm dần? Biết cách dùng thuật toán sắp xếp chưa? Chưa thì cũng gg luôn đi. :v

Gg xong còn gì mắc thì cứ hỏi tiếp, k phải ngại, càng hỏi mới càng khôn ra.

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