1. Trang chủ
  2. » Công Nghệ Thông Tin

Tổng hợp bài tập OOP Hướng đối tượng C++ có lời giải

59 787 7

Đ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

Định dạng
Số trang 59
Dung lượng 242,8 KB

Nội dung

Đây là tài liệu tổng hợp bài tập lập trình hướng đối tượng với ngôn ngữ C++ có đáp án khá hay dành cho các bạn đang học ngôn ngữ C cũng như đang học phần OOP trong C++. File PDF bao gồm 13 bài tập nâng cao kèm lời giải chi tiết.

Trang 1

1 Giả sử Công ty có hai loại nhân viên: Nhân viên văn phòng và Nhân viên sản xuất Viết chương trình quản lý và tính lương cho từng nhân viên của công ty: Mỗi nhân viên cần quản lý các thông tin sau: Họ tên, ngày sinh, lương Công ty cần tính lương cho nhân viên như sau: - Đối với nhân viên sản xuất: Lương=lương căn bản + số sản phẩm * 5.000 - Đối nhân viên văn phòng: lương =

virtual void nhap();

virtual void xuat();

virtual long luong();

Trang 2

cout<<hoten<<endl<<"ngay sinh: "<<ngay<<"/"<<thang<<"/"<<nam<<endl; }

virtual void nhap();

virtual void xuat();

virtual long luong();

Trang 3

virtual void nhap();

virtual void xuat();

virtual long luong();

Trang 5

if(k!=1 && k!=2 && k!=0) cout<<"\nkhong hop le!\n";

}while(k!=1 && k!=2 && k!=0);

Trang 7

~diem(void);

friend istream &operator>>(istream &in,diem &a); friend ostream &operator<<(ostream &out,const diem &a); };

Trang 8

3 Làm lại bài số phức với một phương thức thiết lập duy nhất cho phép quan điểm một số thực như một

số phức đặc biệt (phần ảo bằng 0) Định nghĩa các phép toán cộng ,trừ nhân chia, so sánh,… +, , *, /, = =, !=, ! trên số phức Định nghĩa phép toán << và >> để xuất và nhập dữ liệu vào số phức.sophuc.h

sophuc operator+(const sophuc &);

sophuc operator-(const sophuc &);

sophuc operator*(const sophuc &);

sophuc operator/(const sophuc &);

bool operator<(sophuc &);

bool operator<=(sophuc &);

bool operator>(sophuc &);

bool operator>=(sophuc&);

bool operator==(sophuc&);

bool operator!=(sophuc&);

friend ostream &operator<<(ostream &out,const sophuc &a);

friend istream &operator>>(istream &in,sophuc &a);

Trang 9

if(a.t==0 && a.a!=0) out<<a.a<<"i";

else if(a.a==0 && a.t!=0) out<<a.t;

else if(a.t==0 && a.a==0) out<<0;

else out<<a.t<<((a.a>0)?" + ":" - ")<<abs(a.a)<<"i"; return out;

Trang 11

if(a>b) cout<<1<<endl;else cout<<0<<endl;

if(a>=b) cout<<1<<endl;else cout<<0<<endl;

if(a<b) cout<<1<<endl;else cout<<0<<endl;

if(a<=b) cout<<1<<endl;else cout<<0<<endl;

if(a==b) cout<<1<<endl;else cout<<0<<endl;

if(a!=b) cout<<1<<endl;else cout<<0<<endl;

Trang 12

virtual void nhap();

virtual void xuat();

virtual double Tinhluong();

time_t t = time(0);// Reset l?i th?i gian b?ng 0

struct tm *POs = localtime(&t); // Trong Struct tm có các class nh? th?i gian , ngày , tháng n?m v

int namhientai = POs->tm_year + 1900;// dòng này t?c là l?y n?m tr??c n?m 1900 nên ta ph?i c?ng thên 1900 nó m?i b?ng th?i gian ??u

