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

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

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 (1.02 MB, 18 trang )

<span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

IT002 L<b>– ẬP TRÌNH HƯỚNG ĐỐ</b>I T<b>ƯỢNG </b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

IT002 L<b>– ẬP TRÌNH HƯỚNG ĐỐ</b>I T<b>ƯỢNG </b>

<b>MỤC L C Ụ</b>

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

IT002 L<b>– ẬP TRÌNH HƯỚNG ĐỐ</b>I T<b>ƯỢNG </b>

DANH M C B<b>ỤẢNG</b>

B ng 1 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức Nhap() ... 7

B ng 2 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức Xuat() ... 7

B ng 3 N i dung bên trong cả ộ ủa hướng giải quyết phương thức NgayThangNamTiepTheo() ... 7

B ng 4 K t qu ả ế ả chạy th ử chương trình bài tập 1 ... 8

B ng 5 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức Nhap() ... 9

B ng 6 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức Xuat() ... 9

B ng 7 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức RutGon() ... 10

B ng 8 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức RutGon(int iTu, int iMau) ... 10

B ng 9 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức Tong(PhanSo ps1, PhanSo ps2) ... 10

B ng 10 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức Hieu(PhanSo ps1, PhanSo ps2) ... 11

B ng 11 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức Tich(PhanSo ps1, PhanSo ps2) ... 11

B ng 12 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức Thuong(PhanSo ps1, PhanSo ps2) ... 12

B ng 13 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức SoSanh(PhanSo ps1, PhanSo ps2) ... 12

B ng 14 K t qu ả ế ả chạy th ử chương trình bài tập 2 ... 12

B ng 15 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức Nhap() ... 13

B ng 16 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức Xuat() ... 14

B ng 17 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức Tong(SoPhuc sp1, SoPhuc sp2) ... 14

B ng 18 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức Hieu(SoPhuc sp1, SoPhuc sp2) ... 14

B ng 19 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức Tich(SoPhuc sp1, SoPhuc sp2) ... 15

B ng 20 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức Thuong(SoPhuc sp1, SoPhuc sp2) ... 15

B ng 21 K t qu ả ế ả chạy th ử chương trình bài tập 3 ... 15

B ng 22 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức Nhap() ... 16

B ng 23 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức Xuat() ... 17

B ng 24 N i dung bên trong cả ộ ủa hướng gi i quyả ết phương thức TinhCongThemMotGiay() ... 17

B ng 25 K t qu ả ế ả chạy th ử chương trình bài tập 4 ... 17

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

IT002 L<b>– ẬP TRÌNH HƯỚNG ĐỐ</b>I T<b>ƯỢNG </b>

DANH M C HÌNH <b>ỤẢNH</b>

Hình 1 Class diagram c a l p NgayThangNam ... 6 ủ ớHình 2 Th c hi n xây d ng l p, khai báo các thuự ệ ự ớ ộc tính, phương thức c a lủ ớp NgayThangNam ... 6 Hình 3 Class diagram c a l p PhanSo ... 8 ủ ớHình 4 Th c hi n xây d ng l p, khai báo các thuự ệ ự ớ ộc tính, phương thức c a l p PhanSo .... 9 ủ ớHình 5 Class diagram c a l p SoPhuc ... 13 ủ ớHình 6 Th c hi n xây d ng l p, khai báo các thuự ệ ự ớ ộc tính, phương thức c a l p SoPhuc .. 13 ủ ớHình 7 Class diagram c a l p GioPhutGiay ... 16 ủ ớHình 8 Th c hi n xây d ng l p, khai báo các thuự ệ ự ớ ộc tính, phương thức c a l p GioPhutGiayủ ớ ... 16

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

IT002 L<b>– ẬP TRÌNH HƯỚNG ĐỐ</b>I T<b>ƯỢNG </b>

N I DUNG BÀI LÀM <b>Ộ</b>

• Thuộc tính: iNgay, iThang, iNam

• Phương thức: Nhap(), Xuat(), NgayThangNamTiepTheo()

<small>Hình 1 Class diagram c a l p NgayThangNam </small><i><small>ủ ớ</small></i>

<small>Hình 2 </small><i><small>Thự</small></i><small>c hi n xây d ng l p, khai báo các thu</small><i><small>ệựớộc tính, phương thứ</small></i><small>c c a l p NgayThangNam </small><i><small>ủ ớ</small></i>

