Tải bản đầy đủ (.pdf) (10 trang)

bài tập thực hành dành cho sinh viên cntt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (394.23 KB, 10 trang )

CHƯƠNG 4 – TÁI ĐỊNH NGHĨA
NẠP CHỒNG TOÁN TỬ
Nội dung
- Cài đặt các toán tử cho phép ta sử dụng cú pháp toán học đối với các kiểu dữ
liệu
Yêu cầu: sinh viên nắm được lý thuyết chương 4 Overloading toán tử
- Cú pháp nạp chồng toán tử: sử dụng tên hàm là “operator@” cho toán tử “@”.
- Thực hiện nạp chồng các tốn tử tính tốn: +, -, *, /, …
- Thực hiện nạp chồng các toán tử nhập xuất <<, >>
- Hàm bạn, lớp bạn.
Mục tiêu:
- Hiểu được như thế nào là nạp chồng toán tử và áp dụng được vào một số bài
tập

BUỔI 8
1) Bài 4.1 Data
Xây dựng lớp Data để thực hiện các thao tác số học với hai số bất kỳ được nhập từ
bàn phím. Thực hiện định nghĩa lại các hàm Nhập/Xuất, nạp chồng toán tử operator
cho các thao tác: +, -, *, / đối với hai số đó.
Thuộc tính
- x: kiểu số thực, đại diện cho số thực bất kì.
Phương phức
- Hàm khởi tạo mặc định khơng đối số.
- Hàm khởi tạo có đầy đủ các đối số.
- Hàm hủy.
- Định nghĩa luồng nhập (istream) >> và luồng xuất (ostream) << cho đối tượng
Data
- Định nghĩa các phép toán: +, -, *, / hai số đó
Chạy thử lớp cài đặt
- Nhập vào 2 số bất kỳ.
- Xuất 2 số vừa nhập


- Thực hiện các phép toán đã định nghĩa +, -, *, / cho 2 số đã nhập
- In kết quả của các phép tốn vừa thực hiện trên màn hình.

Page 1 of 10


2) Bài 4.2 Diem2D
Xây dựng một lớp Diem gồm hai thuộc tính x, y là tọa độ của một điểm bất kỳ.
Thuộc tính
- x, y: kiểu số nguyên, biểu diễn cho tọa độ x, y, z
Phương thức
- Hàm khởi tạo mặc định khơng đối số.
- Hàm khởi tạo có đầy đủ các đối số.
- Hàm hủy.
- Định nghĩa luồng nhập (istream) và luồng xuất (ostream) cho đối tượng
- Hàm tính diện tích và chu vi của tam giác được tạo thành bởi 3 điểm đã cho
Chạy thử lớp cài đặt
- Nhập vào 3 điểm bất kỳ.
- In 3 điểm vừa nhập
- Thực hiện tính diện tích và chu vi của tam giác được tạo thành bởi 3 điểm đã
cho
- In kết quả của các phép toán vừa thực hiện trên màn hình.
3) Bài 4.3 Diem3D
Xây dựng một lớp Diem3D gồm các thuộc tính M(x, y, z) là tọa độ của một điểm bất
kỳ. Xây dựng toán tử nạp chồng +, - để tính tọa độ của điểm M bất kỳ trên hệ tọa độ
O(x, y, z) biết rằng tọa độ của M bằng tổng tọa độ của hai điểm M1, M2
Thuộc tính
- x, y, z: kiểu số nguyên, biểu diễn cho tọa độ x, y, z
Phương thức
- Hàm khởi tạo mặc định khơng đối số.

- Hàm khởi tạo có đầy đủ các đối số.
- Hàm hủy.
- Tái định nghĩa hàm Nhập/Xuất để in dữ liệu của hệ tọa độ x, y, z.
- Xây dựng toán tử nạp chồng hàm cộng (opeartor+) để thực hiện cộng hai
tọa độ điểm.
- Xây dựng toán tử nạp chồng hàm trừ (operator-) để lấy điểm đối xứng qua
gốc tọa độ mới
Chạy thử lớp cài đặt
- Nhập vào 2 điểm với tọa độ bất kỳ.
- Thực hiện cộng, trừ tọa độ 2 điểm vừa nhập.
- In kết quả của các phép toán vừa thực hiện trên 2 điểm ra màn hình.

Page 2 of 10


