首页 > 其他分享 >code

code

时间:2024-05-30 09:47:44浏览次数:12  
标签:code const int Thief public Police class

//#pragma execution_charactor_set("utf-8")
#include<iostream>
#include <string>
#include <vector>
using namespace std;

class Police;
class Thief;
class PoliceStation;
class Sheriff;
class NormalPolice;
class AuxiliaryPolice;
class BigThief;
class SmallThief;
class Police
{
public:
~Police() = default;
virtual void Catch(Thief& athief) = 0;
virtual string id() const = 0;
Police() { bonus = catchingnum = 0; PS = NULL; }
Police(string N) :name(N), bonus(0), catchingnum(0), PS(NULL) {}
void addPS(PoliceStation* const aPS) { if (aPS != NULL)PS = aPS; }
int getbonus() const { return bonus; }
string getname()const { return name; }
protected:
int bonus;
int catchingnum;
string name;
public:PoliceStation* PS;//所属警察局
};
class PoliceStation {
public:
int getPrestige() const { return prestige; };
int getNumber() const { return P.size(); };
void addPrestige(int n) { prestige += n; }
void addPolice(Police& aP) { P.push_back(&aP); aP.addPS(this); }
PoliceStation() { prestige = 0; }
PoliceStation(int pp) :prestige(pp) {}
PoliceStation(vector <Police*> PP, int pp) :P(PP), prestige(pp) {}
~PoliceStation()=default;

void show()const;

private:
int prestige;
vector<Police*> P;
};
class Thief {
public:
virtual int becaught() const = 0;

Thief() :dirtymoney(0) {};
Thief(int D) :dirtymoney(D) {}
~Thief() = default;
protected:
int dirtymoney;
};
class Sheriff :public Police//警长
{
public:
virtual void Catch(Thief& athief)
{
PS->addPrestige(athief.becaught());
catchingnum++;
bonus += 100;
}
virtual string id() const
{
return "警长";
}
~Sheriff() = default;
Sheriff() = default;
Sheriff(string N) :Police(N) {}
};
class NormalPolice :public Police//普通警察
{
public:
virtual void Catch(Thief& athief)
{
PS->addPrestige(athief.becaught());
catchingnum++;
bonus += 200 * catchingnum;
}
virtual string id()const
{
return "警员";
}
~NormalPolice() = default;
NormalPolice() = default;
NormalPolice(string N) :Police(N) {}
};
class AuxiliaryPolice :public Police//协警
{
public:
virtual void Catch(Thief& athief)
{
PS->addPrestige(athief.becaught());
catchingnum++;
bonus += 300;
}
virtual string id()const
{
return "辅警";
}
~AuxiliaryPolice() = default;
AuxiliaryPolice() = default;
AuxiliaryPolice(string N) :Police(N) {}
};
class BigThief :public Thief
{
public:
virtual int becaught() const
{
return 5 + dirtymoney / 10;
}
BigThief() = default;
BigThief(int D) :Thief(D) {}
};
class SmallThief :public Thief
{
public:
virtual int becaught() const
{
return 1;
}
SmallThief() = default;
SmallThief(int D) :Thief(D) {}
};
void PoliceStation::show() const
{
cout << "----INFORMATIONS-----" << endl;
cout << "警察局声望:" << prestige << endl;
for (const auto &p : P)
{
cout << p->id() << p->getname() << "的奖金:" << p->getbonus() << endl;
}
};
using SP = Sheriff;
using AP = AuxiliaryPolice;
using NP = NormalPolice;

int main()
{
PoliceStation station(100);
Police &ZS = *new SP("张三"), &LS = *new NP("李四"), &WU = *new NP("王五"), &ZL = *new AP("赵六");
station.addPolice(ZS);station.addPolice(LS);station.addPolice(WU);station.addPolice(ZL);
Thief &aBF = *new BigThief(20), &aSF = *new SmallThief;

ZS.Catch(aBF); ZS.Catch(aSF);
LS.Catch(aSF); LS.Catch(aSF);
WU.Catch(aSF);
ZL.Catch(aSF);

station.show();

delete &ZS, &LS, &WU, ZL;
return 0;
}

标签:code,const,int,Thief,public,Police,class
From: https://www.cnblogs.com/gongkai/p/18221686

相关文章

  • vscode+gdb调试linux
    编译内核 makemeauconfig 后:Kernelhacking--->Compile-timechecksandcompileroptions--->[*]Compilethekernelwithdebuginfo[*]ProvideGDBscriptsforkerneldebugging [*]KerneldebuggingProcessortypeandfeature......
  • vscode快捷键大全
    查找:Ctrl+F替换:Ctrl+H选定多个相同的单词:Ctrl+D 取消选择:Ctrl+U多行光标-Ctrl+Alt+方向键(上下左右)删除当前行-Ctrl+Shift+K快速复杂一行:shift+alt+下箭头(上箭头)上下移动代码行:Alt+Up,Alt+Down单行注释:Ctrl+/块注释:Alt+Shift+A打开关闭侧边......
  • vs Code 设置不自动打开项目
    在VisualStudioCode中,默认情况下,如果你上次关闭时有打开项目,下次启动VisualStudioCode时会自动打开上次关闭的项目。如果你想要禁用这个功能,可以按照以下步骤操作:打开VisualStudioCode。点击左下角的设置图标(齿轮图标),或者使用快捷键 Ctrl+, 打开用户设置。在用户......
  • [LeetCode] 1365. How Many Numbers Are Smaller Than the Current Number 有多少小于
    Giventhearray nums,foreach nums[i] findouthowmanynumbersinthearrayaresmallerthanit.Thatis,foreach nums[i] youhavetocountthenumberofvalid j's suchthat j!=i and nums[j]<nums[i].Returntheanswerinanarray.Example1......
  • LeetCode 第8题:字符串转换整数 (atoi)
    本文我们来看看LeetCode第8题.字符串转换整数(atoi)的解析过程。文章目录一、引言题目描述示例二、解题思路1.丢弃无用的前导空格2.处理正负号3.读入数字4.处理整数溢出5.组合起来思路流程图三、Java代码实现代码解析1.移除前导空格2.处理正负号3.转换数......
  • vscode技巧笔记3-调试编译
    1.概述vscode作为一个编辑器,同样也是开发工具,本文介绍运行调试环境2.通用配置vscode支持多种语言,这里介绍下通用配置,c和python(我自己用的)作为章节介绍2.1.运行相关界面2.1.1.语言解释器(languagemode)和解释器vscode会自动识别文件的后缀名然后进入对应的语言模式,如果是......
  • 【leetcode——栈的题目】——1003. 检查替换后的词是否有效python
    题目:给你一个字符串 s ,请你判断它是否 有效 。字符串 s 有效 需要满足:假设开始有一个空字符串 t="" ,你可以执行 任意次 下述操作将 t 转换为 s :将字符串 "abc" 插入到 t 中的任意位置。形式上,t 变为 tleft+"abc"+tright,其中 t==tleft+trigh......
  • 【leetcode每日一题】——2903. 找出满足差值条件的下标 I——python
    给你一个下标从 0 开始、长度为 n 的整数数组 nums ,以及整数 indexDifference 和整数 valueDifference 。你的任务是从范围 [0,n-1] 内找出  2 个满足下述所有条件的下标 i 和 j :abs(i-j)>=indexDifference 且abs(nums[i]-nums[j])>=valueDi......
  • VSCode配置C++环境
    目录一.环境准备二.编写代码三.直接利用gcc以及gdb编译调试四.配置tasks.json和launch.json五.其他这篇文章讨论一下VSCode配置C++的方法,重点要讨论的是tasks.json和launch.json这两个配置文件,所以很多基础内容会直接略过。一.环境准备1.安装MinGW-w64。为啥要装Min......
  • Educational Codeforces Round 151 (Rated for Div. 2) E
    链接凌晨两点半突然醒了。。然后睡不着了。。躺了一个半小时决定起来啃题解。花了一个小时弄懂了。但是要怎么自己想到还没想好。这个属于计数dp的范围了,我不是很熟悉了。题目大意:有n个盒子,里面装了一些球,球的数量大于等于1且小于n。可以进行一种操作,每次操作可以把一个球移......