Phương thức của class NgayThangNam: - Phương thức Nhap():

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

IT002 L<b>– ẬP TRÌNH HƯỚNG ĐỐ</b>I T<b>ƯỢNG </b>

<i><small>Bảng 1 N i dung bên trong cộủa hướng giải quyết phương thứ</small></i><small>c Nhap() </small>

<small>void NgayThangNam::Nhap() { cout << "Nhap ngay thang nam: "; cin >> iNgay >> iThang >> iNam; } </small>

- Phương thức Xuat();

<i><small>Bảng 2 N i dung bên trong cộủa hướng giải quyết phương thức </small></i><small>Xuat() </small>

<small>void NgayThangNam::Xuat() { cout << "Ngay, Thang, Nam:"; </small>

<small> cout << iNgay << << iThang << << iNam << "/""/""\n"; } </small>

- Phương thức NgayThangNamTiepTheo():

• Output (đầu ra): Ngày tháng năm được cộng thêm một ngày.

iNam.

<i><small>Bảng 3 N i dung bên trong cộủa hướng giải quyết phương thức </small></i><small>NgayThangNamTiepTheo() </small>

<small>void NgayThangNam::NgayThangNamTiepTheo() { ngay = 0; int</small>

<small> switch (iThang) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: ngay = 31; break; case 4: case 6: case 9: case 11: ngay = 30; break; case 2: </small>

<small> (iNam % 400 == || (iNam % 4 == 0 && iNam % 100 != if0 0)) </small>

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

IT002 L<b>– ẬP TRÌNH HƯỚNG ĐỐ</b>I T<b>ƯỢNG </b>

<small> ngay = 29; else ngay = 28; } </small>

<small> (iNgay <= 0 || iNgay > ngay) {if cout << "Ngay Thang Nam khong hop le"; return; </small>

<small> } iNgay++; </small>

<small> (iNgay > ngay) iNgay = , iThang++;if1 (iThang > 12) iThang = , iNam++;if1 NgayThangNam::Xuat(); } </small>

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

<i><small>Bảng 4 K t quếả chạy thử chương trình bài tập 1 </small></i>

<small>Nhap ngay thang nam: 20 2 2000 Ngay, Thang, Nam:20/2/2000 Ngay, Thang, Nam:21/2/2000</small>

Bài t p 2: Xây d ng l p phân s <b>ậựớố</b>

• Thuộc tính: iTu, iMau

• Phương thức: Nhap(), Xuat(), RutGon(), Tong(), Hieu(), Tich(), Thuong(), SoSanh()

<small>Hình 3 Class diagram c a l p PhanSo </small><i><small>ủ ớ</small></i>

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

IT002 L<b>– ẬP TRÌNH HƯỚNG ĐỐ</b>I T<b>ƯỢNG </b>

<small>Hình 4 </small><i><small>Thự</small></i><small>c hi n xây d ng l p, khai báo các thu</small><i><small>ệựớộc tính, phương thứ</small></i><small>c c a l</small><i><small>ủ ớp </small></i><small>PhanSo </small>

Phương thức của class PhanSo: - Phương thức Nhap():

<i><small>Bảng 5 N i dung bên trong cộủa hướng giải quyết phương thức </small></i><small>Nhap() </small>

<small>void PhanSo::Nhap() { </small>

<small>cout << "Nhap tu va mau: "; cin >> iTu >> iMau; if(iMau == 0) { </small>

<small>; cout << "Phan so khong hop le \n"</small>

<small>PhanSo::Nhap();} </small>

<small>} </small>

- Phương thức Xuat();

<i><small>Bảng 6 N i dung bên trong cộủa hướng giải quyết phương thức </small></i><small>Xuat() </small>

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

IT002 L<b>– ẬP TRÌNH HƯỚNG ĐỐ</b>I T<b>ƯỢNG </b>

• Hướng giải quyết: Ta chỉ việc chia iTu và iMau cho GCD(iTu, iMau)

<i><small>Bảng 7 N i dung bên trong cộủa hướng giải quyết phương thứ</small></i><small>c RutGon() </small>

<small>void PhanSo::RutGon() { int gcd = __gcd(iTu, iMau); iTu = iTu / gcd; iMau = iMau / gcd; cout << "Phan so rut gon la: "; PhanSo::Xuat(); </small>

<small>} </small>