4) Bài 4. 4 Vector
Định nghĩa lớp Vector để biễu diễn khái niệm vector trong không gian với số chiều
bất kì. Định nghĩa các phép tốn: +, -, * trên vector. Định nghĩa các phép toán <<, >>
để nhập xuất dữ liệu cho vector.
Gợi ý:
Vector có dạng V1: 1 2 3 (số chiều = 3) V2: 4 5 6 (số chiều = 3)
V1 + V2 = 1+4 2+5 3+6 = 5 7 9
V1 - V2 = 1-4 2-5 3-6 = -3 -3 -3
V1 * V2 = 1*4 2*5 3*6 = 4 10 18
5) Bài 4.5 Matrix
Xây dựng lớp Matrix biểu diễn cho một ma trận 2 chiều các số nguyên với thuộc tính
và phương thức theo yêu cầu sau:
Thuộc tính
-


numRow: kiểu số nguyên, là số dòng của ma trận.
numCol: kiểu số nguyên, là số cột của ma trận.
val: con trỏ 2 chiều các phần tử double, là giá trị các phần tử của ma trận (cấp
phát động).

Phương thức
-

-

-

-

Hàm khởi tạo mặc định khơng có tham số.
Hàm hủy.
Tái định nghĩa phương thức Nhap, cho phép nhập vào ma trận từ bàn phím.
Nhập số dịng và số cột của ma trận, khởi tạo mảng 2 chiều với số dòng và cột
đã nhập, thực hiện nhập vào lần lượt từng phần tử của ma trận.
Tái định nghĩa phương thức Xuat, cho phép in giá trị các phần tử của ma trận
ra màn hình theo dịng và cột.
Xây dựng tốn tử nạp chồng hàm Cong cho phép cộng hai ma trận với kết
quả trả về là ma trận kết quả kiểu Matrix, chú ý kích thước của 2 ma trận để
thực hiện được phép cộng.
Xây dựng toán tử nạp chồng hàm Tru cho phép trừ hai ma trận với kết quả
trả về là ma trận kết quả kiểu Matrix, chú ý kích thước của 2 ma trận để thực
hiện được phép trừ.
Xây dựng toán tử nạp chồng hàm Nhan cho phép nhân hai ma trận với kết
quả trả về là ma trận kết quả kiểu Matrix, chú ý kích thước của 2 ma trận để
thực hiện được phép nhân.


Chạy thử lớp cài đặt
Page 3 of 10


-

Thực hiện nhập vào 2 ma trận.
In ra màn hình ma trận tổng, ma trận hiệu của 2 ma trận đã nhập vào.
Thực hiện nhập vào ma trận thứ 3.
In ra màn hình tích của 2 ma trận thứ 1 và thứ 3.

-----------------------------------------------------Định nghĩa lớp Matrix để biễu diễn khái niệm ma trận có kích thước bất kì. Định
nghĩa các phép toán: +, -, *, ! trên ma trận. Định nghĩa các phép toán <<, >> để nhập
xuất dữ liệu cho ma trận..
Viết hàm tính tích ma trận và vector
Gợi ý:
Ma trận có dạng:
𝑎11 𝑎12
A=𝑎
𝑎22
21
B=

𝑏11
𝑏21

𝑏12
𝑏22


A + B (Khi A và B cùng cấp)
A – B (Khi A và B cùng cấp)

𝑎11 + 𝑏11
𝑎21 + 𝑏21

𝑎12 + 𝑏12
𝑎22 + 𝑏22

𝑎11 − 𝑏11
𝑎21 − 𝑏21

𝑎12 − 𝑏12
𝑎22 − 𝑏22

A * B (Khi cột A và dòng B cùng cấp)
𝑎11 𝑏11 + 𝑎12 𝑏21
𝑎21 𝑏11 + 𝑎22 𝑏12

𝑎11 𝑏12 + 𝑎12 𝑏22
𝑎21 𝑏12 + 𝑎22 𝑏22

A-1(Ma trận chuyển vị của A)
AT (Ma trận nghịch đảo của A)

Page 4 of 10


Yêu cầu thêm:
− Tìm phần tử lớn nhất của ma trận

− Tìm phần tử nhỏ nhất của ma trận
− Tính tổng các phần tử của ma trận
− Tìm hàng có tổng các phần tử lớn nhất
− Tìm hàng có tổng các phần tử nhỏ nhất
− Tìm cột có tổng các phần tử lớn nhất
− Tìm cột có tổng các phần tử nhỏ nhất

Page 5 of 10


BUỔI 9
6) Bài 4.6: Rational
Xây dựng lớp Rational để biểu diễn cho số hữu tỷ, số hữu tỷ là số có thể được biểu
diễn bởi tập số thập phân bao gồm 2 thành phần tử số và mẫu số, theo yêu cầu sau:
Thuộc tính
tuso: kiểu số nguyên, cho phép biểu diễn tử số của phân số đại diện cho số hữu
tỷ.
- mauso: kiểu số nguyên, cho phép biểu diễn mẫu số của phân số đại diện cho số
hữu tỷ.
Phương thức
-

