Hướng dẫn giải bài tập lập trình hướng đối tượng c++ – lê hải trung

Đây là bài viết sau cuối trong Series Lập Trình Hướng Đối Tượng. Và trong bài viết này tất cả chúng ta sẽ làm một số ít bài tập lập trình hướng đối tượng tổng hợp nhé .Bạn đang xem : Hướng dẫn giải bài tập lập trình hướng đối tượng c + + – lê hải trungSau đây, tất cả chúng ta sẽ cùng nhau đi làm 1 bài tập lập trình hướng đối tượng khá cơ bản :

Bài tập lập trình hướng đối tượng cơ bản

Bài tập xây dựng lớp Phân số

Đề bài:

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ủyNhập, XuấtCong(), Tru(), Nhan(), Chia()Thuộc Tính : tuso, mauso. Phương thức : Hàm Khởi Tạo Không Tham Số, Hàm HủyNhập, XuấtCong ( ), Tru ( ), Nhan ( ), Chia ( )Tính Tổng, Hiệu, Tích, Thương 2 phân số obj1 và obj2 rồi in tác dụng ra màn hình hiển thị

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

Bài Tập quản lý Vận động viên

Đề bài

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)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 to 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.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 hiển thị. Nhập vào một mảng gồm n vận động viên. Hiển thị list đã nhập ra màn hình hiển thị. Sắp xếp mảng đã nhập theo thứ tự tăng dần, hiển thị list đã sắp ra màn hình hiển thị .

Lời Giải:

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#include
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);
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
{
cout
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 > arr)
swap(arr, arr);
}
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;
for (int i = 0; i n; ++i) cin >> arr;
cout endl endl;
for (int i = 0; i n; ++i) cout arr endl;
cout “Sort” endl;
Bubblesort(arr,n);
for (int i = 0; i n; ++i) cout arr endl;
return 0;
}
Input
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Ho Ten: Nguyen Van A
Mon Thi Dau: Bong Da
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

Bài Tập OOP nâng cao

Bài Tập quản lý bán vé máy bay

Đề bài

Xây dựng lớp Vemaybay gồm :Thuộc tính: tenchuyen, ngaybay, giavePhương thức:Cấu tửHủyNhapXuatgetgiave() : hàm trả về giá véXây dựng lớp Nguoi gồm :Thuộc tính: hoten, gioitinh, tuoiPhương thức:Cấu tửHủyNhậpXuấtThuộc tính: Vemaybay *ve; int soluong;Phương thức:Cấu tửHủyNhậpXuấttongtien(): trả về Tổng số tiền phải trả của hành kháchChương trình chính : Nhập vào 1 list n hành khách ( n nhập từ bàn phím ). Hiển thị list hành khách và số tiền phải trả tương ứng của mỗi người mua. Sắp xếp list hành khách theo chiều giảm dần của Tổng tiền .Xem thêm : Thành Phố Đà Nẵng Có 2 Ca Covid Ở Thành Phố Đà Nẵng, 1 Ca Dương Tính Với Sar

