1. Trang chủ
  2. » Luận Văn - Báo Cáo

Oop laboratory môn lập trình hướng Đối tượng bài tập thực hành x

20 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Bài Tập Thực Hành X
Tác giả Sinh Viên Thực Hiện
Người hướng dẫn GVHD: Nguyễn Ngọc Quí
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Lập Trình Hướng Đối Tượng
Thể loại Bài tập thực hành
Năm xuất bản 2024
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 20
Dung lượng 1,47 MB

Nội dung

IT002 - LAP TRINH HUONG DOI TUQNG NOI DUNG BAI LAM Chuong 1: Bài tập 1: Xây dựng lớp ngày tháng năm Thuộc tính: iNgay, iThang, iNam Phương thức: Nhap, Xuat, Ngay ThangNamTiepTheo Yêu cầ

Trang 1

DAI HOC QUOC GIA THANH PHO HO CHI MINH

TRUONG DAI HOC CONG NGHE THONG TIN KHOA CONG NGHE PHAN MEM

MÔN LẬP TRÌNH HƯỚNG ĐÓI TƯỢNG

BÀI TẬP THỰC HÀNH X

GVHD: Nguyễn Ngọc Quí

Sinh viên thực hiện:

900% Tp H6 Chi Minh, 02/2024 soce

Trang 2

IT002 - LAP TRINH HUONG DOI TUQNG

NHAN XET CUA GIAO VIEN HUONG DAN

, NOÀW tháng năm 2024

Người nhận xét (Kỹ tên và ghi rõ họ tên)

Trang 3

IT002 - LAP TRINH HUONG DOI TUQNG

Chương 1:

Chirong 2:

Chirong 3:

Chương 4:

MỤC LỤC

Bai tap 1: Xây dựng lớp ngày thủng năm 6 Bài tập 2: Xây dựng lớp phân số 9 Bài tập 3: Xây dựng lớp số phức 14 Bai tap 4: Xây dựng lớp giờ phút giay 17

3|Page

Trang 4

IT002 - LAP TRINH HUONG DOI TUQNG

DANH MUC BANG

: 0101 .ă aa

Bảng 1.2

Bang 1.3

Bảng 1.4

Bảng l.5

Bang 2.1

Trang 5

IT002 - LAP TRINH HUONG DOI TUQNG

DANH MỤC HÌNH ẢNH

Trang 6

IT002 - LAP TRINH HUONG DOI TUQNG

NOI DUNG BAI LAM

Chuong 1: Bài tập 1: Xây dựng lớp ngày tháng năm Thuộc tính: iNgay, iThang, iNam

Phương thức: Nhap(), Xuat(), Ngay ThangNamTiepTheo()

Yêu cầu: Thực hiện xây dựng lớp, vẽ diagram và khai báo các thuộc tính, phương thức Viết nội dung vào các phương thức đã khai báo Gọi các phương thức trong hàm main() Class diagram của lớp Date

Date

- INgay

- iThang

- Nam

+ Nhap() + Xuat()

+ NgayThangNamTiepTheo()

Hình L1

Thực hiện xây dựng lớp Date

class Date {

private:

int iNgay, iThang, iNam;

public:

void Nhap();

void Xuat();

Bang 1.1

Các phương thức của class Date

Phương thức NhapQ:

Trang 7

IT002 - LAP TRINH HUONG DOI TUQNG

cout << "Nhap ngay thang nam (dd/mm/yyyy): ";

bool temp_test = false;

while (!temp_test) {

cin >> iNgay >> iThang >> iNam;

if (iNam > 0)

if (iThang < 13 && iThang > 0)

if (iNgay > 0) switch (prop _thang(iThang, iNam)) {

case 1:

if (iNgay <= 30) temp_test = true;

break;

case 2;

if (iNgay <= 31) temp_test = true;

break;

case 3:

if (iNgay <= 28) temp_test = true;

break;

case 4;

if (iNgay <= 29) temp _test = true;

break;

default:

break;

}

if (!temp_test}) cout << "Nhap sai! vui long nhap lai ";

Bang 1.2

Input (đầu vào): Ngày, tháng, năm được nhập vào từ bản phím/người dùng

Phương thức sau đó kiêm tra thông tin nhập vào hợp lệ không Nếu không, báo lỗi vào yêu cầu

người dùng nhập lại

Phương thức XuatQ):

void Date::Xuat() {

cout << iNgay << "/" << iThang << "/" << iNam << endl;

}

Bang 1.3

Phương thức Ngay ThangNamTiepTheo():

cout << "Ngay tiep theo: ";

int prop = prop_thang(iThang, iNam);

if (iNgay < 28) cout << iNgay + 1 << "/" << iThang << "/" << iNam