Hàm khởi tạo mặc định khơng có tham số.
Hàm khởi tạo với 2 tham số là tử số và mẫu số.
Hàm hủy.
Hàm UCLN cho phép trả về số nguyên là ước chung lớn nhất của tử số và mẫu
số.
- Phương thức RutGon cho phép thực hiện rút gọn phân số dựa vào ước chung
lớn nhất giữa tử số và mẫu số.
- Phương thức Nhap cho phép nhập vào phân số từ bàn phím.

- Phương thức Xuat cho phép in phân số ra màn hình dạng tuso/mauso.
- Định nghĩa lại các tốn tử (operator) 2 ngôi: +, -, *, / với kết quả trả về kiểu
Rational và có thực hiện rút gọn.
- Định nghĩa lại các toán tử so sánh, kiểu trả về là kiểu số nguyên: ==, !=, <,
<=, >, >=.
Chạy thử lớp cài đặt
-

-

Nhập vào 2 phân số.
In 2 phân số vừa nhập ra màn hình.
Thực hiện các phép tốn +, -, *, / trên 2 phân số đã nhập vào ở bước trên và in
ra màn hình kết quả của các phép toán.
Sử dụng các toán tử so sánh để kiểm tra các toán tử này đã được thiết kế đúng
hay chưa.

7) Bài 4.7: Time
Xây dựng lớp Time để lưu trữ giá trị thời gian bao gồm giờ, phút và giây theo yêu cầu
sau:
Thuộc tính
-

gio: kiểu số nguyên, lưu trữ giá trị giờ định dạng 24 giờ, giá trị sẽ từ 0 đến 23.
phut: kiểu số nguyên, lưu trữ giá trị phút, giá trị sẽ từ 0 đến 59.
giay: kiểu số nguyên, lưu trữ giá trị giây, giá trị sẽ từ 0 đến 59.
Page 6 of 10


Phương thức

Hàm khởi tạo mặc định khơng có tham số.
Hàm khởi tạo với 3 tham số: giờ, phút và giây.
Hàm hủy.
Phương thức Nhap để nhập vào thời gian với 3 thành phần giờ, phút, giây.
Phương thức Xuat để in ra màn hình giá trị thời gian theo định dạng
gio:phut:giay.
- Định nghĩa lại toán tử (operator) ++ để tăng thời gian thêm 1 giây.
- Định nghĩa lại toán tử (operator) -- để giảm thời gian đi 1 giây.
- Định nghĩa lại toán tử (operator) + để tăng thời gian thêm một số giây nào đó.
- Định nghĩa lại tốn tử (operator) - để giảm thời gian đi một số giây nào đó.
- Định nghĩa lại các tốn tử so sánh, kiểu trả về là kiểu số nguyên: ==, !=, <,
<=, >, >=.
Chạy thử lớp cài đặt
-

-

Nhập vào một giá trị thời gian.
In ra màn hình giá trị thời gian vừa nhập.
Thực hiện các phép toán ++, --, +, - trên dữ liệu thời gian vừa nhập và in ra
màn hình giá trị kết quả.
Sử dụng các toán tử so sánh để kiểm tra các toán tử này đã được thiết kế đúng hay
chưa.

Page 7 of 10


8) Bài 4.8: Date
Xây dựng lớp Date để lưu trữ ngày, tháng, năm theo các yêu sau
Thuộc tính

- Ngay: kiểu số nguyên, dùng để lưu trữ giá trị ngày.
- Thang: kiểu số nguyên, dùng để lưu trữ giá trị tháng.
- Nam: kiểu số nguyên, dùng để lưu trữ giá trị năm.
Phương thức
Hàm khởi tạo mặc định khơng có tham số; Hàm hủy.
Hàm bạn định nghĩa operator >> để thực hiện nhập vào một dữ liệu kiểu Date
từ bàn phím.
- Hàm bạn định nghĩa operator << để in dữ liệu kiểu Date ra màn hình.
- Hàm HopLe để kiểm tra tính hợp lệ của một dữ liệu kiểu Date.
- Hàm NamNhuan để kiểm tra giá trị dữ liệu kiểu Date có phải là năm nhuận hay
khơng.
- Định nghĩa lại tốn tử (operator) ++ là tốn tử một ngơi để tăng giá trị kiểu dữ
liệu Date lên 1 ngày.
- Định nghĩa lại tốn tử (operator) -- là tốn tử một ngơi để giảm giá trị kiểu dữ
liệu Date đi 1 ngày.
- Định nghĩa lại toán tử (operator) + là toán tử hai ngôi để tăng giá trị kiểu dữ
liệu Date lên một số ngày.
- Định nghĩa lại toán tử (operator) - là tốn tử hai ngơi để giảm giá trị kiểu dữ
liệu Date đi một số ngày.
- Hàm SoNgayKhac để tính số ngày khác nhau giữa hai giá trị kiểu dữ liệu Date.
- Định nghĩa lại các toán tử so sánh, kiểu trả về là kiểu số nguyên: ==, !=, <,
<=, >, >=.
Chạy thử lớp cài đặt
-