<i><small>Bảng 8 N i dung bên trong cộủa hướng giải quyết phương thứ</small></i><small>c RutGon(int iTu, int iMau) </small>

<small>void PhanSo::RutGon( iTu, intint iMau) { int gcd = __gcd(iTu, iMau); this->iTu = iTu / gcd; this->iMau = iMau / gcd; PhanSo::Xuat(); } </small>

- Phương thức Tong(PhanSo ps1, PhanSo ps2):

• Output (đầu ra): Tổng của 2 phân số.

<i><small>Bảng 9 N i dung bên trong cộủa hướng giải quyết phương thứ</small></i><small>c Tong(PhanSo ps1, PhanSo ps2) </small>

<small>void PhanSo::Tong(PhanSo ps1, PhanSo ps2) { iTu = ps1.iTu * ps2.iMau + ps2.iTu * ps1.iMau; iMau = ps1.iMau * ps2.iMau; </small>

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

IT002 L<b>– ẬP TRÌNH HƯỚNG ĐỐ</b>I T<b>ƯỢNG </b>

<small> cout << "Tong 2 phan : "so la; PhanSo::RutGon(iTu, iMau); } </small>

- Phương thức Hieu(PhanSo ps1, PhanSo ps2):

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

<i><small>Bảng 10 N i dung bên trong cộủa hướ</small></i><small>ng gi i quy</small><i><small>ảết phương thứ</small></i><small>c Hieu(PhanSo ps1, PhanSo ps2) </small>

<small>void PhanSo::Hieu(PhanSo ps1, PhanSo ps2) { iTu = ps1.iTu * ps2.iMau ps2.iTu * ps1.iMau;- iMau = ps1.iMau * ps2.iMau; </small>

<small> cout << "Hieu 2 phan so la : "; PhanSo::RutGon(iTu, iMau); } </small>

- Phương thức Tich(PhanSo ps1, PhanSo ps2):

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

<i><small>Bảng 11 N i dung bên trong cộủa hướ</small></i><small>ng gi i quy</small><i><small>ảết phương thứ</small></i><small>c Tich(PhanSo ps1, PhanSo ps2) </small>

<small>void PhanSo::Tich(PhanSo ps1, PhanSo ps2) { iTu = ps1.iTu * ps2.iTu; </small>

<small> iMau = ps1.iMau * ps2.iMau; cout << "Tich 2 phan so la : "; PhanSo::RutGon(iTu, iMau); } </small>

- Phương thức Thuong(PhanSo ps1, PhanSo ps2):

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

IT002 L<b>– ẬP TRÌNH HƯỚNG ĐỐ</b>I T<b>ƯỢNG </b>

<i><small>Bảng 12 N i dung bên trong cộủa hướ</small></i><small>ng gi i quy</small><i><small>ảết phương thứ</small></i><small>c Thuong(PhanSo ps1, PhanSo ps2) </small>

<small>void PhanSo::Thuong(PhanSo ps1, PhanSo ps2) { iTu = ps1.iTu * ps2.iMau; </small>

<small> iMau = ps1.iMau * ps2.iTu; cout << "Thuong 2 phan so la : "; PhanSo::RutGon(iTu, iMau); } </small>

- Phương thức SoSanh(PhanSo ps1, PhanSo ps2):

• Output (đầu ra): Kết quả so sánh của 2 phân số.

* c và b * d.

<i><small>Bảng 13 N i dung bên trong cộủa hướ</small></i><small>ng gi i quy</small><i><small>ảết phương thứ</small></i><small>c SoSanh(PhanSo ps1, PhanSo ps2) </small>

<small>void PhanSo::SoSanh(PhanSo ps1, PhanSo ps2) { </small>

<small>if(ps1.iTu * ps2.iMau == ps1.iMau * ps2.iTu) cout << "2 phan so bang nhau\n"; </small>

<small>else (ps1.iTu * ps2.iMau < ps1.iMau * ps2.iTu) cout << ifps1.iTu << << ps2.iMau << "/"" be hon " << ps2.iTu << << "/"</small>

<small>ps2.iMau << "\n"; </small>

<small>else (ps1.iTu * ps2.iMau > ps1.iMau * ps2.iTu) cout << ifps1.iTu << << ps2.iMau << "/"" lon hon " << ps2.iTu << << "/"</small>

<small>ps2.iMau << "\n"; } </small>

