10+ bài tập lập trình hướng đối tượng C++ có lời giải 2022

Lập trình hướng đối tượng chính là kiến thức cơ bản của hầu hết tất cả những ngôn ngữ lập trình hiện nay. Vì vậy, bạn chỉ cần hiểu sâu thì có thể áp dụng chúng một cách dễ dàng. Bài viết dưới đây sẽ là những bài tập lập trình hướng đối tượng c++ có lời giải mà bạn có thể tham khảo.

bai-tap-lap-trinh-huong-doi-tuong-c-co-loi-giaii

Đề bài số 1

Xây dựng lớp Phanso gồm:

Thuộc Tính: tuso, mauso.

Phương thức:

  • Hàm Khởi Tạo Không Tham Số, Hàm Hủy
  • Nhập , Xuất
  • Cong(), Tru(), Nhan(), Chia()

Tính Tổng, Hiệu, Tích, Thương 2 phân số obj1 và obj2 rồi in kết quả ra màn hình

Code xây dựng class Phân số:

#include <bits/stdc++.h>

using namespace std;

class Phanso

{

private:

int tuso, mauso;

public:

Phanso()

{

tuso = 0;

mauso = 1;

}

~Phanso()

{

tuso = 0;

mauso = 1;

}

//—————————————————————–//

void set()

{

cout << “Nhap Tu So: “; cin >> this->tuso;

cout << “Nhap Mau So: “; cin >> this-> mauso;

}

void get()

{

cout << this->tuso << “/” << this->mauso << endl;

}

//—————————————————————–//

Phanso Cong(Phanso obj1, Phanso obj2)

{

Phanso obj3;

obj3.tuso = obj1.tuso * obj2.mauso + obj1.mauso * obj2.tuso;

obj3.mauso = obj1.mauso * obj2.mauso;

return obj3;

}

Phanso Tru(Phanso obj1, Phanso obj2)

{

Phanso obj3;

obj3.tuso = obj1.tuso * obj2.mauso – obj1.mauso * obj2.tuso;

obj3.mauso = obj1.mauso * obj2.mauso;

return obj3;

}

Phanso Nhan(Phanso obj1, Phanso obj2)

{

Phanso obj3;

obj3.tuso = obj1.tuso * obj2.tuso;

obj3.mauso = obj1.mauso * obj2.mauso;

return obj3;

}

Phanso Chia(Phanso obj1, Phanso obj2)

{

Phanso obj3;

obj3.tuso = obj1.tuso * obj2.mauso;

obj3.mauso = obj1.mauso * obj2.tuso;

return obj3;

}

};

int main()

{

Phanso obj1, obj2, obj3;

obj1.set(); obj2.set();

obj3 = obj3.Cong(obj1, obj2); obj3.get();

obj3 = obj3.Tru(obj1, obj2); obj3.get();

Đọc thêm:  Bài ca ngắn đi trên bãi cát giáo án chi tiết mới nhất 2022

obj3 = obj3.Nhan(obj1, obj2); obj3.get();

obj3 = obj3.Chia(obj1, obj2); obj3.get();

return 0;

}

Input:

1 2

3 4

Output

10/8

-2/8

3/8

4/6

Đề bài số 2

Xây dựng lớp vận động viên VanDongVien gồm:

Thuộc tính: hoten (chuỗi ký tự), tuoi (số nguyên), monthidau (chuỗi ký tự), cannang (số thực), chieucao (số thực).

Phương thức:

  • Thiết lập không tham số.
  • Thiết lập 5 tham số
  • Hủy bỏ
  • Nạp chồng toán tử nhập >>
  • Nạp chồng toán tử xuất <<
  • Nạp chồng toán tử so sánh > (một vận động viên là lớn hơn nếu chiều cao lớn hơn, trong trường hợp chiều cao bằng nhau thì xét cân nặng lớn hơn)

Xây dựng chương trình chính:

  • Khai báo p là đối tượng lớp Vandongvien (sử dụng hàm thiết lập 5 tham số), hiển thị thông tin của p ra màn hình.
  • Nhập vào một mảng gồm n vận động viên.
  • Hiển thị danh sách đã nhập ra màn hình.
  • Sắp xếp mảng đã nhập theo thứ tự tăng dần, hiển thị danh sách đã sắp ra màn hình.

Lời Giải:

#include <bits/stdc++.h>

using namespace std;

class VanDongVien