<< endl;

else

if (iThang == 12) if (iNgay == 31) cout << "1/1/" << iNam + 1

<< endl;

7|Page

Trang 8

IT002 - LAP TRINH HUONG DOI TUQNG

else cout << iNgay + 1 << "/" << iThang <<

"/" << iNam << endl;

else

switch (prop) {

case 1:

if (iNgay == 30) cout << "1/" << iThang + 1 << "/"

<< iNam << endl;

else cout << iNgay + 1 << "/" << iThang << "/" <<

iNam << endl;

break;

case 2:

if (iNgay == 31) cout << "1/" << iThang + 1 << "/"

<< iNam << endl;

else cout << iNgay + 1 << "/" << iThang << "/" <<

iNam << endl;

break;

case 3:

if (iNgay == 28) cout << "1/" << iThang + 1 << "/"

<< iNam << endl;

else cout << iNgay + 1 << "/" << iThang << "/" <<

iNam << endl;

break;

case 4;

if (iNgay == 29) cout << "1/" << iThang + 1 << "/"

<< iNam << endl;

else cout << iNgay + 1 << "/" << iThang << "/" << iNam << endl;

break;

default:

Bang 1.4

Phương thức này gọi thêm hàm prop_thang() (đầu vào là tháng, năm của tháng cần kiểm tra)

đề kiêm tra số ngày có trong tháng, trả về 1, 2, 3, 4 lần lượt cho tháng có 30, 31, 28, 29 ngày

//tra ve 1 neu thang 30 ngay, 2 neu 31 ngay, 3 neu 28 ngay, 4 neu

29 ngay

if (a == 2)

if (6b 3 4 == 0 && b% 100 != 0) return 4;

else return 3;

else

if (a <= 7)

if (a & 1) return 1;

else return 2;

else

if (a & 1) return 2;

Bang 1.5

Trang 9

IT002 - LAP TRINH HUONG DOI TUQNG

Sau đó, dựa vào kết quả trà về của hàm đề tinh ngay tiép theo

Kết quả chạy thử chương trình

rogramming/oop/BTTH

Hình L2

Chương 2: Bài tập 2: Xây dựng lớp phân số

Thuộc tính: ru, Mau

Phương thức: NhapQ, Xuat(Q), Rutgon(), Tong(), HieuQ, TichOQ), ThuongQ, SoSanh() Class diagram cua lop phan sé

Phanso

-iTu

- iMau

+ Nhap(): void

+ Xuat(): void + Rutgon(): void + Tong(): phanso + Hieu(): phanso + Tich(): phanso + Thuong(): phanso + SoSanh(): int

Hình 2.1

Tiến hành xây dựng lớp phân số