cout << "\nNam vao lam phai nam trong khoan: 1900 >" << namhientai << "\nxin kiem tra lai";;

} } while (namvaolam<1900||namvaolam>namhientai);

}

Trang 13

void NhanVien::xuat()

{

cout << "\nTen nhan vien: "<<ten; cout << "\nNam vao lam: "<<namvaolam; }

Trang 14

time_t t = time(0);// Reset l?i th?i gian b?ng 0

struct tm *POs = localtime(&t); // Trong Struct tm có các class nh? th?i gian , ngày , tháng n?m v

int namhientai = POs->tm_year + 1900;// dòng này t?c là l?y n?m tr??c n?m 1900 nên ta ph?i c?ng thên 1900 nó m?i b?ng th?i gian ??u

return (sosanpham * 10000) + 100000 + ((namhientai - namvaolam) * 20000);

Trang 15

cout << "\nNhap muc luong can ban: "; cin >> luongcanban;

cout << "\nNhap so ngay nghi: "; cin >> ngaynghi;

}

void NhanVienVanPhong::xuat()

{

NhanVien::xuat();

cout << "\nLuong can ban: "<<size_t(luongcanban);

cout << "\nSo ngay nghi: "<<ngaynghi;

}

double NhanVienVanPhong::Tinhluong()

{

time_t t = time(0);// Reset l?i th?i gian b?ng 0

struct tm *POs = localtime(&t); // Trong Struct tm có các class nh? th?i gian , ngày , tháng n?m v

int namhientai = POs->tm_year + 1900;// dòng này t?c là l?y n?m tr??c n?m 1900 nên ta ph?i c?ng thên 1900 nó m?i b?ng th?i gian ??u

return luongcanban-(ngaynghi * 10000) + 100000 + ((namhientai - namvaolam) * 20000);

}

NhanVienVanPhong::~NhanVienVanPhong()

{

Trang 16

cout << "\n|< -*Nhap so tuong ung trong menu ->|";

Trang 17

cout << "\n|1. -*Nhap nhan vien san xuat* -|";

cout << "\n|2. -*Nhap nhan vien van phong -|";

cout << "\n|0. -*T-h-o-a-t' -C-h-u-o-n-g -T-r-i`-n-h -|";

cout << "\n|< by a POsgia.com ->|";

cout << "\n|**https://www.facebook.com/chuc.tiensinh*******************|";

cout << "\n - -._ - - - -._ - - - -._ - - - _?_¤? ?¤ _?_¤? ?¤ - -.";

cout << "\n Love.you! - Love.you!-._ - Love.you!- Love.you!Love.you!";

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 15);

do {

cout << "\nNhap lua chon: "; cin >> chon;

if (chon < 0 || chon>2) {

cout << "\nCo 2 lua chon xin kiem tra lai!";

} } while (chon < 0 || chon>2);

if (chon == 1) {

POs = new NhanVienSanXuat;

} else if (chon == 2) {

POs = new NhanVienVanPhong;

}

if (chon != 0) {

POs->nhap();

Mangnhanvien.push_back(POs);

} } while (chon != 0);

}

void CongTy::Xuatmangnhanvien()

