BÀI TẬP CHƯƠNG 7 7.1.Thiết kế lớp Diem ( Điểm trong không gian 2 chiều) gồm 2 thành phần x,y kiểu int. Các hàm thành viên g ồm: + Gán tọa độ cho 1 điểm: void Gan (int hoanh , int tung) ; + Nhập tọa độ cho 1 điểm: void Nhap(); + In ra màn hình t ọa độ điểm theo dạng (x,y) : void InDiem(); + Xuất ra giá trị hoành độ của điểm: int PutX(); + Xuất ra giá trị tung độ của điểm: int PutY(); Viết hàm main() khai thác lớp vừa định nghĩa : + Tạo ra điểm A tọa độ (3,4). In tọa độ điểm A ra màn hình. + Tạo ra điểm B với giá trị nhập từ bàn phím. In tọa độ điểm B ra màn hình. + Tạo ra điểm C đối xứng với điểm B qua gốc tọa độ. In tọa độ điểm C ra màn hình. + Tính khoảng cách từ điểm B đến tâm O. //2.1 Lop diem #include <iostream.h> #include <conio.h> #include <math.h> // // Khai bao lop Diem // class Diem { int x; //hoanh do int y; //tung do public: void gan(int, int); void nhap(); void xuat(); int hoanhdo(); int tungdo(); Diem doixung(); }; // //Dinh nghia lop Diem // void Diem::gan(int h, int t) { x = h; y = t; } void Diem::nhap() { cout << "Hoanh do: "; cin >> x; cout <<"Tung do: "; cin >> y; } void Diem::xuat() { cout << "(" << x << ", " << y << ")"; } int Diem::tungdo() 1 { return y; } int Diem::hoanhdo() { return x; } Diem Diem::doixung() { Diem kq; kq.gan(-x, -y); return kq; } // //Dinh nghia ham main() // void main() { //tao diem a, gan toa do va in ra man hinh Diem a; a.gan(3, 4); cout << "a "; a.xuat(); cout << endl; //tao diem b, nhap toa do va in ra man hinh Diem b; b.nhap(); cout << "b "; b.xuat(); cout << endl; //tao diem c doi xung diem b, hien thi toa do ra mhinh Diem c; c = b.doixung(); cout << "Diem doi xung voi b: "; c.xuat(); //tinh khoang cach tu b den O float kc; kc = sqrt(b.tungdo()*b.tungdo() + b.hoanhdo()*b.hoanhdo()); cout << "\nKhoang cach tu b den O la: " << kc; getch(); } 7.2.Thiết kế lớp Clock gồm 3 thành phần: giờ, phút , giây . Các hàm thành viên g ồm : + Hàm gán (dùng để khởi tạo 1 Clock ) + Hàm nhập giá trị và hàm in + Hàm làm tròn th ời gian (VD: 13:67:150 s ẽ làm tròn thành 14:09:30). Viết hàm main() khai thác lớp vừa định nghĩa. + Tạo 1 Clock có giá trị là 9:15:38. In giá trị đó ra màn hình. + Tạo 1 Clock bất kỳ, nhập giá trị cho nó. In ra màn hình. + Làm tròn Clock v ừa nhập ở trên (nếu được) và in ra màn hình. //2.2: Lop Clock #include <iostream.h> #include <conio.h> // 2 //Khai bao lop Clock // class Clock { int gio, phut, giay; public: void gan(int, int, int); void nhap(); void xuat(); void lamtron(); }; // //Dinh nghia lop Clock // void Clock::gan(int h, int m, int s) { gio = h; phut = m; giay = s; } void Clock::nhap() { cout << "Nhap gio: "; cin>> gio; cout << "Nhap phut: "; cin >> phut; cout << "Nhap giay: "; cin >> giay; } void Clock::xuat() { cout << gio << ":" << phut << ":" << giay; } void Clock::lamtron() { //lam tron giay phut += (giay / 60); giay %= 60; //lam tron phut gio += (phut / 60); phut %= 60; //lam tron gio gio %= 24; } // //Ham main su dung lop Clock // void main() { Clock c; //Tao 1 clock voi gia tri la 9:15:38 va hien thi ra MH c.gan(9, 15, 38); cout << "Clock c: "; c.xuat(); cout << endl; //Tao mot Clock, nhap gtri, lam tron va hien thi ra MH Clock d; 3 cout << "Nhap gia tri cho Clock d: \n"; d.nhap(); d.lamtron(); cout << "Clock d sau khi lam tron: "; d.xuat(); getch(); } 7.3.Thiết kế lớp Date gồm 3 thành phần: ngày, tháng, n ăm Các hàm thành viên g ồm : + Hàm gán (dùng để khởi tạo 1 Date ) + Hàm nhập ngày. + Hàm hiện thông tin ngày. + Hàm kiểm tra xem ngày có hợp lệ hay không? (VD: Ngày 31/6/2000 hay 29/2/1999 là không h ợp lệ) Viết hàm main() khai thác lớp vừa định nghĩa. //2.3: Lop Date #include <iostream.h> #include <conio.h> #include <math.h> // //Khai bao lop Date // class Date { int ngay, thang, nam; public: void gan(int, int, int); void nhap(); void xuat(); int hople(); }; // //Dinh nghia lop Date // void Date::gan(int d, int m, int y) { ngay = d; thang = m; nam = y; } void Date::nhap() { cout << "Ngay: "; cin >> ngay; cout << "Thang: "; cin >> thang; cout << "Nam: "; cin >> nam; } void Date::xuat() { cout << ngay << "/" << thang << "/" << nam; } int Date::hople() { switch (thang) { 4 case 1: case 3: case 5: case 7: case 8: case 10: case 12: if ((ngay <= 31) && (ngay > 0)) return 1; else return 0; case 4: case 6: case 9: case 11: if ((ngay <= 30) && (ngay > 0)) return 1; else return 0; case 2: if (nam % 4 = = 0) if ((ngay <=29) && (ngay > 0)) return 1; else return 0; else if ((ngay <=28) && (ngay > 0)) return 1; else return 0; default: return 0; } //switch } // //Ham main khai thac lop Date // void main() { Date d1; d1.gan(10, 10, 2003); cout << "d1 = "; d1.xuat(); cout << endl; Date d2; d2.nhap(); d2.xuat(); if (d2.hople()) cout << ": Ngay hop le"; else cout << ": Ngay khong hop le"; getch(); } 7.4.Thiết kế lớp Phanso (phân số), trong đó mỗi phân số bao gồm - Dữ liệu: tử số và mẫu số - Phương thức: o Hàm xây dựng mặc nhiên. o Hàm xây dựng với hai đối số là tử số và mẫu số. o Hàm xây dựng sao chép. o Hàm nhập, xuất phân số ra màn hình o Hàm nghịch đảo phân số o Hàm tính giá trị thực của phân số o Hàm cộng, trừ, nhân, chia hai phân số, kết quả là 1 phân số o Hàm cộng, trừ, nhân, chia phân số với một số nguyên, kết quả là 1 phân số - Viết hàm main() thực hiện những yêu cầu sau: 5 + Tạo phân số a=3/7, b=4/9. In giá trị hai phân số trên ra màn hình + Tạo 2 phân số x, y với giá trị nhập từ bàn phím và in giá trị ra màn hình + In giá trị nghịch đảo của x + Tính tổng x, y, và in ra màn hình + Tính tích x và 10 và in ra màn hình + Nhập một danh sách gồm n phân số (n nhập từ bàn phím) + Tính tống n phân số đó //3.1. Lop Phanso #include <iostream.h> #include <conio.h> class Phanso { int tu; int mau; int uscln(int, int); void rutgon(); public: Phanso() {tu=0; mau=1;} //ham xdung mac nhien Phanso(int, int); Phanso(const Phanso&); void nhap(); void xuat(); void gan(int, int); Phanso nghichdao(); float trithuc(); Phanso cong(Phanso); Phanso tru(Phanso); Phanso nhan(Phanso); Phanso chia(Phanso); Phanso cong(int); Phanso tru(int); Phanso nhan(int); Phanso chia(int); }; // //cai dat cac ham thanh vien // int Phanso::uscln(int a, int b) { if ((a==0) || (b==0)) return 0; a = abs(a); b = abs(b); while (a!=b) (a>b)? (a-=b): (b-=a); return a; } void Phanso::rutgon() { int t = uscln(tu, mau); tu /= t; mau /= t; } Phanso::Phanso(int t, int m) { 6 tu = t; mau = m; } Phanso::Phanso(const Phanso& ps) { tu = ps.tu; mau = ps.mau; } void Phanso::nhap() { cout << "Tu so: "; cin >> tu; cout << "Mau so: "; cin >> mau; } void Phanso::xuat() { cout << tu << "/" << mau; } Phanso Phanso::nghichdao() { Phanso kq; kq.tu = mau; kq.mau = tu; return kq; } float Phanso::trithuc() { return float(tu)/mau; } Phanso Phanso::cong(Phanso ps) { Phanso kq; kq.tu = tu*ps.mau + mau*ps.tu; kq.mau = mau*ps.mau; kq.rutgon(); return kq; } Phanso Phanso::tru(Phanso ps) { Phanso kq; kq.tu = tu*ps.mau - mau*ps.tu; kq.mau = mau*ps.mau; kq.rutgon(); return kq; } void Phanso::gan(int t, int m) { tu = t; mau = m; } Phanso Phanso::nhan(Phanso ps) { Phanso kq; kq.tu = tu*ps.tu; kq.mau = mau*ps.mau; 7 kq.rutgon(); return kq; } Phanso Phanso::chia(Phanso ps) { Phanso kq; kq = this->nghichdao(); kq = ps.nhan(kq); return kq; } Phanso Phanso::cong(int a) { Phanso kq(a, 1); kq = kq.cong(*this); return kq; } Phanso Phanso::tru(int a) { Phanso kq(a, 1); kq = this->tru(kq); return kq; } Phanso Phanso::nhan(int a) { Phanso kq(a*tu, mau); return kq; } Phanso Phanso::chia(int a) { Phanso kq(tu, mau*a); return kq; } void main() { //tao 2 phan so 3/7; 4/9 v a in ra man hinh Phanso a(3,7), b(4,9); cout << "a = "; a.xuat();; cout << "b = "; b.xuat(); cout << endl << endl; //tao 2 phan so x, y Phanso x, y; cout << "Nhap x:\n"; x.nhap(); cout << "Nhap y:\n"; y.nhap(); cout << endl; cout << "x = "; x.xuat(); cout << endl; cout << "y = "; y.xuat(); cout << endl; 8 cout << "Nghich dao cua x = "; x.nghichdao().xuat(); cout << endl; //tinh tong x, y va in ra man hinh Phanso tong; tong = x.cong(y); cout << "x + y = " ; tong.xuat(); cout << endl; //tinh tich x va 10 Phanso tichx10; tichx10 = x.nhan(10); cout << "Tich cua x va 10 la: "; tichx10.xuat(); cout << endl << endl; //nhap danh sach n phan so int n; Phanso *ds; cout << "Nhap vao so phan tu cua danh sach: "; cin >> n; ds = new Phanso[n]; for (int i=0; i < n; i++) { cout << "Nhap phan so thu " << i + 0 << endl; ds[i].nhap(); } //tinh tong Phanso tongn; for (i=0; i<n; i++) tongn = tongn.cong(ds[i]); cout << endl; cout << "Tong n phan so: "; tongn.xuat(); getch(); } 9 . BÀI TẬP CHƯƠNG 7 7.1 .Thiết kế lớp Diem ( Điểm trong không gian 2 chiều) gồm 2 thành phần x,y kiểu int. Các hàm thành viên g ồm: + Gán tọa độ cho 1 điểm: void Gan (int hoanh. thác lớp vừa định nghĩa : + Tạo ra điểm A tọa độ (3,4). In tọa độ điểm A ra màn hình. + Tạo ra điểm B với giá trị nhập từ bàn phím. In tọa độ điểm B ra màn hình. + Tạo ra điểm C đối xứng với điểm. << ": Ngay khong hop le"; getch(); } 7. 4 .Thiết kế lớp Phanso (phân số), trong đó mỗi phân số bao gồm - Dữ liệu: tử số và mẫu số - Phương thức: o Hàm xây dựng mặc nhiên. o Hàm xây