为了账号安全,请及时绑定邮箱和手机立即绑定

麻烦帮忙看看以下关于C++的程序 ,求大神指点一下~

麻烦帮忙看看以下关于C++的程序 ,求大神指点一下~

慕村225694 2022-05-13 13:11:37
void Update()/*按工号修改一条记录*/{if(emp.empty()){cerr<<"\n\t\t当前没有记录,请添加记录!\n"; return ;}charch[2];Employee empl;bool mark=true;string number;cout<<"\n\t\t\t请输入要修改的工号: ";cin>>number;for(Iterator=emp.begin();Iterator !=emp.end();Iterator ++){if((*Iterator).Get_worknumber()==number){ cout<<"Doyou want to update ? (Y/N)";cin>>ch;if(ch[0]=='y'||ch[0]=='Y'){ empl.set_information();(*Iterator)=empl;mark=false;}}}if(mark) cout<<"没有相关信息!";Sort();cout<<"信息修改成功!";}
查看完整描述

1 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

#include<iostream> //引用输入输出流
#include<vector> //引用标准向量运算库
#include<algorithm> //引用标准算法库
using namespace std;

//定义CSet类-----------------------------------------------------------------------------
class CSet;
ostream& operator <<(ostream& os,CSet& Set);
class CSet
{
private:
vector<int> Set;
public:
CSet(){}
CSet(int *nset,int n);
CSet(CSet& nSet){Set=nSet.Set;}
~CSet(){}
CSet Union(CSet sSet);
CSet Join(CSet sSet);
friend ostream& operator <<(ostream& os,CSet& Set);
};
//CSet类构造函数,用长度为n的int数组nset来初始化CSet类,并对其元素进行排序
CSet::CSet(int *nset, int n)
{
Set.resize(n); //重设元素个数
for(int i=0;i<n;i++)
Set[i]=nset[i]; //复制元素
sort(Set.begin(),Set.end()); //元素重排
}
//求两个CSet类的并集,即相同的元素只出现一次
CSet CSet::Union(CSet tSet)
{
CSet Union(*this);
vector<int>::iterator iter=Union.Set.begin();
for(unsigned i=0;i<tSet.Set.size();)
{
if(iter==Union.Set.end())
{
Union.Set.push_back(tSet.Set[i]);
iter=Union.Set.end();
i++;continue;
}
if(tSet.Set[i]>*iter) iter++;
else if(tSet.Set[i]==*iter) {iter++;i++;}
else {iter=Union.Set.insert(iter,tSet.Set[i]);i++;}
}
return Union;
}
//求两个CSet类的交集,即只出现相同的元素
CSet CSet::Join(CSet tSet)
{
CSet Join;
for(unsigned i=0,j=0;i<Set.size()&&j<tSet.Set.size();)
{
if(Set[i]>tSet.Set[j]) j++;
else if(Set[i]<tSet.Set[j]) i++;
else
{
Join.Set.push_back(Set[i]);
i++;j++;
}
}
return Join;
}
//输出CSet的元素,支持流操作的输出
ostream& operator <<(ostream& os,CSet& Set)
{
os<<"{ "; //前面加括号
for(unsigned i=0;i<Set.Set.size();i++)
{
if(i) os<<", ";
os<<Set.Set[i]; //输出每个元素,用逗号隔开
}
os<<"}"<<endl; //后面加括号回车
return os;
}
//--------------------------------------------------------------------------------------
void main()
{
int X[]={1,3,5,7,8,9},Y[]={2,4,6,7,8,10,11};
//CSet就是集合
CSet A(X,6),B(Y,7); //此时A={1,3,5,7,8,9},B={2,4,6,7,8,10,11}
CSet C,D(C); //此时D=C=空集
C=A.Union(B); //C={x|x属于A或B},即A={1,2,3,4,5,6,7,8,9,10,11}
D=A.Join(B); //C={x|x属于A并且属于B},即B={7,8}
cout<<A<<B<<C<<D;
system("pause");
}




查看完整回答
反对 回复 2022-05-16
  • 1 回答
  • 0 关注
  • 92 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号