6-4 2018Final静态成员(黑名单)

怡山小学生物组是公认的熊孩子天堂,他们每天都在做各种尝试,如: 强迫蚕宝宝吃各种不同的菜叶,把小狗和小白鼠关进一个笼子里,重复输入流浪狗记录等等。忍无可忍的黄老师决定往成员信息里添加一项黑名单,限制黑名单中同学的单独活动,以保证生物组的日常管理秩序。

黑名单的增加来自两个时刻,一个是在增加新成员时,根据班主任的建议,直接将同学拉入黑名单,另一个是根据同学在组内的行为,由黄老师将其拉入。

黑名单的减小也有两个时刻,一个是黄老师将某位同学拉出,还有一个是黑名单已经满了,且需要拉入新的人员,此时,在黑名单中时间最长的成员,自动地被拉出黑名单。

输入:

输入时,先输入当前任务类型:

任务类型为1时,将加入新的学生记录;此时将输入学生的学号(假定新加入的学生肯定没有加入过),如果该学生应加入黑名单,则接着会多输入一个"999";

任务类型为2时,将某已有学生加入黑名单;此时将直接输入学生学号(假定不会将黑名单中已有的学生,再次加入黑名单);

任务类型为3时,将某些学生移出黑名单;此时将直接输入学生学号(假定这个学号肯定在黑名单中)。

任务类型为0时,结束输入。

输出:

在执行类型2和3任务时,将输出当前的黑名单中的学生学号,用空格间隔,输出顺序为学生被加入黑名单的顺序,先加入者在前。如果黑名单为空,输出"NULL BLACKLIST!".
输入样例:

1 102
1 345 999
1 123
2 102
1 333
2 333
2 123
3 102
3 123
3 333
0

输出样例:

345 102
345 102 333
102 333 123
333 123
333
NULL BLACKLIST!

#include <iostream> 
using namespace std;
const int N=3;
class Group{
	private:
		int num;
		static int blackList[N];
		static int size;
	public:
		Group();
		Group(int num, bool bSign);
		static void addToList(int num);
		static void removeFromList(int num);
		static void displayList();
};
int Group::size=0;//***********静态变量,一定要有Group::,否则会出错Id returned 1 exit status 
int Group::blackList[N]={0};
void Group::displayList(){
	if(size==0) cout<<"NULL BLACKLIST!"<<endl;
		else{
			for(int i=0;i<size-1;i++) cout<<blackList[i]<<' ';
			cout<<blackList[size-1]<<endl;
		}
}
void Group::removeFromList(int num){
	int i=0;
	for(;i<N;i++){
		if(num==blackList[i]){
			for(int j=i;j<size-1;j++){
				blackList[j]=blackList[j+1];
			}
			blackList[--size]=0;
			break;
		}
	}
}
Group::Group(){
}
Group::Group(int num,bool bSign){
	this->num=num;
	if(bSign){
		addToList(num);
	}
}
void Group::addToList(int num){
	if(size==N){
		removeFromList(blackList[0]);
	}
	blackList[size++]=num;
}

int main(){
	int i, j, k, num, task, count=0;
	Group g[100];
	cin>>task;
	while(task!=0){
		switch(task){
			case 1: cin>>num>>k; 
					  if(k==999) {
					  	g[count++]=Group(num, true);
					  	cin>>task;
					  }else{
					     	g[count++]=Group(num, false);
					     	task = k;
						 }
					break;
			case 2: cin>>num;
					  Group::addToList(num);
					  Group::displayList();
					  cin>>task;
					  break;
			case 3: cin>>num;
					  Group::removeFromList(num);
					  Group::displayList();
					  cin>>task;
					  break;
		}
	}
	return 0;
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值