{

protected:

string hoten, monthidau;

int tuoi;

float cannang, chieucao;

public:

VanDongVien()

{

this->hoten = this->monthidau = “”;

this->tuoi = 0;

this->cannang = this->chieucao = 0;

}

VanDongVien(string hoten, string monthidau, int tuoi, float cannang, float chieucao)

{

this->hoten = hoten;

this->monthidau = monthidau;

this->tuoi = tuoi;

this->cannang = cannang;

this->chieucao = chieucao;

}

~VanDongVien()

{

this->hoten = this->monthidau = “”;

this->tuoi = 0;

this->cannang = this->chieucao = 0;

}

//———————————————-//

friend istream &operator>>(istream &is, VanDongVien &obj)

{

cin.ignore();

cout << “Nhap Ho Ten: “; fflush(stdin); getline(is, obj.hoten);

cout << “Nhap Mon Thi Dau: “; fflush(stdin); getline(is, obj.monthidau);

Đọc thêm:  Download đề thi tiếng Anh trình độ A2 miễn phí có đáp án

cout << “Nhap Tuoi: “; is >> obj.tuoi;

cout << “Nhap Can Nang: “; is >> obj.cannang;

cout << “Nhap Chieu Cao: “; is >> obj.chieucao;

return is;

}

friend ostream &operator<<(ostream &os, VanDongVien obj)

{

cout << “Ho Ten: ” << obj.hoten << endl;

cout << “Mon Thi Dau: ” << obj.monthidau << endl;

cout << “Tuoi: ” << obj.tuoi << endl;

cout << “Can Nang: ” << obj.cannang << endl;

cout << “Chieu cao: ” << obj.chieucao << endl;

return os;

}

bool operator > (const VanDongVien &obj)

{

if (this->chieucao > obj.chieucao)

return true;

else if (this->chieucao < obj.chieucao)

return false;

else if (this->cannang > obj.cannang)

return true;

else

return false;

}

};

void swap(VanDongVien &a, VanDongVien &b)

{

VanDongVien temp = a;

a = b;

b = temp;

}

void Bubblesort(VanDongVien arr[], int n)

{

for (int i = 0; i < n – 1; i++)

for (int j = 0; j < n – i – 1; j++)

if (arr[j] > arr[j + 1])

swap(arr[j], arr[j + 1]);

}

int main()

{

VanDongVien p(“Nguyen Van A”, “Bong Da”, 20, 178, 70.5);

cout << p;

cout << “Nhap So Luong: “; int n; cin >> n;

VanDongVien *arr = new VanDongVien[n];

for (int i = 0; i < n; ++i) cin >> arr[i];

cout << endl << endl;

for (int i = 0; i < n; ++i) cout << arr[i] << endl;

cout << “Sort” << endl;

Bubblesort(arr,n);

for (int i = 0; i < n; ++i) cout << arr[i] << endl;

return 0;

}

Input

3

Nguyen Van B

Cau Long

20

80

190

Nguyen Van C

Bong Chuyen

21

78

188

Nguyen Van D

Boi Loi

19

81

188

Output

Ho Ten: Nguyen Van A

Mon Thi Dau: Bong Da

Đọc thêm:  Đề thi học sinh giỏi tiếng anh lớp 9 cấp thành phố có đáp án 2022

Tuoi: 20

Can Nang: 178

Chieu cao: 70.5

Ho Ten: Nguyen Van B

Mon Thi Dau: Cau Long

Tuoi: 20

Can Nang: 80

Chieu cao: 190

Ho Ten: Nguyen Van C

Mon Thi Dau: Bong Chuyen

Tuoi: 21

Can Nang: 78

Chieu cao: 188

Ho Ten: Nguyen Van D

Mon Thi Dau: Boi Loi

Tuoi: 19

Can Nang: 81

Chieu cao: 188

Sort

Ho Ten: Nguyen Van C

Mon Thi Dau: Bong Chuyen

Tuoi: 21

Can Nang: 78

Chieu cao: 188

Ho Ten: Nguyen Van D

Mon Thi Dau: Boi Loi

Tuoi: 19

Can Nang: 81

Chieu cao: 188

Ho Ten: Nguyen Van B

Mon Thi Dau: Cau Long

Tuoi: 20

Can Nang: 80

Chieu cao: 190

bai-tap-lap-trinh-huong-doi-tuong-c-co-loi-giai-2

Trên đây là những bài tập lập trình hướng đối tượng c++ có lời giải mà bạn có thể tham khảo để áp dụng và luyện tập.

5/5 - (1 bình chọn)

We will be happy to hear your thoughts

Leave a reply