{

int POscout = Mangnhanvien.size();

for (int i = 0; i < POscout; i++)

{

Trang 18

int POscout = Mangnhanvien.size();

for (int i = 0; i < POscout; i++)

Trang 19

5 2 CLASS ĐIỂM VÀ TAM GIÁC, TÍNH DIỆN TÍCH TAM GIÁC /*

Chương trình gồm 2 class điểm và tam giác

void Diem::XuatDiem()

{

cout<<"(x,y) = ("<<X<<","<<Y<<")";

Trang 20

}

float Diem::TinhDoDai(Diem T)

{

return sqrt((X-T.X)*(X-T.X)+(Y-T.Y)*(Y-T.Y)); }

Trang 22

Diem::Diem()//khoi tao gia tri mac dinh

Trang 23

7 Quản lý , nhập xoá sinh viên

Trang 24

void SinhVien::SetTenSV(string ten)

Trang 25

vt=i;

kq=true;

} }

Trang 26

for(int j=i;j<n-1;j++)

chuoi[j]=chuoi[j+1]; i ;

n ;

} }

chuoi[i]=tolower(chuoi[i]); }

Trang 27

cout<<"Moi ban nhap so sinh vien can them.";

cout<<"\nSo sinh vien can them:";cin>>n;

for(int i=index;i<n+index;i++)

{

cout<<"\nSinh Vien thu "<<i+1<<endl;

SinhVien sv ; sv.Nhap();

ArrSV[i]=sv;

ArrSV[i].SetTenSV(ChuanHoaChuoi(ArrSV[i].GetTenSV())); dem++;

ArrSV[i]=ArrSV[i+1];

} dem++;

Trang 28

cout<<"\nSinh vien ban can tim la.\n";

cout<<setw(20)<<"Ma Sinh Vien"<<setw(20)<<"Ho Va Ten"<<setw(20)<<"Lop"<<setw(20)<<"Diem Trung Binh"<<endl;

cout<<"\nDanh sach sinh vien lop "<<lop<<" la :\n";

cout<<setw(20)<<"Ma Sinh Vien"<<setw(20)<<"Ho Va Ten"<<setw(20)<<"Lop"<<setw(20)<<"Diem Trung Binh"<<endl;

for(int i=0;i<index;i++) {

if(lop==ArrSV[i].GetLop()) {

ArrSV[i].Xuat();

Trang 29

cout<<endl;

} }

cout<<"Danh sach sinh vien:\n";

cout<<setw(20)<<"Ma Sinh Vien"<<setw(20)<<"Ho Va Ten"<<setw(20)<<"Lop"<<setw(20)<<"Diem Trung Binh"<<endl;

Trang 30

cout<<"\t================================ Chon thong tin can sua

============================";

cout<<"\n\n\t\t\t\t\t 1.Sua ten SV.";

cout<<"\n\n\t\t\t\t\t 2.Sua Diem TB.";

cout<<"\n\n\t\t\t\t\t 3.Sua lop hoc.";

cout<<"\n\n\t\t\t\t\t 4.Quay lai.";

cout<<"\nNhap vao lua chon.";

cin>>t;

switch (t) {

Trang 31

getline(cin,lopmoi);

ArrSV[vt].SetTenSV(lopmoi);

} break;

cout<<"\n\n\t\t\t\t\t1.Xuat file theo lop.";

cout<<"\n\n\t\t\t\t\t2.Xuat tat ca danh sach sinh vien.";

Trang 32

for(int i=0;i>index;i++) {

if(lopxuatfile==ArrSV[i].GetLop()) {

file<<setw(20)<<ArrSV[i].GetMaSV()<<setw(20)<<ArrSV[i].GetTenSV()<<setw(20)<<ArrSV[i].GetLop()<<setw(20)<<ArrSV[i].GetDiemTB()<<endl;

} }

{

cout<<"\nKhong co lop!.";

system("pause");

} k=5;

} break;

file<<setw(20)<<ArrSV[i].GetMaSV()<<setw(20)<<ArrSV[i].GetTenSV()<<setw(20)<<ArrSV[i].GetLop()<<setw(20)<<ArrSV[i].GetDiemTB()<<endl;

} file.close();

system("cls");

cout<<"\nXuat file thanh cong!\n";

system("pause");

Trang 33

k=5;

} break;

} }

cout<<"\n\n\t\t\t\t\t 1.Them Sinh Vien.";

cout<<"\n\n\t\t\t\t\t 2.Xoa sinh vien theo MSV.";

cout<<"\n\n\t\t\t\t\t 3.Tim kiem sinh vien theo MSV.";

cout<<"\n\n\t\t\t\t\t 4.Hien thi sinh vien theo lop.";

cout<<"\n\n\t\t\t\t\t 5.Hiem thi tat ca sinh vien.";

cout<<"\n\n\t\t\t\t\t 6.Sua thong tin theo MaSV";

cout<<"\n\n\t\t\t\t\t 7.Xuat Danh sach sinh vien ra file.";

cout<<"\n\n\t\t\t\t\t 0.Thoat.";

cout<<"\n\n\t\t\t\t\t Moi ban nhap lua chon.";

cin>>x;

if(x==0) {

t=0;

} while(x>0&&x<8) {

switch (x) {

case 1:

Case1ThemSinhVien();

break;

case 2:

Trang 34

} x=0;t=-1;

} }

while(t!=0);

system("pause");

return 0;

}

8 Xây dựng lớp hình trụ với thuộc tính gồm bán kính ,

chiều cao hình trụ và các phương thức thiết lập Sau đó tính chu vi đáy hình trụ, diện tích xung quanh, diện tích toàn phần và thể tích của hình trụ đó

Trang 37

cout<<"\nNhap Gio :";cin>>hour;

cout<<"\nNhap phut: ";cin>>minute;

Trang 38

cout<<"\nDang 12H : "<<hour-12<<" : "<<minute<<" : "<<second<<" AM\n";

Trang 41

return 0;

}

11 Chương trình quản lý đơn giản dành cho 1 văn phòng du lịch chuyên bán vé gồm :

1 Vé Tàu Hỏa : Số hiệu, tên ga đi , tên ga đến , độ dài hành trình, thuộc tính mức giá trần

có giá trị là 1.000.000

Tính giá vé : Nếu 500 < độ dài <= 1200km thì giá vé = mức giá trần * 120%

Còn lại : giá vé = mức giá trần

2 Vé máy bay : Số hiệu máy bay, tên sân bay đi , tên sân bay đến , độ dài hành trình, thuộc tính mức giá trần có giá trị là 1.500.000

Tính giá vé : Nếu độ dài > 1200km thì giá vé = mức giá trần * 150%

Còn lại : giá vé = mức giá trần

Hãy xây dựng mảng, quản lý việc bán vé của cửa hàng

Trang 42

cout<<"\nNhap ID: ";cin>>ID;

cout<<"\nNhap Diem Di:";fflush(stdin);getline(cin,DiemDi); cout<<"\nNhap Diem Den:";fflush(stdin);getline(cin,DiemDen); cout<<"\nNhap Do Dai Hanh Trinh:";cin>>DoDaiHanhTrinh; }

Trang 44

cout<<"\nGia Tran "<<GiaTranMB;

cout<<"\ndo dai hanh trinh."<<DoDaiHanhTrinh; TinhGiaVeMayBay();

cout<<"\nGia Ve:"<<GiaMB;

}

void MENU()

{

VeTauHoa ArrTH[MAX];int indexTH=0;

VeMayBay ArrMB[MAX];int indexMB=0;

int x;

do

{

system("cls");

Trang 45

cout<<"\n\t\t\t\t\t=======VE========";

cout<<"\n\t\t\t\t\t1.Ve Tau Hoa.";

cout<<"\n\t\t\t\t\t2.Ve May Bay.";

cout<<"\n\t\t\t\t\t3.Danh sach ve tau hoa da ban.";

cout<<"\n\t\t\t\t\t4.Danh Sach ve may bay da ban.";

cout<<"\n\t\t\t\t\t5.Thoat!";

cout<<"\n\t\t\t\t\t Nhap Lua Chon!";

cin>>x;

switch(x) {

case 1:

{

int n,dem=0;

system("cls");

cout<<"\nNhap so luong ve.";cin>>n;

cout<<"\nNhap cac thong tin cua ve tau hoa."; for(int i=indexTH;i<n+indexTH;i++)

cout<<"\nDa Nhap Xong!";

system("pause");

} break;

case 2:

{

int n,dem=0;

system("cls");

cout<<"\nNhap so luong ve.";cin>>n;

cout<<"\nNhap cac thong tin cua ve may bay.";

Trang 46

for(int i=indexMB;i<n+indexMB;i++) {

cout<<"\nSTT:"<<i+1; ArrMB[i].NhapMB();

cout<<"\nThong Tin ve."; ArrMB[i].XuatMB();

dem++;

} indexMB+=dem;

cout<<"\nDa Nhap Xong!";

system("pause");

} break;

} break;

} break;

default:

Trang 47

break;

} }

Có 2 loại độc giả: Trẻ em , người lớn

-Độc giả trẻ em cần lưu them thông tin họ tên người đai diện Tiền làm thẻ là 20000 vnd

- Độc giả người lớn cần CMTND.Tiền làm thẻ tính theo công thức : số tháng *10000vnd

friend istream& operator >>(istream &,NgayThangNam &);

friend ostream& operator <<(ostream &,NgayThangNam );

Trang 48

os<<"\nHo Ten :"<<y.HoTen;

os<<"\nNgay Thang tao the: "<<y.NgayTaoThe;

os<<"\nSo Thang Hieu Luc: "<<y.ThangHieuLuc;

Trang 49

os<<"\nNguoi Dai Dien:"<<x.NguoiDaiDien;

os<<"\nTien Lam The:"<<20000;

private:

string CMND;

};

Trang 51

cout<<"\n2.Nhap vao doc gia nguoi lon.";

cout<<"\n3.Quay Lai!";

is>>x;

switch(x) {

is>>a.Arr1[i];

dem++;

} index1+=dem;

cout<<"\nDa Nhap Xong!";

system("pause");

} break;

is>>a.Arr2[i];

dem++;

} index2+=dem;

cout<<"\nDa Nhap Xong!";

system("pause");

}

Trang 52

break;

default:

break;

} }

os<<"\nDanh sach doc gia nguoi lon la:\n";

for(int i=0;i<index2;i++)

{

os<<"\nSTT:"<<i+1<<" la:"<<a.Arr2[i]; }

cout<<"\n1.Them Doc Gia.";

cout<<"\n2.Xuat Ra danh sach cac doc gia."; cout<<"\n3.Thoat!";

cin>>LuaChon;

switch(LuaChon) {

Trang 53

case 1:

{

cin>>ThuVien;

} break;

default:

break;

} }

+Tiền lãi =tiền gửi *lãi xuất *n (nếu n lớn hơn bằng kỳ hạn)

+Ngược lại lãi bằng 0

Yêu cầu:

Cài đặt các lớp thể hiện các loại sổ tiết kiệm trên để

+Quản lý thông tin sổ

+Tính số tiền lãi của sổ

Hãy cài đặt lớp CNganHang quản lý danh sách các sổ tiết kiệm thực hiện các chức năng sau:

+Nhập xuất danh sách sổ

+Tính tổng tiền lãi ngân hàng phải trả

/*Rin57TH4*/

#include<iostream>

Trang 54

friend istream& operator >>(istream &,NgayThangNam &);

friend ostream& operator <<(ostream &,NgayThangNam);

Trang 55

virtual void Xuat();

virtual unsigned int TinhTienLai()=0;

cout<<"\nNhap Tien gui:";cin>>TienGui_;

cout<<"\nNhap Ngay Lam So:";cin>>ngay_;

cout<<"\nNhap Lai xuat (%): ";cin>>LaiXuat_;

cout<<"\nNgay Lam So: "<<ngay_;

cout<<"\nLai Xuat: "<<LaiXuat_<<"%";

Trang 56

SoTietKiem::Nhap();

cout<<"\nNhap Ky Han :";cin>>KyHan_;

cout<<"\nNhap So thang can tinh Lai:";cin>>n_; }

unsigned int SoCoKyHan::TinhTienLai()

cout<<"\nKy Han :"<<KyHan_;

cout<<"\nTien Lai :"<<TinhTienLai();

Ngày đăng: 03/04/2022, 08:53

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

TÀI LIỆU LIÊN QUAN

w