You are on page 1of 6

(Phần bài tập mô tả, bài tập phát triển & bài tập về nhà)

Chú ý: Sinh viên cần thực hiện


- Thực hiện lại các bài tập mô tả (các bài tập đã được giải..cần sửa sai sót trong lời giải nếu
có)
- Làm các bài tập phát triển tại lớp (các bài chưa sửa_[bài…]).
- Làm các bài tập về nhà (là bài kiểm tra[vn..] để tuần tiếp theo sinh viên sẽ trình bày)
Nội dung CD2:

a/ Đại số hệ
-          Đại số hệ
DSH số nguyên =...
D= -...-1,0,1,2........
P= +,- ,x, :, >, <....
....
-          Kiểu dữ liệu (type):
Type = <DSH>
VD: trong N2 LT C:
Int =...
D = -32768- +32767
...
-          Đối tượng (object)
....
b/ Định nghĩa lớp
-          Cách viết
class tên_lớp
{ [public/protected/private]:
// khai báo các thành phần dữ liệu (D)
[public/protected/private]:
// Khai báo các hàm và phương thức (P)
};
// Xây dựng các hàm và PT của lớp
Chú ý:
- khi xây dựng các thành phần P ngoài lớp thì phải thêm tên_lớp:: trước thành phần xây
dựng.
- Tp D thường KB kiểu truy xuất private, còn tp P dc khai báo public
...
-          Các thuộc tính (public, private)
...
c/ Thực hành bài trong sách
d/ Thực hành bài riêng.

Bai 2.1: Xây dựng lớp phân số(phan_so) có các hàm & phương thức sau:
a/ phương thức nhập & hàm xuất phân số
b/Phương thức cộng để cộng hai phân số
c/ Phương thức nhân(*) hai phân số
d/ Phương thức rút gọn phân số
e/ Phương thức chuyển đổi phân số thành số thực.
f/ Phương thức hoán đổi giá trị của hai phân số
g/ Phương thức so sánh lớn hơn, cho giá trị 1 nếu phân số 1 lớn hơn phân số 2, ngược lại cho 0

Bài 2.2: Cho mảng k phân số (kiểu phân số bài 1.1) viết chương trình
a/ Tính tổng các phân số.
b/ Tính tích các phân sổ và in ra giá trị thực của tích.
c/ Tìm phân số nhỏ nhất và lớn nhất
d/ Sắp xếp và in ra các phân số theo trật tự giảm dần.

Lời giải
//bai 2.1 phan a, b, d
#include<iostream>
using namespace std;
// Khai báo cấu trúc phân số & các thao tác trên phân số
class phan_so
{ private:
int tu,mau;// Khai báo 2 thành phần của phân số (tủ số và mẫu số- TP D của lớp)
public: // Các thành phần P
void xuat_phan_so();// khai báo phương thức xuất một phân số
void nhap_phan_so();// Khai báo phương thức nhập một phân số
phan_so cong_phan_so(phan_so&);// Khai báo phương thức cộng hai phân số
phan_so rut_gon_phan_so();// Khai báo phương thức rut gọn phân số
};
// Khai báo xong thành phần D & P của lớp phân số
// Xây dựng các hàm+phương thức
void phan_so::xuat_phan_so()
{
cout<<tu<<"/"<<mau;
};
void phan_so::nhap_phan_so()
{
cout<<"\n Tu so: ";
cin>>tu;
cout<<" Mau so: ";
cin>>mau;
}
phan_so phan_so::cong_phan_so(phan_so& phan_so2)
{ phan_so phan_so_tam;
phan_so_tam.tu=tu*phan_so2.mau+phan_so2.tu*mau;
phan_so_tam.mau=mau*phan_so2.mau;
return phan_so_tam;
}

phan_so phan_so::rut_gon_phan_so()
{
int a,b;
a=abs(tu);b=abs(mau);
while(a!=b){
if(a>b)a=a-b;
else b=b-a;
};
tu=tu/a;
mau=mau/a;
return *this;
}
// Kết thúc xây dựng lớp phan_so

// Bài 2.2 phần a


// Khai báo các hàm
void nhap_phan_so(phan_so phan_so1[], int n);// Hàm chồng nhập một mảng phân số
void xuat_phan_so(phan_so phan_so1[], int n);// Hàm chồng xuất một mảng phân số
phan_so tong(phan_so[], int);// Ham tinh tong dãy phan số

// Xây dựng các hàm


void nhap_phan_so(phan_so phan_so1[], int n)
{
for(int i=0;i<n;i++)
{ cout<<" PHAN SO THU "<<i+1<<" la...";
phan_so1[i].nhap_phan_so();
}
}
void xuat_phan_so(phan_so phan_so1[], int n)
{
for(int i=0;i<n;i++)
{ cout<<endl;
cout<<" PHAN SO THU "<<i+1<<"la...";
phan_so1[i].xuat_phan_so();
}
};

phan_so tong(phan_so phan_so1[], int n)


{
phan_so trung_gian_tong=phan_so1[0];
for(int i=1;i<n;i++)
trung_gian_tong=trung_gian_tong.cong_phan_so(phan_so1[i]);
return trung_gian_tong;
}
int main()
{
phan_so mang_phan_so1[50]; int k;
cout<<"\n nhap so phan so:";cin>>k;
cout<<" NHAP CAC PHAN SO..."<<endl;
nhap_phan_so(mang_phan_so1,k);
system("cls");
cout<<" DANH SACH CAC PHAN SO"<<endl;
xuat_phan_so(mang_phan_so1,k); cout<<"\n\n";
phan_so sum;
sum=tong(mang_phan_so1,k);
sum=sum.rut_gon_phan_so();
cout<<"\n Tong cac phan so:";sum.xuat_phan_so();

cout<<"\n\n\n";
system("pause");
return 0;
}

Bài tập về nhà(kiểm tra tuần tiếp theo)

VN2.1. Các phần chưa làm trong bài bt2.1, bt2.2


VN2.2. Xây dựng lớp quản lý điểm môn học phần lập trình nâng cao có các thành phần dữ liệu(
tp. D): mã sinh viên, họ tên sinh viên và điểm môn học. Các hàm và phương thức của lớp (tp. P)
bao gồm:
- Phương thức xuất và nhập
- Phương thức lấy điểm trung bình
- Phương thức chuyển đối giá trị của hai sinh viên
- Phương thức so sánh hai sinh viên, cho true nếu sinh viên 1 có điểm lớn hơn sinh viên 2,
ngược lại cho giá trị false.
VN2.3. Cho một danh sách quản lý các sinh viên(kiểu lớp VN2.2.) môn lập trình nâng cao. Viết
chương trình:
a/ Tìm và in ra sinh viên có điểm môn học cao nhất.
b/ Sắp xếp và in ra các sinh viên theo trinh tự giảm dần của điểm môn học.

You might also like