<i><small>Bảng 14 K t quếả chạy thử chương trình bài tập 2 </small></i>

<small>Nhap tu va mau: 3 4 Nhap tu va mau: 5 6 Phan so rut gon la: 3/4 Phan so rut gon la: 5/6 Tong 2 phan so la : 19/12 Hieu 2 phan so la : 1/-12 Tich 2 phan so la : 5/8 Thuong 2 phan so la : 9/10 3/6 be hon 5/6 </small>

<b> Bài tập 3: Xây dựng số phức </b>bao g m <b>ồ</b>

• Thuộc tính: iThuc, iAo

• Phương thức: Nhap(), Xuat(), Tong(), Hieu(), Tich(), Thuong()

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

IT002 L<b>– ẬP TRÌNH HƯỚNG ĐỐ</b>I T<b>ƯỢNG </b>

<small>Hình 5 Class diagram c a l</small><i><small>ủ ớp </small></i><small>SoPhuc</small>

<small>Hình 6 </small><i><small>Thự</small></i><small>c hi n xây d ng l p, khai báo các thu</small><i><small>ệựớộc tính, phương thứ</small></i><small>c c a l p SoPhuc</small><i><small>ủ ớ</small></i>

Phương thức của class SoPhuc: - Phương thức Nhap():

<i><small>Bảng 15 N i dung bên trong cộủa hướ</small></i><small>ng gi i quy</small><i><small>ảết phương thứ</small></i><small>c Nhap() </small>

<small>void SoPhuc::Nhap() { cout << "Nhap so phuc: "; cin >> iThuc >> iAo; } </small>

- Phương thức Xuat();

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

IT002 L<b>– ẬP TRÌNH HƯỚNG ĐỐ</b>I T<b>ƯỢNG </b>

<i><small>Bảng 16 N i dung bên trong cộủa hướ</small></i><small>ng gi i quy</small><i><small>ảết phương thứ</small></i><small>c Xuat() </small>

<small>void SoPhuc::Xuat() { </small>

<small>cout << iThuc << " + " << iAo << "i\n"; } </small>

- Phương thức Tong():

• Output (đầu ra): Tổng 2 số phức

<i><small>Bảng 17 N i dung bên trong cộủa hướ</small></i><small>ng gi i quy</small><i><small>ảết phương thứ</small></i><small>c Tong(SoPhuc sp1, SoPhuc sp2) </small>

<small>void SoPhuc::Tong(SoPhuc sp1, SoPhuc sp2) { iThuc = sp1.iThuc + sp2.iThuc; iAo = sp1.iAo + sp2.iAo; cout << "Tong 2 so phuc la: "; SoPhuc::Xuat(); </small>

<small>} </small>

- Phương thức Hieu():

• Output (đầu ra): Hiệu 2 số phức

<i><small>Bảng 18 N i dung bên trong cộủa hướ</small></i><small>ng gi i quy</small><i><small>ảết phương thứ</small></i><small>c Hieu(SoPhuc sp1, SoPhuc sp2) </small>

<small>void SoPhuc::Hieu(SoPhuc sp1, SoPhuc sp2) { iThuc = sp1.iThuc - sp2.iThuc; iAo = sp1.iAo - sp2.iAo; cout << "Hieu 2 so phuc la: "; SoPhuc::Xuat(); } </small>

- Phương thức Tich():

• Output (đầu ra): Tích 2 số phức

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

IT002 L<b>– ẬP TRÌNH HƯỚNG ĐỐ</b>I T<b>ƯỢNG </b>

•Hướng giải quyết Cho hai số phức A(a1, a2), B(b1, b2), A * B = (a: <small>1</small>*b<small>1</small> – a *b<small>22</small>, a *b<small>12</small>+a<small>2</small>*b ) <small>1</small>

<i><small>Bảng 19 N i dung bên trong cộủa hướ</small></i><small>ng gi i quy</small><i><small>ảết phương thứ</small></i><small>c Tich(SoPhuc sp1, SoPhuc sp2) </small>

<small>void SoPhuc::Tich(SoPhuc sp1, SoPhuc sp2) { iThuc = sp1.iThuc * sp2.iThuc - sp1.iAo * sp2.iAo; iAo = sp1.iThuc * sp2.iAo + sp2.iThuc * sp1.iAo; cout << "Tich 2 so phuc la: "; </small>

<small> SoPhuc::Xuat(); } </small>

