Tải bản đầy đủ (.docx) (24 trang)

Đề Lập trình C++

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 (77.74 KB, 24 trang )

Muc lục
1.Xây dựng lớp số phức...................................................................................................................................................................... 1
2.Xây dựng lớp phân số ..................................................................................................................................................................... 4
3.Xây dựng lớp phân số(khác 3)........................................................................................................................................................ 6
4.Xây dựng lớp Ngay_Sinh(Cán bộ)................................................................................................................................................. 9
5.Xây dựng lớp Bệnh Án(Nguoi) .................................................................................................................................................... 12
6.Xây dựng lớp Sách(Tài Liệu)........................................................................................................................................................ 15
7.Xây dựng lớp Bệnh Án(Nguoi)..................................................................................................................................................... 19
8.Xây dựng lớp Ma Trận ................................................................................................................................................................. 22
9.Xây dựng lớp DaySo...................................................................................................................................................................... 25
10.Xây dựng lớp Thi_Sinh(Diem_Thi)............................................................................................................................................ 29
11.Xây dựng lớp Diem(Khoang Cach)............................................................................................................................................ 32
12.Xây dựng lớp Ngay_Sinh(Cán bộ)............................................................................................................................................. 35
Đề 1
Xẩy dựng lớp Sophuc gồm:
Các thuộc tính thuc, ao là các sổ thực mơ tả phần thực và phần ào và có quyền truy xuẩt là
Private. (I d)
Các hàm thành phần public để thực hiện các cơng việc sau.
Hàm tồn tử << để nhập một số phức.
Hàm toán tứ >> để in một số phức theo dạng (thuc, ao).
Phương thức TongSP de tính tổng 2 số phức (các phần thực dược cộng vớt nhau và các phân
ảo được cộng với nhan). (I d)
Xây dựng lớp Sophuc1 kế thừa lớp Sophuc và bổ sung:
Phương thức Modụl của số phức nếu z=thuc+ ao*i thi Modul = căn bậc 2 của thực*thực+ao*ao
Hàm toán tử * 2 số phức
z=thuc+ao*i, z1 =thuc1 +ao1 *i z*zl = (thuc*thuc1 -ao*aol) + (thuc*aol+thuc1+ao)
Xây dựng khn hình hàm Sum để tinh tống của 2 phân tử.
hàm main() thực hiện các công việc sau:
Nhập vào 2 sơ phức spl, Sp2.
In 2 số phức nhập vào.
Tính tong, tích 2 số phức và Modul của tổng và tích 2 sơ phức


Sử dụng khn hình hàm Sum để tính và in ra tông spl+sp2 và 2 số thực x,y
từ bàn phím
Bài làm
#include<iostream>
#include<math.h>
using namespace std;
class Sophuc{
private:
float thuc,ao;
public:
friend istream& operator<<(istream &is,Sophuc &a){
cout<<"nhap so thuc ";is>>a.thuc;
cout<<"nhap so ao ";is>>a.ao;
return is;

1


}
float LayThuc(){
return thuc;
}
float LayAo(){
return ao;
}
friend ostream& operator>>(ostream &os, Sophuc a){
os<<"so phuc la:"<<"(" <return os;
}
Sophuc TongSP(Sophuc b){

Sophuc temp;
temp.thuc=thuc+b.thuc;
temp.ao=ao+b.ao;
return temp;
}
};*
class Sophuc1:public Sophuc{
public:
float Modul(Sophuc g)
{
return sqrt(g.LayThuc()*g.LayThuc()+g.LayAo()*g.LayAo());
}
float operator*(Sophuc1 c){
float thuc,ao;
thuc=LayThuc()*c.LayThuc()-LayAo()*c.LayAo();
ao=LayThuc()*c.LayAo()+c.LayThuc()*LayAo();
cout<<"tich so phuc la:"<<"(" <return thuc,ao;
}
};
template<class T>
T Sum(T &a, T &b){
T c;
c=a+b;
return c;
}
int main(){
Sophuc1 sp1,sp2,sp3,sp4;
Sophuc c,d;
cout<<"nhap so phuc 1\n:";

cin<cout<<"nhap so phuc 2:\n";
cin<
2


cout>>sp1;
cout>>sp2;
cout<<"tong ">>sp1.TongSP(sp2);
cout<<"tich ";sp1*sp2;
c=sp1.TongSP(sp2);
cout<float x,y;
cout<<"\nNhap gia tri cua x :";
cin>>x;
cout<<"\nNhap gia tri cua y :";
cin>>y;
cout<}
Đề 2 :Viết 01 chương trình thưc hiên các công việc sau:
Xây dựng các PhanSo gôm:
Các thuộc tính ts, ms là hai số ngun mơ tả từ số và mẫu số cùa một phân sổ và có quyền truy xuất là Private (1 điềm)
Hàm toán tử » để nhập một phân số (1,5 điểm)
Hàm tốn tử « để in một phân số theo dạng ts/ms (1,5 điềm)
Hàm kiêm tra xem một phân số có khác 0 hay khơng? (1,5 điềm)
Hàm tốn tử / chia 2 phân số (1 ,5 điểm)
Xây dựng khn hình hàm Div tính thương của 2 phần từ (1 điểm)
Sau đó áp dụng cho phép nhập vào 2 phân số ps 1, ps2 và 2 số thực X, y. Kiềm tra điều kiện để
chia, nêu được thì sử dụng khn hình hàm Div dề tính và in ra giá tri và ps1/ps2 và x/y (2 điểm)