-

Nhập vào một giá trị kiểu Date.
In giá trị kiểu Date vừa nhập ra màn hình.
Khai báo một đối tượng kiểu Date thứ 2, thực hiện tăng giảm giá trị kiểu Date

thứ 1 một số ngày và gán giá trị cho đối tượng kiểu Date thứ 2.
Sử dụng hàm SoNgayKhac để kiểm chứng lại sự khác nhau giữa giá trị kiểu
Date thứ 2 và giá trị kiểu Date thứ 1.
Sử dụng thử một số phép toán so sánh để kiểm tra tính đúng đắn của các toán
tử so sánh đã cài đặt.

Page 8 of 10


9) Bài 4.9: Complex
Xây dựng lớp Complex biểu diễn cho số phức với các thuộc tính và phương thức theo
yêu cầu sau:
Thuộc tính
- thuc: kiểu số thực, cho phép biểu diễn phần thực của số phức.
- ao: kiểu số thực, cho phép biểu diễn phần ảo của số phức.
Phương thức
Hàm khởi tạo mặc định khơng có tham số.
Hàm hủy.
Hàm Nhap, cho phép nhập vào các thành phần thực và ảo của số phức.
Ham Xuat, cho phép in ra màn hình số phức theo kiểu thuc + ao * i.
Định nghĩa lại các tốn tử (operator) 2 ngơi với kiểu trả về kiểu Complex: +, -,
*, /.
- Định nghĩa lại các tốn tử (operator) 1 ngơi với kiểu trả về là tham chiếu
(reference) kiểu complex: +=, -=; *=, /=.
- Định nghĩa lại các toán tử so sánh, kiểu trả về là kiểu số nguyên: ==, !=, <,
<=, >, >=.
Chạy thử lớp cài đặt
-

-


Nhập vào 2 số phức.
In 2 số phức vừa nhập ra màn hình dạng thuc + ao * i.
Thực hiện các phép toán +, -, *, / hai số phức vừa nhập và in ra màn hình kết
quả của phép tốn.
Thực hiện các phép tốn 1 ngơi +=, -=, *=, \= và cho biết sự khác biệt với phép
toán hai ngôi.

Page 9 of 10


10) Bài 4.10 DaThuc
Cài đặt lớp DaThuc để biểu diễn đa thức bậc n bất kỳ như sau:
Thuộc tính
- Bac: kiểu số nguyên, lưu giữ bậc của đa thức.
- DoiSo: mảng các số nguyên biểu diễn cho đối số của mỗi bậc tương ứng.
Phương thức
- Hàm khởi tạo mặc định không đối số.
- Hàm hủy.
- Hàm bạn định nghĩa operator >> để thực hiện nhập vào một đa thức từ bàn
phím.
- Hàm bạn định nghĩa operator << để in dữ liệu đa thức ra màn hình dạng - 3x^4
+ 7x^3 + 8x^2 - 9x^1 + 5.
- Định nghĩa lại toán tử (operator) + thực hiện cộng 2 đa thức với bậc bất kỳ.
- Định nghĩa lại toán tử (operator) - thực hiện trừ 2 đa thức với bậc bất kỳ.
- Định nghĩa toán tử (operator) ! để thực hiện lấy đạo hàm bậc 1 của đa thức có
bậc bất kỳ.
Chạy thử lớp cài đặt
- Nhập vào 2 đã thức từ bàn phím với bậc bất kỳ.
- Thực hiện cộng, trừ 2 đa thức vừa nhập.

- In kết quả của các phép toán vừa thực hiện trên 2 đa thức ra màn hình.
- Thực hiện lấy đạo hàm bậc 1 của đa thức thứ 1 và in kết quả lấy đạo hàm ra
màn hình.

Page 10 of 10



×