Hỏi về bài tập lập trình hướng đối tượng với c++

Chào mọi người. Em có 1 bài tập mà chưa tìm được cách giải quyết. Mong được mọi người chỉ giáo.

a) Xây dựng lớp các nhân viên gồm các thuộc tính dữ liệu họ tên, hệ số lương, phụ cấp với các phương thức nhập, xuất và tính lương (lương = hệ số lương * 1310 + phụ cấp). Kế thừa lớp nhân viên xây dựng lớp cán bộ có thêm 1 thuộc tính hệ số chức vụ với các phương thức như lớp nhân viên biết lương cán bộ = (hệ số lương + hệ số chức vụ) * 1310 + phụ cấp.

b) Viết hàm main nhập vào một mảng n Nhân viên và cán bộ sau đó:

  • In ra danh sách vừa nhập.
  • In ra danh sách tối đa 10% nhân viên hoặc có thu nhập thấp nhất và có hệ số lương nhỏ hơn 3.0 để nhận trợ cấp khó khăn cuối năm.

Em hỏi về ý 2 của phần b. Em chưa có hướng đi.

#include<iostream>
#include<math.h>

using namespace std;

class NV{
	string ten;
	float hsl;
	int pc;
	public:
		NV(){
			ten=" ";
			hsl=0.0;
			pc=0;
		}
		
		virtual float lg(){
			return (hsl*1310+pc);
		}
		virtual void nhap();
		virtual void in();
		int min(int a[], int n){
			int min=a[i];
			for(i=1;i<n;i++){
				if(a[min].lg() > a[i].lg()){
					min=a[i];
				}
			}
			return min;
		}
};

void NV::nhap(){
	cout << "Nhap ten nv: "; cin >> ten;
	cout << "Nhap he so luong : "; cin >> hsl;
	cout << "Phu cap: "; cin >> pc;
}

void NV::in(){
	cout << ten << " " << hsl << " " << pc << " " << NV::lg() << endl;
}

int NV::vitri()
{
int x=0;
float min=ds[0].dtb();
for(int i=1;i<spt;i++)
if (max < ds[i].dtb())    x=i;
return (int)x+1;
}

class CB : public NV{
	float hscv;
	public:
		CB(){
			hscv=0.0;
		}
		
		float lg(){
			return (NV::lg() + hscv*1310);
		}
		void nhap();
		void in();
};

void CB::nhap(){
	NV::nhap();
	cout << "Nhap he so chuc vu: "; cin >> hscv;
}

void CB::in(){
	NV::in();
	cout << "he so chuc vu: "; cout << hscv << endl;
}

int main(){
	NV a[100];
	CB b[100];
	int n,i;
	cout << "Nhap vao so nhan vien: ";
	cin >> n;
	for(i=0;i<n;i++){
			a[i].nhap(); 
			b[i].nhap(); 
	}
	
	cout << "Danh sach vua nhap: \n";
	for(i=0;i<n;i++){
		a[i].in();
		b[i].in();	
	}
	
	int t=NV::min(a,n);
	
}

bạn viết giúp mình 1 đoạn code nhỏ, sắp xếp mảng số nguyên và in ra 10% số phần tử nhỏ nhất
mình sẽ giúp bạn sửa đoạn code đó lại thành cái mà bạn muốn

2 Likes

Trước tiên bạn nên tìm những người nào có hệ số lương dưới 3.0, sau đó sắp xếp theo lương tăng dần và xuất ra 10%.
Hoặc có thể làm ngược lại, sắp xếp lương tăng dần và tìm những ai có hệ số lương dưới 3.0
Đó là gợi ý của mình, bạn có thể tìm cách giải quyết tốt hơn.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?