Bài làm
#include<iostream>
#include<math.h>
using namespace std;
class PhanSo{
private:
int ts, ms;
public:
friend ostream& operator<<(ostream &os,PhanSo b){
os<}
friend istream& operator >>(istream &is,PhanSo &b){
cout<<"\nNhap tu so cua phan so :";
is>>b.ts;
do{ cout<<"\nNhap mau so :";
is>>b.ms;
}while(b.ms==0);
}
bool kiemTra(){
if(ts==0)
return true;

3


}
PhanSo operator /(PhanSo b){
PhanSo temp;
temp.ts=ts*b.ms;
temp.ms=ms*b.ts;

return temp;
}
};
template<class T>
T Div(T a, T b){
return a/b;
}
int main(){
PhanSo ps1 , ps2 ;
float x,y;
cout<<"\nNhap phan so thu 1 :";
cin>>ps1;
cout<<"\nNhap phan so thu 2 :";
cin>>ps2;
cout<<"\nNhap gia tri cua x :";
cin>>x;
cout<<"\nNhap gia tri cua y :";
cin>>y;
if(ps2.kiemTra()==false&&ps1.kiemTra()==false)
cout<if(x!=0)
cout<return 0;
}
03 :Viết 01 chuong trình thực hiên các cơng việc sau:
Xây dựng lớp Phanso gồm:
Các thuộc tính tu, mau là các số nguyên mô tà tử sổ và mẫu sổ của một phân số và có quyên truy xuất là Private. (1 đ)
Các hàm thành phần public đe thực hiện các công việc sau:
Hàm tốn tử « đê nhập một phân số. (1,5 đ)
Hàm toán tử » đê in một phân số theo dạng tu/mau. (1,5 đ)

Hàm toán từ > để so sánh 2 phân sổ. (2 đ)
Xây dựng khn hình hàm Hoanvi dể hoán vị giá trị của 2 biến. (1 đ)
c. Sau đó áp dụng cho phép nhập vào 1 mảng sổ thực, 1 mảng phân số và một màng kí tự. (Iđ)
Sắp xếp các màng đó theo thứ tự tăng dần (áp dụng hàm Hoanvi) (Iđ)
In dãy đã sap xếp ra màn hình (1 đ)
Bài làm

4