class phanso {

private:

int iTu, iMau;

Trang 10

IT002 - LAP TRINH HUONG DOI TUQNG

public:

void Nhap()

void Xuat();

void Rutgon();

,

phanso Tong(phanso a, phanso b);

phanso Hieu(phanso a, phanso b);

phanso Tich(phanso a, phanso b);

phanso Thuong(phanso a, phanso b);

int SoSanh(phanso a, phanso b);

Bang 2.1

Các phương thức của lớp phân số

Phương thức NhapQ:

Input (đầu vào): Phân số nhập từ bản phím

void phanso::Nhap() {

cout << "Nhap phan so (a/b): ";

cin >> iTu >> iMau;

Bang 2.2

Phuong thức XuatQ):

Output (đầu ra): Phân số nhập từ bàn phím

cout << endl;

int 1 = to_string(max(iTu, iMau)).length();

cout << iTu << endl;

for (int i = 0; 1 < 1; i++) cout << "-";

cout << endl << iMau << endl;

Bang 2.3

Phương thức Rutgon():

Input (đầu vào): Phân số nhập từ bản phím

Hướng giải quyết: Tiến hành rút gọn phân số bằng cách tìm ước số chung lớn nhất của ïTu và

iMau, sau d6 chia iTu va iMau cho sô tìm được

Output (đầu ra): Phân số đã được rút gọn

void phanso::Rutgon() {

Trang 11

IT002 - LAP TRINH HUONG DOI TUQNG

iTu = iTu / iMau;

iMau = 1;

}

else { int temp = min(iTu, iMau);

iTu = iTu / temp;

iMau = iMau / temp;

}

temp ;

Bang 2.4

Phuong thirc Tong():

Input (đầu vào): Hai phân số được nhập vào từ bàn phím

Hướng giải quyết: Đề giảm bớt độ phức tạp của không - thời gian, ta tiến hành trực tiếp cộng hai phân số thay vì phải quy đồng hai phân số bằng cách nhân lần lượt ¡Tu của phân số nảy với iMau cua phân số kia, sau đó tông của chúng chính là ïTu của phân số tổng Đề được iMau ta tiến hành nhân hai ïMau của hai phân số nhập vào lại với nhau Sau đó chúng ta rút gọn phân

⁄ A

so

Output (dau ra): Téng của hai phân số

phanso tong;

tong.iMau = a.iMau * b.iMau;

tong.iTu = (a.iTu * tong.iMau) + (b.iTu * tong.iMau);

tong.Rutgon();

return tong;

Bang 2.5

Phuong thức Hieu():

Input (đầu vào): Hai phân số được nhập vào từ bàn phím

Hướng giải quyết: Đề giảm bớt độ phức tạp của không - thời gian, ta tiến hành trực tiếp cộng hai phân số thay vì phải quy đồng hai phân số bằng cách nhân lần lượt ¡Tu của phân số nảy với iMau cua phan sé kia, sau đó hiệu của chúng chính là ïTu của phân số giệu Đề được ïMau ta tiến hành nhân hai ïMau của hai phân số nhập vào lại với nhau Sau đó chúng ta rút gọn phân

⁄ A

so

11|Page

Trang 12

IT002 - LAP TRINH HUONG DOI TUQNG

Output (đầu ra): Hiệu của hai phân số

phanso phanso::Hieu(phanso a, phanso b) {

phanso hieu;

hieu.iMau = a.iMau * b.iMau;

hieu.iTu = (a.iTu * hieu.iMau) - (b.iTu * hieu.iMau);

hieu.Rutgon();

return hieu;

Bang 2.6

Phương thức Tich():Input (đầu vào): Hai phân số được nhập vào từ bản phím

Hướng giải quyết: Ta nhân lần lượt ¡Tu của phân số nảy với phân số kia, rồi nhân ïMau của phân số này với phân số kia Sau đó chúng ta rút gọn phân số

Output (đầu ra): Tích của hai phân số

phanso phanso::Tich(phanso a, phanso b) {

phanso tich;

tich.iTu = a.iTu * b.iTu;

tich.iMau = a.iMau * b.iMau;

tich.Rutgon();

return tich;

Bang 2.7

Phương thức Thuong():

Input (đầu vào): Hai phân số được nhập vào từ bàn phím

Hướng giải quyết: Ta nhân lần lượt ïTu của phân số nảy ¡Mau của Sau đó chúng ta rút gọn

phân số

Output (đầu ra): Thương của hai phân số

int phanso::SoSanh(phanso a, phanso b) {

/*

tra ve

OQ neua=b

*/

int temp_a = a.iTu * b.iMau;

int temp_b = b.iTu * a.iMau;

if (temp_a == temp _b) return 0;

else

Trang 13

IT002 - LAP TRINH HUONG DOI TUQNG

if (temp_a > temp_b) return 1;

else return -1;

Bang 2.8 Phương thirc SoSanh():

Input (đầu vào): Hai phân số được nhập vào từ bàn phím

Hướng giải quyết: Ta nhân lần lượt ïTu của phân số nảy với iMau của phân số kia, rồi so sánh hai 1Tu với nhau

Output (đầu ra): Trả về 1 nếu như phân số a lớn hơn phân số b, -I nếu phân số a bé hơn phân

số b, 0 nều a và b băng nhau

int phanso::SoSanh(phanso a, phanso b) {

/*

tra ve

-l neu a<b

OQ nẹu a =b

*/

int temp_a = a.iTu * b.iMau;

int temp_b = b.iTu * a.iMau;

if (temp_a == temp _b) return 0;

else

if (temp_a > temp_b) return 1;

else return -1;

Bang 2.9

Kết quả chạy thử chương trình

13|Page

Trang 14

IT002 - LAP TRINH HUONG DOI TUQNG

1

Hie

3

1 +

5

Fy

Thuong la:

15

4

(base) donghuunguyenkhoa@Lit1seagames-Macbook-Pro BTTH1 % |

Hình 2.2

Chương 3: Bài tập 3: Xây dựng lớp số phức

Thuộc tinh: iThuc, iAo

Phương thirc: Nhap(Q), Xuat(), Tong(), HieuQ), TichQ, Thuong()

Class điagram của lớp số phức

Sophuc

- iThuc

- iAo

+ Nhap(): void + Xuat(): void + Tong(): sophuc + Hieu(): sophuc + Tich(): sophuc

Hình 3.1

Tiến hành xây dựng lớp số phức

class sophuc {

private:

Trang 15

IT002 - LAP TRINH HUONG DOI TUQNG

public:

void Nhap();

void Xuat();

sophuc Tong(sophuc a, sophuc b);

sophuc Hieu(sophuc a, sophuc b);

sophuc Tich(sophuc a, sophuc b);

sophuc Thuong(sophuc a, sophuc b);

Bang 3.1

Các phương thức trong lớp số phức

Phương thức NhapQ:

Input (đầu vào): Hai số lần lượt là phần thực và phần ảo nhập từ bàn phím

cout << "Nhap so phuc (a + bi): ";

cin >> iThuc >> iAo;

Bang 3.2

Phuong thức XuatQ):

Output (đầu ra): Hai số lần lượt là phân thực và phan ao

cout << iThuc << " + ”" << iAo << "i" << endl;

}

Bang 3.3 Phuong thirc Tong():

Input (đầu vào): Hai số phức nhập từ bàn phím

Hướng giải quyết: Ta tiến hành cộng lần lượt phần thực va phan ảo của hai số

Output (đầu ra): Số phức là tống của hai số phức

sophuc tong;

tong.iThuc = a.iThuc + b.iThuc;

tong.iAo = a.iAo + b.iAo;

return tong;

15|Page

Trang 16

IT002 - LAP TRINH HUONG DOI TUQNG

Bang 3.4 Phuong thức Hieu():

Input (đầu vào): Hai số phức nhập từ bàn phím

Hướng giải quyết: Ta tiến hành trừ lần lượt phần thực và phần ảo của hai số

Output (đầu ra): Số phức là hiệu của hai số phức

sophuc hieu;

hieu.iThuc = a.iThuc - b.iThục;

hieu.iAo = a.iAo - b.1Ao;

return hieu;

Bang 3.5 Phuong thire Tich():

Input (đầu vào): Hai số phức nhập từ bàn phím

Hướng giải quyết: Ta tiến hành nhân đa thức số phức

out = (iThuc,iThuc, — iAo,iAo,) + (iThucgiAo, — iAogiThuc,)i Output (đầu ra): Số phức là tích của hai số phức

sophuc tich;

tich.iThuc = (a.iThuc * b.iThuc) - (a.iAo - b.iAo);

tich.iAo = (a.iThuc * b.iAo) + (a.iAo * b.iThuc);

return tich;

Bang 3.6 Phương thức Thuong():

Input (đầu vào): Hai số phức nhập từ bàn phím

Hướng giải quyết: Ta tiễn hành chia đa thức số phức

a iThuc,iThuc, + iAo,iAo, + iAogiThuc — [ThucuLAo,

out = —- =

b iAo,” + iAo,” iAo,” + iAo,”

Output (đầu ra): Số phức là thương của hai số phức

Trang 17

IT002 - LAP TRINH HUONG DOI TUQNG

sophuc thuong;

thuong.iThuc = ((a.iThuc * b.iThuc) + (a.iAo + b.iAo)) / ((b.iThuc

* b.iThuc) + (b.iAo * b.iAo));

thuong.iAo = ((a.iAo * b.iThuc) - (a.iThuc * b.iAo)) / ((b.iThuc * b.iThuc) + (b.iAo * b.iAo));

return thuong;

Bang 3.7

Kết quả chạy thử chương trình

games-Macbook-Pro BTTH1 %

Hình 3.2

Chương 4: Bài tập 4: Xây dựng lớp giờ phút giây

Thuộc tính: 1G1o, iPhut, IGiay

Phương thức: NhapQ, Xuat(), TinhCong ThemMotGIay()

Class diagram cua lớp giờ phút giây

thoigian

- iGio

- iPhut

- iGiay

+ Nhap(): void + Xuat(): void

+ TinhCongThemMotGiay(): void

Hình 41

Tiến hành xây dựng lớp giờ phút giây

17|Page

Trang 18

IT002 - LAP TRINH HUONG DOI TUQNG

class thoigian {

private:

int iGio, iPhut, iGiay;

public:

void Nhap();

void Xuat();

void TinhCongThemMotGiay();

Bang 4.1

Các phương thức có trong lớp giờ phút giây

Phương thức NhapQ:

void thoigian::Nhap() {

cout << "Nhap thoi gian (hh/mm/ss): ";

cin >> iGio >> iPhut >> iGiay;

Bang 4.2

Phuong thức XuatQ):

void thoigian::Xuat() {

cout << iGio << ":" << iPhut << ":" << iGiay << endl;

}

Bang 4.3

Phương thức TinhCongThemMotGIay(Q):

if (iGiay == 59

if (iPhut == 59)

if (iGio == 23) iGio = 0;

else iGiott;

else iPhutt++;

iGiaytt+;

Bang 4.4

Kết quả chạy thử chương trình

Ngày đăng: 08/10/2024, 16:30

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN