PDA

View Full Version : ارور در تابع سورت حقوق کارمندان شرکت



alirah84
یک شنبه 10 دی 1391, 12:16 عصر
سلام
این برنامه 50 تا حقوق کارمند قراردادی و 50 حقوق کارمند ساعتی رو میگیره و ابتدا نشون میده و بعد از اون در تابع سورت حقوق های همه کارمند ها را مرتب می کنه و به ترتیب حقوق نشون میده .ولی من نمیدونم اشکال در تابع سورت کجاست که بعد از مرتب سازی، حقوق ها رو عدد های چرت و چرت نشون میده. ولی در توابع قبلی حقوق رو درست محاسبه میکرد و نشون میده .

کلاسی برای کارمندان شامل نام و نام خانوادگی و شماره کارمندی تعریف کنید ،سپس کلاس مشتق زیر را تعریف کنید:
1.کلاس کارمندان قراردادی شامل حقوق پایه ،مالیات تعداد ساعات اضافه کاری ،نرخ هر ساعت
2.کلاس کارمندان ساعتی شامل تعداد ساعات کار ،نرخ هر ساعت،ساعت های غیبت تعریف کنید
50 کارمند قرار دادی و 50 کارمند ساعتی را بخوانید .حقوق آنها را محاسبه کنید و مجموعه نام همه کارمندان و حقوق کارمندی را به ترتیب نام به ذکر حقوق و نوع استخدام نمایش دهید.

اینم کد منه:



#include <conio.h>
#include <iostream>
using namespace std;
const int n=1;
const int m=1;
const int a=m+n;
class karmandan
{
protected:
char name[30];
int id_number;

public:
void input_Information();
};
void karmandan::input_Information()
{
cout<<"Name Va Name Khanevadegi Khod Ra Vared Konid:";
cin.get(name,20);
cout<<"Shomare Karbari Khod Ra Vared Konid:";
cin>>id_number;
cin.get();
}
class gharardadi:public karmandan
{
protected:
char type[30];
float paye_gharardadi,nerkh_har_saat_gharardadi;
int malyat_gharardadi,saat_ezafe_kari_gharardadi;
public:
float total_salary;
void input_Gharardadi();
void calc_Gharardadi();
};
void gharardadi::input_Gharardadi()
{
char type[]="Contractor Wage";
cout<<"Hoghoogh Paye Gharardadi Khod Ra Vared Konid:";
cin>>paye_gharardadi;
cin.get();
cout<<"Nerkhe Har Saat Gharardadi Ra Vared Konid:";
cin>>nerkh_har_saat_gharardadi;
cin.get();
cout<<"Nerkhe Malyat Gharardadi Khod Ra Vared:";
cin>>malyat_gharardadi;
cin.get();
cout<<"Saat Ezafe Kari Gharardadi Khod Ra Vared Konid:";
cin>>saat_ezafe_kari_gharardadi;
cin.get();
}
void gharardadi::calc_Gharardadi()
{

total_salary=(paye_gharardadi + (nerkh_har_saat_gharardadi*saat_ezafe_kari_gharard adi))- ((paye_gharardadi + (nerkh_har_saat_gharardadi*saat_ezafe_kari_gharard adi))*malyat_gharardadi/100);
cout<<total_salary<<endl;
}
class saati:public gharardadi
{
char type[30];
int tetad_saat_kar,saathaye_gheybat;
float nerkh_har_saat,total_salary;
public:
void input_Saati();
void calc_Saati();
void sort(saati obj2[],int n);
};
void saati::input_Saati()
{
char type[]="Hourly wage";
cout<<"Tedad Saat Kar Khod Ra Vared Konid:";
cin>>tetad_saat_kar;
cin.get();
cout<<"Saathaye Gheybat Khod Ra Vared Konid:";
cin>>saathaye_gheybat;
cin.get();
cout<<"Nerkhe Har Saat Ra Vared Konid:";
cin>>nerkh_har_saat;
cin.get();
}
void saati::calc_Saati()
{
total_salary=(tetad_saat_kar*nerkh_har_saat)-(saathaye_gheybat*nerkh_har_saat);
cout<<total_salary<<endl;
}
void saati::sort(saati obj2[] ,int a)
{
saati temp;
for (int j=0;j<a;j++)
{
for (int i=0;i<a-1;i++)
{
if (obj2[i].total_salary>obj2[i+1].total_salary)
{
temp=obj2[i];
obj2[i]=obj2[i+1];
obj2[i+1]=temp;
}
}
}
for (int i=0;i<a;i++)
{
cout<<obj2[i].type[20]<<" "<<obj2[i].name[20]<<" "<<"Total Wage:"<<obj2[i].total_salary<<endl;
}
}
int main()
{
saati myobj;
saati obj2[a];
for (int i=0;i<n;i++)
{
obj2[i].input_Information();
obj2[i].input_Gharardadi();
obj2[i].calc_Gharardadi();
}
for (int i=m;i<a;i++)
{
obj2[i].input_Information();
obj2[i].input_Saati();
obj2[i].calc_Saati();
}
myobj.sort(obj2,a);
cin.get();
cin.get();
}

fati63
یک شنبه 10 دی 1391, 14:27 عصر
برای نوشتن کدش از چه کامپایلری استفاده کردی؟من با borland اجراش کردم 15 خطا داشت بعضی از خطا ها رو رفع کردم ولی بازم 4 خطا مونده!!!

alirah84
دوشنبه 11 دی 1391, 00:50 صبح
تقریبا کدم درست شده .فقط یه مشکل داره و اونم اینه که باید نوع کارمند و اینکه قراردادی هست یا ساعتی را مشخص کرد .توی کلاس قراردادی char type[20 را تعریف کردم بعدش توی تابع input نوشتم "":"""type[]="Contractor Employee .وقتی اینو مینویسم یه ارور میده میگه expected an expression .میشه بگید مشکل توی اینجا از چیه؟؟
ممنون