#include<iostream>
using namespace std;
class Phanso{
private:
float ts,ms;
public:
friend istream& operator<<(istream &is, Phanso &a){
cout<<"\nNhap tu so ";
is>>a.ts;
do{
cout<<"\nNhap mau so :";
is>>a.ms;
}while(a.ms==0);
}
friend ostream& operator>>(ostream &os,Phanso a){
os<}
bool operator >(Phanso a);
};
bool Phanso::operator >(Phanso a){

if(ts/ms >a.ts/a.ms)
return true;
else
return false;
}
template<class T>
T Hoan_vi(T &a,T &b){
T x=a;
a=b;
b=x;
}
int main(){
float *x;
Phanso *ps;
string kitu;
int n,m,i,j;
cout<<"nhap so so thuc:";
do cin>>n;while(n<1);
x=new float[n];
for(i=0;icout<<"A["<}
for(i=0;ifor(int k=i+1;kif(x[i]>x[k])
Hoan_vi(x[i],x[k]);

5



}
cout<<"nhap so phan so:";
do cin>>m;while(m<1);
ps=new Phanso[m];
for(j=0;jcout<<"PS["<}
for(j=0;jfor(int h=j+1;hif(ps[j].operator >(ps[h]))
Hoan_vi(ps[j],ps[h]);
}
cin.ignore(1);
cout<<"nhap mang ki tu:" ;
getline(cin,kitu);
for(int a=0;afor(int b=a+1;bif(kitu[a]>kitu[b]){
Hoan_vi(kitu[a],kitu[b]);
}
cout<<"sap xep tang so thuc tang dan:";
for(i=0;icout<}
cout<<"\nsap xep tang phan so tang dan :";
for(j=0;jcout>>ps[j]<<"\t";
}
cout<<"\nsap xep ki tu tang dan :";
for(int a=0;a

cout<}
}
Đề 04
Tạo lơp NGAY_SINH bao cồm:
+ 3 số nguyen DD MM YY, lưu ngày tháng năm sinh cô quvền truy private:
+ Ham NHAP dùng nhập ngày thăng nàm sinh. (1 d) - Hàm IN dùng in ngày tháng năm sinh theo định dạng 23 /10/1978. (1d) Tao lơp CAN BO (can bộ) kế thừa lớp NGAYSINH và thèm
các thành phần sau: - HVT (Họ và lên). HSL (Hệ sổ lương). PC (phụ cấp) có quyền truy xuất private. (0.5) - Đinh nghĩa lại hàm NHAP đê nhập 6 thành phần dữ liệu. (1.5đ)
Định: nghĩa lại hàm IN đề in ra thông tin cán bộ theo định dang: (1.5đ)
Vũ Van Binh 27/2/1976 4.33 500000
Chồng toan tư ">" để so sánh hai cán bộ (Cán bộ A coi lò lớn hơn cán bộ B khi có hệ số lương lớn hơn)(2d)
Bài làm
#include<iostream>
using namespace std;

6


class Ngay{
protected:
int DD,MM,YY;
public:
void nhap();
void in();
};
void Ngay::nhap(){
cout<<"nhap ngay :";do cin>>DD;while(DD<0||DD>31);
cout<<"nhap thang :";do cin>>MM;while(MM<0||MM>12);
cout<<"nhap nam :";do cin>>YY;while(YY<0);
}

void Ngay::in(){
cout<}
class CanBo:public Ngay{
private:
string HVT;
float HSL,PC;
public :
void nhap();
void in();
bool operator>(CanBo a);
};
void CanBo::nhap(){
Ngay::nhap();
cin.ignore(1);
cout<<"nhap ho ten:";getline(cin,HVT);
cout<<"nhap he so luong:";do cin>>HSL;while(HSL<0);
cout<<"nhap phu cap:";do cin>>PC;while(PC<0);
}
void CanBo::in(){
cout<Ngay::in();
cout<<"\t"<}
bool CanBo::operator>(CanBo a){
if(HSL >a.HSL)
return true;
else
return false;
}

int main(){
CanBo *cb;
int n,i;
cout<<"nhap n=";

7


do cin>>n;
while(n<1);
cb=new CanBo[n]; //cú pháp ten_bien=new Ten_class[n];
for(i=0;icb[i].nhap();
}
for(i=0;icb[i].in();
}
cout<<"sap xep lai giam dan theo he luong \n" ;
CanBo temp;
for(i=0;ifor(int j=i+1;jif(cb[i].operator>(cb[j])==true)
temp=cb[i];
cb[i]=cb[j];
cb[j]=temp;
}
for(i=0;icb[i].in();
}
}

ĐÊ5 :Viết chương trình thực hiện các cơng việc sau:
- Xây dựng lớp cơ sở người gồm: (3d)
-» Thuộc tinh: họ tên, quên quán, năm sinh
+ Phương thức: Nhập, xuất thông tin của người
- Xây dựng lớp bệnh án kế thừa từ lớp nguoi và bổ sung thêm: (3 đ)
Thuộc tính: mã bệnh án, tên bệnh án. số tiền viện phí
Phương thức: Nhập, xuất thõng tin, tính tuổi hiện tại
Xây dựng khn hình hàm Hoanvi để hoàn vị giá trị của 2 biến. (1 d)
Chương trình chính thực hiện: (3 d)
Nhập danh sách n bệnh án (dùng con trỏ)
■■
Sắp xếp (sử dụng hàm Hoanvi) danh sách theo tiền viện phi giám dần cúa các bệnh nhân và hiền thị ra màn hình.
4- Hiện ra màn hình danh sách các bệnh nhân tuổi<=l5.
+ Cho biết thơng tin các bệnh nhàn có tuổi ít nhất.
Bài làm
#include<iostream>
using namespace std;
class Nguoi{
protected:
string HoTen;
string QueQuan;
int NamSinh;
public:

8


void nhap();
void in();
};

void Nguoi::nhap(){
cin.ignore(1);
cout<<"nhap ho ten :";getline(cin,HoTen);
cout<<"\nnhap que quan:";getline(cin,QueQuan);
cout<<"\nnhap nam sinh";cin>>NamSinh;
}
void Nguoi::in(){
cout<<"ho ten :"<}
class BenhAn:public Nguoi{
protected:
string maBenhAn;
string TenBenhAn;
int TienVienPhi;
public:
void nhap();
void in();
int tinhTuoiHienTai();
int LayTienVienPhi();
};
void BenhAn::nhap(){
Nguoi::nhap();
cin.ignore(1);
cout<<"\nma benh an ";getline(cin,maBenhAn);
cout<<"\nten benh an ";getline(cin,TenBenhAn);
cout<<"\nTien vien phi ";cin>>TienVienPhi;
}
void BenhAn::in(){
Nguoi::in();
cout<<"ma benh an:"<

}
int BenhAn::LayTienVienPhi(){
return TienVienPhi;
}
int BenhAn::tinhTuoiHienTai(){
return 2021-NamSinh;
}
template<class T>
void hoan_vi(T &a , T&b){
T x=a;
a=b;
b=x;
}

9


int main(){
BenhAn *b,tg;
int n,i,j;
cout<<"nhap n benh an";
do {
cin>>n;
} while(n<1);
b=new BenhAn[n];
for(i=0;ib[i].nhap();
}
for(i=0;ib[i].in();

}
for(i=0;ifor(j=i+1;jif(b[i].LayTienVienPhi()hoan_vi(b[i], b[j]);
}
for(i=0;ib[i].in();
}
cout<<"\nDanh sach benh nhan co tuoi <=15 :";
for(int i=0 ; iif(b[i].tinhTuoiHienTai()<=15)
b[i].in();
}
cout<<"benh nhan it tuoi nhat : ";
int min=b[0].tinhTuoiHienTai();
for(int i=0 ; iif(b[i].tinhTuoiHienTai() b[i].tinhTuoiHienTai() =min;
}
}
for(int i=0 ; iif(b[i].tinhTuoiHienTai() ==min){
b[i].in();
}
}
}

Đề 06:Viết chương trình thực hiện các cơng VIỆC sau
- Xây dựng lớp cơ sở tài liệu gồm: < 3d>


10


Thuộc lính Ten tài lieu, năm xuất bản. đơn giá
Phương thức: Nhập, xuất thông tin
- Xây dựng lớp SACH kê thừa từ lớp tài liệu bổ sung thêm:
:Thuộc tinh: Sô lượng, giá bán
:Phương thức Nhập, xuất thông tin. thành tiền ( số lượng bán * giá bán)
Xây dựng khn hình hàm Hoanvi để hoán vị giá trị của 2 biến
Chương trinh chính thực hiện (3d)
Nhập danh sách n SACH (dùng con trỏ)
Hiện thị ra màn hình danh sách cua SACH gồm số thứ tự, ten tài liệu, đơn giá. số lượng bán. giá ban, thành tiền.
,
.
Sắp xếp danh sách (sử dụng hàm hoán vị) theo thành thứ tự tăng dần và hiện thị kết quả ra màn hình ,cho biết thơng tin tài liệu có thành tiền ít nhất;
Bài làm
#include<iostream>
using namespace std;
class TaiLieu{
protected:
string TenTaiLieu;
int NamSanXuat;
float DonGia;
public:
void nhap();
void in();
};
void TaiLieu::nhap(){
cin.ignore(1);

cout<<"nhap ten tai lieu :";getline(cin,TenTaiLieu);
cout<<"nhap nam san xuat :";cin>>NamSanXuat;
cout<<"nhap don gia :";do cin>>DonGia;while(DonGia<1);
}
void TaiLieu::in(){
cout<<"\nten tai lieu "<<<"\n don gia :"<}
class Sach:public TaiLieu{
private:
int SoLuong;
float GiaBan;
public:
void nhap();
void in();
float thanhTien();
};
void Sach::nhap(){
TaiLieu::nhap();
cout<<"nhap so luong :";cin>>SoLuong;
cout<<"nhap gia ban :";do cin>>GiaBan;while(GiaBan<1);
}

11


void Sach::in(){
TaiLieu::in();
cout<<"so luong:"<}

float Sach::thanhTien(){
return GiaBan*SoLuong;
}
template<class T>
T HoanVi(T &a,T &b){
T x=a;
a=b;
b=x;
}
int main(){
Sach *s;
int n,i,j;
cout<<"nhap n sach =";do cin>>n;while(n<1);
s=new Sach[n];
for(i=0;is[i].nhap();
}
for(i=0;icout<<"so thu tu :"<s[i].in();
}
cout<<"danh sach sau khi sap xep la:";
for(int i=0 ; ifor(int j=i+1 ; jif(s[i].thanhTien() > s[j].thanhTien()){
HoanVi(s[i],s[j]);
}
for(i=0;is[i].in();
}

cout<<"thanh tien it nhat";
s[0].in();
}

Đề 07:Viết chương trình thực hiện các cơng việc sau:
- Xây dựng lớp cơ sở người (NGUO1) gồm:
Thuộc tính: họ tên có kiểu kí tự, năm sinh kiểu số nguyên (Iđ)
Các phương thức Nhập, xuất thông tin (2đ)
- Xây dựng lớp Người bệnh kế thừa từ lớp NGUOI bồ sung thêm:

12


Thuộc tính: tên bệnh án kiểu kí tự, số ngày nằm viện kiểu số nguyên, giá viện phi/ngày (1 đ)
Phương thức: Nhập, xt thơng tin, tính tuổi hiện, tiền viện phi = số ngày nằm viện ♦*giá viện phí/ngày. (2đ)
- Xây dựng khn hình hàm Hoanvi để hốn vị giá trị của 2 biến. (1 đ)
Chương trình chính thực hiện: (4d)
Nhập danh sách n (0Sắp xếp danh sách (sử dụng hàmHoanvi) theo tuổi giám dằn cùa NGUOIBENH và hiện thị kêt quá ra màn hình.
Hiện ra màn hình danh sách các NGUOI BENH có 5<=tuồi<=10.
Hiện ra thơng tin các NGUOIBENH có ngày năm viện nhiều nhất.
Bài làm
#include<iostream>
using namespace std;
class Nguoi{
protected:
string HoTen;
int NamSinh;
public:
void nhap();

void in();
};
void Nguoi::nhap(){
cin.ignore(1);
cout<<"nhap ho ten :";
getline(cin,HoTen);
cout<<"nhap nam sinh :";
cin>>NamSinh;
}
void Nguoi::in(){
cout<<"ho ten :"<}
class NguoiBenh:public Nguoi{
private:
string TenBenhAn;
float SoVienPhiTrenNgay;
int SoNgayNamVien;
public:
void nhap();
void in();
int TuoiHienTai();
float TienVienPhi();
int LaySoNgayNamVien();
};
void NguoiBenh::nhap(){
Nguoi::nhap();
cin.ignore(1);

13



cout<<"nhap ten benh an ";
getline(cin,TenBenhAn);
cout<<"nhap so ngay nam vien";
cin>>SoNgayNamVien;
cout<<"so tien nam vien trong 1 ngay";
cin>>SoVienPhiTrenNgay;
}
void NguoiBenh::in(){
Nguoi::in();
cout<<"\nten benh an:"<<<"\nso tien nam vien trong 1 ngay:"<}
int NguoiBenh::TuoiHienTai(){
return 2020-NamSinh;
}
float NguoiBenh::TienVienPhi(){
return SoNgayNamVien*SoVienPhiTrenNgay;
}
int NguoiBenh::LaySoNgayNamVien(){
return SoNgayNamVien;
}
template <class T>
void HoanVi(T &a, T &b){
T x=a ;
a=b;
b=x;
}
int main(){
NguoiBenh *nb;

int n,i,j;
cout<<"nhap so nguoi benh ";
do cin>>n;while(n<1||n>100);
nb=new NguoiBenh[n];
for(i=0;inb[i].nhap();
}
for(int i=0 ; ifor(int j=i+1 ; jif(nb[i].TuoiHienTai()HoanVi(nb[i],nb[j]);
}
cout<<"sap xep tuoi theo thu tu giam dan" ;
for(i=0;inb[i].in();
}
for(int i=0 ; i
14


if(nb[i].TuoiHienTai()>=5&&nb[i].TuoiHienTai()<=10){
nb[i].in();
}
int max=0;
for(i=0;iif(nb[i].LaySoNgayNamVien()>max)
nb[i].LaySoNgayNamVien()=max;
}
for(i=0;i

if(nb[i].LaySoNgayNamVien()==max)
nb[i].in();
}
}
Đề 08 :tạo 1 lớp MaTran vuong để mô tả đối tượng ma trận gồm các thành phần:
-các thuôc tính :cấp ma trận n là số ngun có quyền truy xuấ là private
-1 con tro **v trỏ đến các phần tử của ma trận
-hàm nhập :cho phép nhập số bậc ,các phần tử của ma trận
-hàm hủy dùng để giải phóng bộ nhớ
-hàm hiện thì các phần tử của ma trận
-hàm kiểm tra để kiểm tra xem 2 ma trận có cùng bậc khơng;
Tốn tử = để gán hai ma trận bằng nhau
-định nghĩa hàm toán tử cộng
Viết chương trình chính nhập vào 2 ma trận.tính tổng của 2 ma trận nếu không cùng bậc thông báo ma trận không cùng bậc.
#include<iostream>
using namespace std;
class Matran{
private :
int n;
protected:
float **v;
public :
void nhap();
~Matran();
void in();
bool KiemTra(Matran a);
void operator=(Matran a);
void operator+(Matran a);
};
void Matran::nhap(){

int i,j;
cout<<"nhap so bac cua ma tran:";
do cin>>n;while(n<1);
v=new float*[n];
for(i=0;i
15


v[i]=new float[n];
for(i=0;ifor(j=0;jcout<<"V["<cin>>v[i][j];
}
}
Matran::~Matran(){
int i;
for(i=0;idelete v[i];
delete v;
}
void Matran::in(){
int i,j;
for(i=0;ifor(j=0;jcout<cout<}
}

bool Matran::KiemTra(Matran a){
if(n==a.n)
return true;
else
return false;
}
void Matran::operator=(Matran a){
int i,j;
n=a.n;
for(i=0;ifor(j=0;jv[i][j]=a.v[i][j];
}
}
void Matran::operator+(Matran b){
int i,j;
if(n==b.n)
for(i=0 ; ifor(j=0 ; jcout<cout<}
else
cout<<"ma tran khong cung bac";

16


}
int main(){

Matran mt1,mt2;
mt1.nhap();
mt2.nhap();
mt1+mt2;
return 0;
}
Đề 09 Tạo 1 lớp dayso thuc bao gồm. .
;
+ Thanh phần dữ liệu: Con trỏ thực cấp phát một mang p, và số phần tử thực là sô nguyên n co quyển truy xuất private.! Id)
+ Thành phân phương thức:
Hàm nhập cho phép nhập vào dày sô thực. (1.5đ)
Hãm hủy thu hồi bộ nhớ đã cấp pháp cho con trò p (0.5d)
Hảm in để in dãy ra màn hình các phân tử cách nhau 1 dấu ,(1.5 d)
Chống toán tứ *<” so sánh hai dãy số thực( Dãy sô thực dược coi là nhỏ hơn dãy B khi tổng các phần từ của dãy A nhỏ hơn tổng các phần tử cùa dãy B). (2d)
Hàm sắp xếp dãy số theo thứ tự. (Thứ tự sắp xếp phụ thuộc vào tham số truyền vào hàm. nếu truyền 1 sắp xếp dãy theo thứ tự tăng dần, truyền -1 theo thử tự giám dằn) (1 đ)
Chương trình chính :Nhập vào từ bàn phím n>0 dãy số thực (dùng cấp phát dộng). ( 1.5 d)
In ra mãn hình các dày sô vừa nhập theo thứ tự tăng dẩn cúa tồng các phẩn tử (Mỗi dãy trên 1 dòng, các phần tử cùa mỗi dãy cũng theo thứ tự tăng dần.( 1 đ)
Bài làm
#include<iostream>
using namespace std;
class DaySo{
private:
int n;
float *p;
public:
void nhap();
void in();
~DaySo();
bool operator >(DaySo b);
void operator=(DaySo b);

void sapXep(int chon);
};
void DaySo::nhap(){
cout<<"Nhap so phan tu cua day: ";
do
cin>>n;
while(n<=0);
p = new float[n];
for(int i = 0; i < n; i++){
cout<<"x["<cin>>p[i];

17


}
}
void DaySo::in(){
cout<for(int i = 0; i < n ; i++)
cout<}
DaySo::~DaySo(){
delete p;
}
bool DaySo::operator >(DaySo b){
int i;
float tonga = 0, tongb = 0;
for(i = 0; i < n; i++)
tonga += p[i];

for(i = 0; i < b.n ; i++)
tongb += b.p[i];
if(tonga > tongb)
return true;
else
return false;
}
void DaySo::operator=(DaySo b){
n = b.n;
for(int i = 0; i < n; i++)
p[i] = b.p[i];
}
void DaySo::sapXep(int chon){
int i,j;
float tg;
if(chon == 1){ //Neu chon = 1 thi sap xep tang dan
for(i = 0; i < n-1 ; i++)
for(j = i + 1; j < n; j++)
if(p[i] > p[j]){
tg = p[i];
p[i] = p[j];
p[j] = tg;
}
}
else if(chon == -1){ //Neu chon = -1 thi sap xep giam dan
for(i = 0; i < n-1 ; i++)
for(j = i + 1; j < n; j++)
if(p[i] < p[j]){
tg = p[i];


18


p[i] = p[j];
p[j] = tg;
}
}
}
int main(){
int i,j,n;
DaySo *ds,tg;
cout<<"Nhap so day so: ";
do
cin>>n;
while(n <= 0);
ds = new DaySo[n];
for(i = 0; i < n ; i++)
ds[i].nhap();
for(i = 0; i < n - 1; i++)
for(j = i + 1; j < n; j++)
if(ds[j].operator >(ds[i])){
tg = ds[i];
ds[i] = ds[j];
ds[j] = tg;
}
for(i = 0; i < n; i++){
ds[i].sapXep(1);
ds[i].in();
}
return 0;

}
Đề 10 :Tạo lớp THISINH gồm các thành phần:
+ 2 xâu ký tự HVT ( Họ và tên), MDT ( mã dự thi) có quyền truy xuất Private. (0.5đ)
+ Phương thức NHAP cho phép nhập Họ tên và mà dự thi. (1.25đ)
+ Phương thức IN cho phép in dưới dạng |VŨ Văn Vân MDAA21345V (1.25d)
Tạo lớp DIEM THI kế thừa lớp THI SINH có các thành phần:
+ 3 số thực T (điểm toán) L (điểm lý) H (điểm hóa) có quyền truy xuất private. (0.5d)
Phương thức NHAP cho phép nhập họ tên, mà dự thi, 3 điểm thi. (tđ)
Phương thức IN cho phép in theo định dạng sau: (Iđ)
VŨ Văn Vân| MDAA21345 |7.50 | 8.00 | 10.00 |
4- Phương thức TONG cho phép tính tồng điểm 3 mơn thì, nếu 1 trong 3 mơn có điểm 0, hàm trả về tổng điểm là 0. (Iđ)
• Lập chương trình thực hiện:
+ Nhập vào từ bàn phím n>0 thí sinh có kiểu DlEM_THI(dùng cấp phát động). (2)
+ In ra màn hình danh sách thí sinh theo thử tự giảm dần cùa tổng diêm, mỗi thi sinh in trên í dòng. (1.5đ)
Bài Làm
#include<iostream>
using namespace std;

19


class THI_SINH{
private:
string HVT;
string MDT;
public:
void nhap(){
cout<<"\nNhap ho va ten :";
cin.ignore(1);
getline(cin,HVT);

cout<<"\nNhap ma du thi :";
cin.ignore(1);
getline(cin,MDT);
}
void in(){
cout<<"|"<}
};
class DIEM_THI:public THI_SINH{
private:
float T , L , H ;
public:
void nhap(){
THI_SINH::nhap();
cout<<"\nNhap diem toan cua thi sinh :";
do
cin>>T;
while(T<0 ||T>10);
cout<<"\nNhap diem ly cua thi sinh :";
do
cin>>L;
while(L<0 ||L>10);
cout<<"\nNhap diem hoa cua thi sinh :";
do
cin>>H;
while(H<0 ||H>10);
}
void in(){
THI_SINH::in();
cout<<"|"<

}
float TONG(){
if(T==0 || L==0 || H==0)
return 0;
return T+L+H;

20


}
};
int main(){
DIEM_THI *DT , tg;
int n ;
cout<<"\nNhap so luong thi sinh :";
do
cin>>n;
while(n<=0);
DT= new DIEM_THI[n];
for(int i=0 ; icout<<"\nThong tin thi sinh thu :"<DT[i].nhap();
}
cout<<"\n Danh sach thi sinh theo thu tu giam dan cua tong diem :";
for(int i=0 ; ifor(int j=0 ; jif(DT[i].TONG() < DT[j].TONG()){
tg= DT[i];
DT[i]=DT[j];
DT[j]=tg;

}
for(int i=0 ; iDT[i].in(); }
return 0;
}
Đề 11 Tạo lớp DIEM đê quản lý tọa độ không gian I diem gồm
+ Thuộc tinh là 3 sô thực x,y,z là tọa đơ điểm có quyền truy xuất private (1d)
4 Hàm NHAP để nhập tọa độ 1 điểm (1,5 d)
-Hàm IN để in ra tọa độ điểm theo định dang 56 25 54 (I Y d)
+ Chơng tốn tử > đê so sánh dộ cao hai diem (điểm M được coi là lớn hơn khi y của M lớn hơn)
+ Lập hàm KHOANG CACII để tính khoảng cách giữa các điểm. (1. 5d)
(2 diem M(a;b;c) vá diem N(d,e,f). Khi dó khoang cách giữa hai diem M và N .
Lập chương trình thực hiện:
+ Nhập vào từ bân phím n >0 điềm tọa độ. (Id)
+ Nhập vàọ tử bàn phim 1 điêm D1 (Id)
+ In ra màn hình danh .sách n(theo thứ tự tăng dần)
+ In ra màn hình danh sách những điểm cao hon điểm D1
Bài làm
#include<iostream>
#include<math.h>

21


using namespace std;
class Diem{
private:
float x,y,z;
public:
void nhap();

void in();
bool operator>(Diem a);
void Khoang_Cach(Diem a);
};
void Diem::nhap(){
cout<<"nhap x=";cin>>x;
cout<<"nhap y=";cin>>y;
cout<<"nhap z=";cin>>z;
}
void Diem::in(){
cout<}
bool Diem::operator>(Diem a){
if(y>a.y)
return true;
else
return false;
}
void Diem::Khoang_Cach(Diem a){
cout<}
int main(){
Diem *d,D1,tg;
int n,i,j;
cout<<"nhap so diem :\n";
do
cin>>n;
while(n<1);
d=new Diem[n];
for(i=0;i

d[i].nhap();
cout<<"nhap diem D1:"<D1.nhap();
for(i=0;ifor(j=i+1;jif(d[i]>d[j]){
tg=d[i];
d[i]=d[j];
d[j]=tg;
}

22


cout<<"sau khi sap xep:\n";
for(i=0;id[i].in();
cout<<"diem lon hon D1\n";
for(i=0;iif(d[i]>D1)
d[i].in();
}
Đề 12:
Tạo lơp NGAY_SINH bao cồm:
+ 3 số nguyen DD MM YY, lưu ngày tháng năm sinh cô quvền truy private:
+ Ham NHAP dùng nhập ngày thăng nàm sinh. (1 d) - Hàm IN dùng in ngày tháng năm sinh theo định dạng 23 /10/1978. (1d) Tao lơp CAN BO (can bộ) kế thừa lớp NGAYSINH và thèm
các thành phần sau: - HVT (Họ và lên). HSL (Hệ sổ lương). PC (phụ cấp) có quyền truy xuất private. (0.5) - Đinh nghĩa lại hàm NHAP đê nhập 6 thành phần dữ liệu. (1.5đ)
Định: nghĩa lại hàm IN đề in ra thông tin cán bộ theo định dang: (1.5đ)
Vũ Van Binh 27/2/1976 4.33 500000
Chồng toan tư ">" để so sánh hai cán bộ (Cán bộ A coi lị lớn hơn cán bộ B khi có hệ số lương lớn hơn)(2d)

+ in ra màn hình cán bộ có tuổi cao nhất
Bài làm
#include<iostream>
using namespace std;
class Ngay{
protected:
int DD,MM,YY;
public:
void nhap();
void in();
};
void Ngay::nhap(){
cout<<"nhap ngay :";do cin>>DD;while(DD<0||DD>31);
cout<<"nhap thang :";do cin>>MM;while(MM<0||MM>12);
cout<<"nhap nam :";do cin>>YY;while(YY<0);
}
void Ngay::in(){
cout<}
class CanBo:public Ngay{
private:
string HVT;
float HSL,PC;
public :
void nhap();
void in();
bool operator>(CanBo a);
};
void CanBo::nhap(){


23


Ngay::nhap();
cin.ignore(1);
cout<<"nhap ho ten:";getline(cin,HVT);
cout<<"nhap he so luong:";do cin>>HSL;while(HSL<0);
cout<<"nhap phu cap:";do cin>>PC;while(PC<0);
}
void CanBo::in(){
cout<Ngay::in();
cout<<"\t"<}
bool CanBo::operator>(CanBo a){
if(HSL >a.HSL)
return true;
else
return false;
}
int main(){
CanBo *cb;
int n,i;
cout<<"nhap n=";
do cin>>n;
while(n<1);
cb=new CanBo[n];
for(i=0;icb[i].nhap();
}

for(i=0;icb[i].in();
}
cout<<"sap xep lai giam dan theo he luong \n" ;
CanBo temp;
for(i=0;ifor(int j=i+1;jif(cb[i].operator>(cb[j])==true)
temp=cb[i];
cb[i]=cb[j];
cb[j]=temp;
}
for(i=0;icb[i].in();
}
}

24



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×