牛客网 |复数集合( 北邮往年复试题)

题目来源 牛客网北邮往年考题

在这里插入图片描述
输入

3
Pop
Insert
1+i2
Pop

输出

empty
SIZE = 1
1+i2
SIZE = 0

#include<iostream>
#include<algorithm>
#include<stdlib.h>
#include<math.h>
#include <vector>
using namespace std;

class complexNum{
	public:
		int a,b;
		complexNum():a(0),b(0){}
		complexNum(int aa,int bb):a(aa),b(bb){}
		void setComplex(int aa,int bb){
			a=aa,b=bb;
		}
		double Modulus(){
			return sqrt(a*a+b*b);
		}
		void print(){
			if(a!=0) cout<<a;
			if(b>0) cout<<"+i"<<b;
			if(b<0) cout<<"-i"<<abs(b);
			cout<<endl;
		}
};
vector<complexNum> obj;
bool cmp(complexNum a,complexNum b){
	return a.Modulus()<b.Modulus();
}
void myPop(){
	if(!obj.size()){
		cout<<"empty"<<endl;
	}
	else{
		sort(obj.begin(),obj.end(),cmp);
//		vector<complexNum>::iterator it=obj.end();
		complexNum t=obj.back();
		t.print();
		obj.erase(obj.end());
		cout<<"SIZE = "<<obj.size()<<endl;
	}
}
void insert(complexNum t){
	obj.push_back(t);
	cout<<"SIZE = "<<obj.size()<<endl;
}
int main()
{
	 int n;
	 string opt;
	 complexNum temp;
	 cin>>n;
	 getchar();
	 while(n--){
	 	getline(cin,opt);
	 	if(!opt.compare("Pop")){
	 		myPop();
	 	}
	 	else if(opt.find("Insert ")==0){
			 opt=opt.substr(7);
			 int a,b;
			 size_t pos=opt.find("+i");
			 a=atoi(opt.substr(0,pos).c_str());
			 b=atoi(opt.substr(pos+2).c_str());
			 temp.setComplex(a,b);
			 insert(temp);
		}
	 }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值