Lời Giải

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
#include
using namespace std;
class Date
{
protected:
int day, month, year;
public:
Date()
{
this->day = this->month = this->year = 0;
}
~Date()
{
this->day = this->month = this->year = 0;
}
void input()
{
cout “Nhap Ngay: “;
cin >> this->day;
cout “Nhap Thang: “;
cin >> this->month;
cout “Nhap Nam: “;
cin >> this->year;
}
void output()
{
cout “Ngay/Thang/Nam: ” this->day “/” this->month “/” this->year endl;
}
};
//————————————————————-//
class Vemaybay
{
protected:
string tenchuyen;
Date ngaybay;
int giave;
public:
Vemaybay()
{
this->tenchuyen = “”;
this->giave = 0;
}
~Vemaybay()
{
this->tenchuyen = “”;
this->giave = 0;
}
void input()
{
cin.ignore();
cout “Nhap Ten Chuyen: “; fflush(stdin); getline(cin, this->tenchuyen);
cout “Nhap Ngay Bay: ” endl;
ngaybay.input();
cout “Nhap Gia Ve: “; cin >> this->giave;
}
void output()
{
cout “Ten Chuyen: ” this->tenchuyen endl;
cout “Ngay Bay: ” endl “\t”;
this->ngaybay.output();
cout “Gia Ve: ” this->giave endl;
}
int getgiave()
{
return this->giave;
}
};
class Nguoi
{
protected:
string hoten, gioitinh;
int tuoi;
public:
Nguoi()
{
this->hoten = this->gioitinh = “”;
this->tuoi = 0;
}
~Nguoi()
{
this->hoten = this->gioitinh = “”;
this->tuoi = 0;
}
void input()
{
cin.ignore();
cout “Nhap Ho Ten: “; fflush(stdin); getline(cin, this->hoten);
cout “Nhap Gioi Tinh: “; fflush(stdin); getline(cin, this->gioitinh);
cout “Nhap Tuoi: “; cin >> this->tuoi;
}
void output()
{
cout “Ho Ten: ” this->hoten endl;
cout “Gioi Tinh: ” this->gioitinh endl;
cout “Tuoi: ” this->tuoi endl;
}
};
class Hanhkhach : public Nguoi
{
protected:
int soluong;
//Vemaybay *ve;
Vemaybay ve<1000>;
int tongtien;
public:
Hanhkhach()
{
this->soluong = 0;
//this->ve = new Vemaybaysoluong>;
vesoluong>;
tongtien = 0;
}
~Hanhkhach()
{
soluong = 0;
delete <>ve;
tongtien = 0;
}
void input()
{
Nguoi :: input();
cout “Nhap So Luong Ve Hanh Khach Da Mua: “; cin >> this->soluong;
//ve = new Vemaybaysoluong>;
vesoluong>;
for (int i = 0; i this->soluong; ++i)
{
ve.input();
tongtien += ve.getgiave();
}
}
void output()
{
cout “- Thong Tin Khach Hang: ” endl;
Nguoi :: output();
cout “- Thong Tin Chuyen Bay: ” endl;
for (int i = 0; i this->soluong; ++i)
{
ve.output();
cout endl;
}
cout endl;
}
bool operator (const Hanhkhach &obj)
{
if (this->tongtien
else return false;
}
};
//———————————————————-//
void swap(Hanhkhach &a, Hanhkhach &b)
{
Hanhkhach temp = a;
a = b;
b = temp;
}
void Bubblesort(Hanhkhach arr<>, int n)
{
for (int i = 0; i n – 1; ++i)
for (int j = 0; j n – i – 1; ++j)
if (arr arr)
swap(arr, arr);
}
//———————————————————-//
int main()
{
cout “Nhap So Luong Khach Hang: “; int n; cin >> n;
Hanhkhach *arr = new Hanhkhach;
for (int i = 0; i n; ++i) arr.input();
cout endl endl “Output” endl endl;
for (int i = 0; i n; ++i)
{
arr.output();
cout endl “——————” endl endl;
}
cout “After Sort: ” endl;
Bubblesort(arr, n);
for (int i = 0; i n; ++i)
{
arr.output();
cout endl “——————” endl endl;
}
return 0;
}
Input
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
3
Nguyen Van A
Nam
20
2
Ha Noi – Hai Phong
10 2 2020
500000
Hai Phong – Ha Noi
15 2 2020
450000
Nguyen Van B
Nam
21
1
Ha Noi – TP.Ho Chi Minh
20 2 2020
1500000
Nguyen Thi C
Nu
19
3
Ha Noi – Da Nang
19 2 2020
1200000
Ha Noi – Hue
18 2 2020
1250000
Hue – Da Nang
22 2 2020
500000
Output
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
Output
– Thong Tin Khach Hang:
Ho Ten: Nguyen Van A
Gioi Tinh: Nam
Tuoi: 20
– Thong Tin Chuyen Bay:
Ten Chuyen: Ha Noi – Hai Phong
Ngay Bay:
Gia Ve: 500000
Ten Chuyen: Hai Phong – Ha Noi
Ngay Bay:
Gia Ve: 450000
——————
– Thong Tin Khach Hang:
Ho Ten: Nguyen Van B
Gioi Tinh: Nam
Tuoi: 21
– Thong Tin Chuyen Bay:
Ten Chuyen: Ha Noi – TP.Ho Chi Minh
Ngay Bay:
Gia Ve: 1500000
——————
– Thong Tin Khach Hang:
Ho Ten: Nguyen Thi C
Gioi Tinh: Nu
Tuoi: 19
– Thong Tin Chuyen Bay:
Ten Chuyen: Ha Noi – Da Nang
Ngay Bay:
Gia Ve: 1200000
Ten Chuyen: Ha Noi – Hue
Ngay Bay:
Gia Ve: 1250000
Ten Chuyen: Hue – Da Nang
Ngay Bay:
Gia Ve: 500000
——————
After Sort:
– Thong Tin Khach Hang:
Ho Ten: Nguyen Thi C
Gioi Tinh: Nu
Tuoi: 19
– Thong Tin Chuyen Bay:
Ten Chuyen: Ha Noi – Da Nang
Ngay Bay:
Gia Ve: 1200000
Ten Chuyen: Ha Noi – Hue
Ngay Bay:
Gia Ve: 1250000
Ten Chuyen: Hue – Da Nang
Ngay Bay:
Gia Ve: 500000
——————
– Thong Tin Khach Hang:
Ho Ten: Nguyen Van B
Gioi Tinh: Nam
Tuoi: 21
– Thong Tin Chuyen Bay:
Ten Chuyen: Ha Noi – TP.Ho Chi Minh
Ngay Bay:
Gia Ve: 1500000
——————
– Thong Tin Khach Hang:
Ho Ten: Nguyen Van A
Gioi Tinh: Nam
Tuoi: 20
– Thong Tin Chuyen Bay:
Ten Chuyen: Ha Noi – Hai Phong
Ngay Bay:
Gia Ve: 500000
Ten Chuyen: Hai Phong – Ha Noi
Ngay Bay:
Gia Ve: 450000
——————
Trong bài tập lập trình hướng đối tượng số 3 này, mình có 1 chú ý quan tâm nhỏ. Nếu không sắp xếp những hành khách theo tổng tiền, thì mình vẫn hoàn toàn có thể khai báo ve là một con trỏ kiểu Vemaybay, nhưng khi mình thực thi sắp xếp, mình phải đổi chỗ những ô nhớ chứa hành khách. Nếu vẫn khai báo Vemaybay * ve, nghĩa là ve sẽ được lưu trong bộ nhớ chỉ đọc, nên khi đổi chỗ sẽ gây lỗi Segmentation Fault .*

Tính Đa Hình Trong Lập Trình Hướng Đối Tượng

Bài Tập C++ Về Tính Kế Thừa

Tính Kế Thừa Trong Lập Trình Hướng Đối Tượng

Nạp Chồng Hàm Và Nạp Chồng Toán Tử

Hàm Bạn Và Lớp Bạn Trong C++

Tạo Class Trong C++

Subscribe
Connect with
Notify of
new follow-up comments
Label
Name*
Email*
Website
Connect with
Label
Name*
Email*
Website
2 Bình luận
Inline Feedbacks
View all comments
Load More Comments
Khóa học miễn phí

Lập Trình Không Khó là một cộng đồng chia sẻ và đào tạo lập trình phi lợi nhuận hàng đầu tại Việt Nam.

Liên hệ hoặc Hợp tác & Quảng cáo
Blogger
Facebook
Linkedin
RSS
Youtube

BÀI VIẾT HAY

Bài 1. Giới thiệu khóa học “Học C Bá Đạo”

1000 bài tập lập trình C/C++ có lời giải của thầy Khang

Kiểm tra số nguyên tố sử dụng C/C++ và Java

CHUYÊN MỤC HAY

– BẠN BÈ và ĐỐI TÁC –
© 2018 – 2020. Bản quyền thuộc Lập Trình Không Khó. Privacy và Terms
2
0
Would love your thoughts, please comment.x
()
x
| Reply
Insert
NHIỀU BÀI VIẾT HƠN

Lập Trình Hướng Đối Tượng Là Gì?

Tạo Class Trong C++

101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 # includeusing namespace std ; class VanDongVienprotected : 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 và operator >> ( istream và is, VanDongVien và obj ) cin.ignore ( ) ; cout ” Nhap Ho Ten : ” ; fflush ( stdin ) ; getline ( is, obj.hoten ) ; cout ” Nhap Mon Thi Dau : ” ; fflush ( stdin ) ; getline ( is, obj.monthidau ) ; cout ” Nhap Tuoi : ” ; is >> obj.tuoi ; cout ” Nhap Can Nang : ” ; is >> obj.cannang ; cout ” Nhap Chieu Cao : ” ; is >> obj.chieucao ; return is ; friend ostream và operatorcoutcout ” 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 và obj ) if ( this -> chieucao > obj.chieucao ) return true ; else if ( this -> chieucao obj.chieucao ) return false ; else if ( this -> cannang > obj.cannang ) return true ; elsereturn false ; } ; void swap ( VanDongVien và a, VanDongVien và 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