c++的问题急急急!!!
题目描述有n个人(每个人有一个唯一的编号,用1~n之间的整数表示)在一个水龙头前排除准备接水,现在第x个人有特殊情况离开了队伍,求第x个人离开队伍后的排队情况。输入第一行...
题目描述有n个人(每个人有一个唯一的编号,用1~n之间的整数表示)在一个水龙头前排除准备接水,现在第x个人有特殊情况离开了队伍,求第x个人离开队伍后的排队情况。输入第一行1个正整数n,表示有n个人,2<n<=100。第二行包含n个正整数,之间用一个空格隔开,表示排在队伍中的第1~第n个人的编号。第三行包含1个正整数x,表示第x个人离开了队伍,1<=x<=n。输出一行包含n个正整数,之间用一个空格隔开,表示第x个人离开队伍后的排队情况。样例输入77 2 3 4 5 6 13样例输出7 2 4 5 6 1
展开
3个回答
展开全部
//兰州烧饼,不解释
//employee.h
class employee
{
protected:
char name[20]; //姓名
int individualEmpNo; //个人编号
int grade; //级别
float accumPay; //月薪总额
static int employeeNo; //本公司职员编号目前最大值
public:
employee(); //构造函数
~employee(); //析构函数
virtual void pay()=0; //计算月薪函数(纯虚函数)
virtual void promote(int increment=0); //升级函数(虚函数)
void SetName(char *); //设置姓名函数
char * GetName(); //提取姓名函数
int GetindividualEmpNo(); //提取编号函数
int Getgrade(); //提取级别函数
float GetaccumPay(); //提取月薪函数
};
class technician:public employee //兼职技术人员类
{
private:
float hourlyRate; //每小时酬金
int workHours; //当月工作时数
public:
technician(); //构造函数
void SetworkHours(int wh); //设置工作时数函数
void pay(); //计算月薪函数
void promote(int); //升级函数
};
class salesman:virtual public employee //兼职推销员类
{
protected:
float CommRate; //按销售额提取酬金的百分比
float sales; //当月销售额
public:
salesman(); //构造函数
void Setsales(float sl); //设置销售额函数
void pay(); //计算月薪函数
void promote(int); //升级函数
};
class manager:virtual public employee //经理类
{
protected:
float monthlyPay; //固定月薪数
public:
manager(); //构造函数
void pay(); //计算月薪函数
void promote(int); //升级函数
};
class salesmanager:public manager,public salesman //销售经理类
{
public:
salesmanager(); //构造函数
void pay(); //计算月薪函数
void promote(int); //升级函数
};
//employee.cpp
#include
#include
#include"employee.h"
using namespace std;
int employee::employeeNo=1000; //员工编号基数为1000
employee::employee()
{ individualEmpNo=employeeNo++; //新输入的员工编号为目前最大编号加1
grade=1; //级别初值为1
accumPay=0.0;} //月薪总额初值为0
employee::~employee()
{}
void employee::promote(int increment)
{ grade+=increment; } //升级,提升的级数由increment指定
void employee::SetName(char* names)
{ strcpy(name,names); } //设置姓名
char* employee::GetName()
{ return name;} //提取成员姓名
int employee::GetindividualEmpNo()
{ return individualEmpNo;} //提取成员编号
int employee::Getgrade()
{ return grade;} //提取成员级别
float employee::GetaccumPay()
{ return accumPay;} //提取月薪
technician::technician()
{ hourlyRate=100;} //每小时酬金100元
void technician::SetworkHours(int wh)
{ workHours=wh;} //设置工作时间
void technician::pay()
{ accumPay=hourlyRate*workHours;} //计算月薪,按小时计酬
void technician::promote(int)
{ employee::promote(2); } //调用基类升级函数,升2级
salesman::salesman()
{ CommRate=0.04;} //销售提成比例4%
void salesman::Setsales(float sl)
{ sales=sl;} //设置销售额
void salesman::pay()
{ accumPay=sales*CommRate;} //月薪=销售提成
void salesman::promote(int)
{ employee::promote(0); } //调用基类升级函数,升0级
manager::manager()
{ monthlyPay=8000;} //固定月薪8000元
void manager::pay()
{ accumPay=monthlyPay;} //月薪总额即固定月薪数
void manager::promote(int )
{ employee::promote(3);} //调用基类升级函数,升3级
salesmanager::salesmanager()
{ monthlyPay=5000;
CommRate=0.005;}
void salesmanager::pay()
{ accumPay=monthlyPay+CommRate*sales; } //月薪=固定月薪+销售提成
void salesmanager::promote(int)
{ employee::promote(2);} //调用基类升级函数,升2级
//main.cpp
#include
#include"employee.h"
#include
using namespace std;
int main()
{
manager m1;
technician t1;
salesmanager sm1;
salesman s1;
char namestr[20]; //输入雇员姓名时首先临时存放在namestr中
vector vchar; //声明用于保存成员对象的向量容器
vchar.push_back(&m1);
vchar.push_back(&t1);
vchar.push_back(&sm1);
vchar.push_back(&s1);
int i;
for(i=0;i<4;i++)
{
cout<<"请输下一个雇员的姓名:";
cin>>namestr;
vchar[i]->SetName(namestr); //设置每个成员姓名
vchar[i]->promote(); //升级
}
cout<<"请输入兼职技术人员"<<t1.GetName()<<"本月的工作时数:";
int ww;
cin>>ww;
t1.SetworkHours(ww); //设置工作时间
cout<<"请输入销售经理"<<sm1.GetName()<<"所管辖部门本月的销售总额:";
float sl;
cin>>sl;
sm1.Setsales(sl); //设置销售总额
cout<<"请输入推销员"<<s1.GetName()<<"本月的销售额:";
cin>>sl;
s1.Setsales(sl); //设置销售额
for(i=0;i<4;i++)
{
vchar[i]->pay(); //计算月薪
cout<GetName()<<"编号"<GetindividualEmpNo()<<"级别为"
<Getgrade()<<"级,本月工资"<GetaccumPay()<<endl;
}
}
//employee.h
class employee
{
protected:
char name[20]; //姓名
int individualEmpNo; //个人编号
int grade; //级别
float accumPay; //月薪总额
static int employeeNo; //本公司职员编号目前最大值
public:
employee(); //构造函数
~employee(); //析构函数
virtual void pay()=0; //计算月薪函数(纯虚函数)
virtual void promote(int increment=0); //升级函数(虚函数)
void SetName(char *); //设置姓名函数
char * GetName(); //提取姓名函数
int GetindividualEmpNo(); //提取编号函数
int Getgrade(); //提取级别函数
float GetaccumPay(); //提取月薪函数
};
class technician:public employee //兼职技术人员类
{
private:
float hourlyRate; //每小时酬金
int workHours; //当月工作时数
public:
technician(); //构造函数
void SetworkHours(int wh); //设置工作时数函数
void pay(); //计算月薪函数
void promote(int); //升级函数
};
class salesman:virtual public employee //兼职推销员类
{
protected:
float CommRate; //按销售额提取酬金的百分比
float sales; //当月销售额
public:
salesman(); //构造函数
void Setsales(float sl); //设置销售额函数
void pay(); //计算月薪函数
void promote(int); //升级函数
};
class manager:virtual public employee //经理类
{
protected:
float monthlyPay; //固定月薪数
public:
manager(); //构造函数
void pay(); //计算月薪函数
void promote(int); //升级函数
};
class salesmanager:public manager,public salesman //销售经理类
{
public:
salesmanager(); //构造函数
void pay(); //计算月薪函数
void promote(int); //升级函数
};
//employee.cpp
#include
#include
#include"employee.h"
using namespace std;
int employee::employeeNo=1000; //员工编号基数为1000
employee::employee()
{ individualEmpNo=employeeNo++; //新输入的员工编号为目前最大编号加1
grade=1; //级别初值为1
accumPay=0.0;} //月薪总额初值为0
employee::~employee()
{}
void employee::promote(int increment)
{ grade+=increment; } //升级,提升的级数由increment指定
void employee::SetName(char* names)
{ strcpy(name,names); } //设置姓名
char* employee::GetName()
{ return name;} //提取成员姓名
int employee::GetindividualEmpNo()
{ return individualEmpNo;} //提取成员编号
int employee::Getgrade()
{ return grade;} //提取成员级别
float employee::GetaccumPay()
{ return accumPay;} //提取月薪
technician::technician()
{ hourlyRate=100;} //每小时酬金100元
void technician::SetworkHours(int wh)
{ workHours=wh;} //设置工作时间
void technician::pay()
{ accumPay=hourlyRate*workHours;} //计算月薪,按小时计酬
void technician::promote(int)
{ employee::promote(2); } //调用基类升级函数,升2级
salesman::salesman()
{ CommRate=0.04;} //销售提成比例4%
void salesman::Setsales(float sl)
{ sales=sl;} //设置销售额
void salesman::pay()
{ accumPay=sales*CommRate;} //月薪=销售提成
void salesman::promote(int)
{ employee::promote(0); } //调用基类升级函数,升0级
manager::manager()
{ monthlyPay=8000;} //固定月薪8000元
void manager::pay()
{ accumPay=monthlyPay;} //月薪总额即固定月薪数
void manager::promote(int )
{ employee::promote(3);} //调用基类升级函数,升3级
salesmanager::salesmanager()
{ monthlyPay=5000;
CommRate=0.005;}
void salesmanager::pay()
{ accumPay=monthlyPay+CommRate*sales; } //月薪=固定月薪+销售提成
void salesmanager::promote(int)
{ employee::promote(2);} //调用基类升级函数,升2级
//main.cpp
#include
#include"employee.h"
#include
using namespace std;
int main()
{
manager m1;
technician t1;
salesmanager sm1;
salesman s1;
char namestr[20]; //输入雇员姓名时首先临时存放在namestr中
vector vchar; //声明用于保存成员对象的向量容器
vchar.push_back(&m1);
vchar.push_back(&t1);
vchar.push_back(&sm1);
vchar.push_back(&s1);
int i;
for(i=0;i<4;i++)
{
cout<<"请输下一个雇员的姓名:";
cin>>namestr;
vchar[i]->SetName(namestr); //设置每个成员姓名
vchar[i]->promote(); //升级
}
cout<<"请输入兼职技术人员"<<t1.GetName()<<"本月的工作时数:";
int ww;
cin>>ww;
t1.SetworkHours(ww); //设置工作时间
cout<<"请输入销售经理"<<sm1.GetName()<<"所管辖部门本月的销售总额:";
float sl;
cin>>sl;
sm1.Setsales(sl); //设置销售总额
cout<<"请输入推销员"<<s1.GetName()<<"本月的销售额:";
cin>>sl;
s1.Setsales(sl); //设置销售额
for(i=0;i<4;i++)
{
vchar[i]->pay(); //计算月薪
cout<GetName()<<"编号"<GetindividualEmpNo()<<"级别为"
<Getgrade()<<"级,本月工资"<GetaccumPay()<<endl;
}
}
展开全部
思路:从第x位开始将后面的元素往前移一位达到删除效果。
代码如下:(前面include自行补充)
int main(){
int i,n,a[101],x;
cin>>n;
for(i=1;n>=i;i++) cin>>a[i];
cin>>x;
for(i=x;i<n;i++) a[i]=a[i+1];//删除元素并移动后面的元素
for(i=1;i<=n;i++) cout<<a[i]<<' ';
return 0;
}
纯手打,望采纳,谢谢。
代码如下:(前面include自行补充)
int main(){
int i,n,a[101],x;
cin>>n;
for(i=1;n>=i;i++) cin>>a[i];
cin>>x;
for(i=x;i<n;i++) a[i]=a[i+1];//删除元素并移动后面的元素
for(i=1;i<=n;i++) cout<<a[i]<<' ';
return 0;
}
纯手打,望采纳,谢谢。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询