- Phương thức Thuong():

• Hướng giải quyết: Cho hai số phức A(a1, a2), B(b1, b2), A / B =

+

<i><small>Bảng 20 N i dung bên trong cộủa hướ</small></i><small>ng gi i quy</small><i><small>ảết phương thứ</small></i><small>c Thuong(SoPhuc sp1, SoPhuc sp2) </small>

<small>void SoPhuc::Thuong(SoPhuc sp1, SoPhuc sp2) { </small>

<small>iThuc = (sp1.iThuc * sp2.iThuc + sp1.iAo * sp2.iAo) / (sp2.iThuc * sp2.iThuc + sp2.iAo * sp2.iAo); </small>

<small> iAo = (sp1.iAo * sp2.iThuc - sp1.iThuc * sp2.iAo) / (sp2.iThuc * sp2.iThuc + sp2.iAo * sp2.iAo); </small>

<small> cout << "Thuong 2 so phuc la: "; SoPhuc::Xuat(); </small>

<small>} </small>

<i><small>Bảng 21 K t quếả chạy thử chương trình bài tập 3 </small></i>

<small>Nhap so phuc: 3 4 Nhap so phuc: 4 5 Tong 2 so phuc la: 7 + 9i Hieu 2 so phuc la: -1 + -1i Tich 2 so phuc la: -8 + 31i </small>

<small>Thuong 2 so phuc la: 0.780488 + 0.0243902i </small>

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

IT002 L<b>– ẬP TRÌNH HƯỚNG ĐỐ</b>I T<b>ƯỢNG Bài tập 4: Xây dựng p gilớờ</b> phút giây

• Phương thức: Nhap(), Xuat(), TinhCongThemMotGiay()

<small>Hình 7 Class diagram c a l</small><i><small>ủ ớp </small></i><small>GioPhutGiay</small>

<small>Hình 8 </small><i><small>Thự</small></i><small>c hi n xây d ng l p, khai báo các thu</small><i><small>ệựớộc tính, phương thứ</small></i><small>c c a l</small><i><small>ủ ớp </small></i><small>GioPhutGiay</small>

Phương thức của class GioPhutGiay: - Phương thức Nhap():

<i><small>Bảng 22 N i dung bên trong cộủa hướ</small></i><small>ng gi i quy</small><i><small>ảết phương thứ</small></i><small>c Nhap() </small>

<small>void GioPhutGiay::Nhap() { cout << "Nhap gio phut giay: "; cin >> iGio >> iPhut >> iGiay; </small>

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

IT002 L<b>– ẬP TRÌNH HƯỚNG ĐỐ</b>I T<b>ƯỢNG </b>

<small>} </small>

- Phương thức Xuat();

<i><small>Bảng 23 N i dung bên trong cộủa hướ</small></i><small>ng gi i quy</small><i><small>ảết phương thức </small></i><small>Xuat() </small>

<small>void GioPhutGiay::Xuat() { </small>

<small>cout << iGio << << iPhut << << iGiay << ":"":""\n"; } </small>

- Phương thức TinhCongThemMotGiay():

• Output (đầu ra): Giờ phút giây tính cộng thêm một giây.

<i><small>Bảng 24 N i dung bên trong cộủa hướ</small></i><small>ng gi i quy</small><i><small>ảết phương thứ</small></i><small>c TinhCongThemMotGiay() </small>

<small>void GioPhutGiay::TinhCongThemMotGiay() { iGiay++; </small>

<small>if(iGiay >= 60) iPhut++, iGiay = 0; if(iPhut >= 60) iGio++, iPhut = 0; </small>

<small>cout << "Gio phut giay sau khi cong them 1 giay la: "; GioPhutGiay::Xuat(); </small>

<small>} </small>

<i><small>Bảng 25 K t quếả chạy thử chương trình bài tập 4 </small></i>

<small>Nhap gio phut giay: 20 59 59 20:59:59 </small>

<small>Gio phut giay sau khi cong them 1 giay la: 21:0:0 </small>

LINK CODE

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

IT002 L<b>– ẬP TRÌNH HƯỚNG ĐỐ</b>I T<b>ƯỢNG </b>

<b>TÀI LIỆU THAM KHẢO</b>

</div>

×