pta的一道题

武器类的设计

请设计一个枪支类Gun, 每把枪都有名称,重量,射程,弹匣大小,已装子弹数等属性,有扣动扳机、装子弹和打印枪支信息的行为,每扣动一次扳机,射出一发子弹,装子弹时,可以一次装入多发子弹但不能超过弹匣大小,打印会输出枪的所有属性信息。根据给定的main函数,完成类的设计。注意:程序代码要包含下面的main函数,不得改动。

int main(){
    Gun g1;
    g1.printInfo();
    string name;
    int weight,range,capacity,bullet;
    getline(cin,name);
    cin>>weight>>range>>capacity>>bullet;
    Gun g2(name,weight,range,capacity,bullet);
    int num;
    cin>>num;
    if(g2.getBullet()+num<=g2.getCapacity())
       g2.load(num);
    g2.pull_trigger();
    g2.printInfo();
    return 0;
}

输入格式:

输入包含三行数据。第一行是一把枪的名字。第二行包含4个整数,中间用空格分隔,分别表示枪的重量,射程,弹匣容量和装的子弹数。第三行是一个整数,代表装子弹数。

输出格式:

输出包含两行,分别是两把枪的信息,用回车分隔。

注意:枪的名字的输出宽度为15,重量的输出宽度为4,射程的输出宽度为3,弹匣容量的输出宽度为2。

输入样例:

在这里给出一组输入。例如:

HK USP
720 50 15 0
10

输出样例:

在这里给出相应的输出。例如:

  Mauser pistol:weight:1000,range: 25,Magazine capacity:10,the number of bullets:0HK USP:weight: 720,range: 50,Magazine capacity:15,the number of bullets:9
#include <bits/stdc++.h>
using namespace std;
#include <utility>
class Gun {
private:int weight, range, capacity, bullet;std::string name;
public:Gun(std::string name, int weight, int range, int capacity, int bullet): name(std::move(name)),weight(weight), range(range), capacity(capacity), bullet(bullet){}Gun(): Gun("Mauser pistol", 1000, 25, 10, 0){}void printInfo() {std::cout << std::setw(15) << name << ":weight:" << std::setw(4) << weight << ",range:"<< std::setw(3) << range << ",Magazine capacity:" << std::setw(2) << capacity << ",the number of bullets:"<< bullet<< std::endl;}int getBullet() const {return this->bullet;}int getCapacity() const {return this->capacity;}void load(int num) {if (num > capacity) {bullet = capacity;} else {bullet = num;}}void pull_trigger() {if (bullet) bullet--;}
};
int main(){Gun g1;g1.printInfo();string name;int weight,range,capacity,bullet;getline(cin,name);cin>>weight>>range>>capacity>>bullet;Gun g2(name,weight,range,capacity,bullet);int num;cin>>num;if(g2.getBullet()+num<=g2.getCapacity())g2.load(num);g2.pull_trigger();g2.printInfo();return 0;
}

【c++】设计一个武器类相关推荐

  1. java-接口和继承:设计一个武器系统

    1)定义一个弹药类 Bullet,有一个弹药名称属性 name.设计一个构造方法及 set.get方法. (2)定义一个可装载弹药的接口 Loadable,该接口有一个装载的抽象方法 load(). ...

  2. java 设计一个geometricobject类,geometricobject类

    (2) Circle 类和 Rectangle 类是 GeometricObject 类的子类,其中应实现 父类的抽象方法. (3) 程序主方法中创建两个几何对象,一个圆和一个矩形,并用 ...... ...

  3. 设计一个矩形类rectangle_万字长文带你捋清六种设计模式的设计原则(建议收藏)...

    对于设计模式,自己很早之前就看了好多本设计模式书籍,其中一些还看了好几遍,也一直希望自己能在编码的时候把这些设计模式用上去.可是,在日常的打码中,用的最多的就是单例,其次是观察者和建造者模式 ( bu ...

  4. 如何更新你的机器学习模型?手把手带你设计一个可持续的预测模型!

    作者 | CloudFactory 译者 | 天道酬勤 责编 | 徐威龙 出品 | AI科技大本营(ID:rgznai100) 高效的机器学习模型需要高质量的数据.训练你的机器学习模型并不是过程中的单 ...

  5. 如何设计一个支撑数亿用户的系统

    欢迎关注方志朋的博客,回复"666"获面试宝典 要设计出一套能支撑几十亿人的系统是很困难的.对于软件架构师来说,这一直是一项很大的挑战,但是,从现在开始,看完我的文章,你就会觉得容 ...

  6. 教你设计一个超牛逼的本地缓存!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:ksfzhaohui juejin.im/post/5dd9 ...

  7. 如何设计一个牛逼的本地缓存

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:ksfzhaohui juejin.im/post/5dd9 ...

  8. 如何设计一个本地缓存

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来源:http://i7q.cn/4xPYgB 前言 最近在看My ...

  9. java输入字符串异常_设计一个 Java 程序,自定义异常类,从命令行(键盘)输入一个字符串,如果该字符串值为“XYZ”。。。...

    设计一个 Java 程序,自定义异常类,从命令行(键盘)输入一个字符串,如果该字符串值为"XYZ",则抛出一个异常信息"This is a XYZ",如果从命令 ...

最新文章

  1. Windows 软件推荐2020
  2. 下载恶意pcap包的网站
  3. ajax查询返回字符串,从CFC返回结果之前,对AJAX查询执行字符串函数
  4. 【iOS-cocos2d-X 游戏开发之十三】cocos2dx通过Jni调用Android的Java层代码(下)
  5. 32. Longest Valid Parentheses 最长有效括号
  6. android 布局点击效果,如何让LinearLayout也有类似Button的点击效果?
  7. oracle 9i 只读模式,我的oracle 9i学习日志(6)--Starting Up and shutting down a Database
  8. BDD度盘高速下载地址获取
  9. 最新版网站推广完全手册
  10. erc20 php,无需gas即可归集ERC20的PHP开发包【SmartWallet】
  11. 互联网产品经理常用软件及工作平台 (转)
  12. Problem B – Buggy ICPC——思维,找规律
  13. 微信自定义菜单以及消息and事件通知
  14. 灵魂拷问:31岁拿了阿里P6的offer,要去吗?
  15. 关于校园一卡通的便携化及Mifare M1卡的内部结构
  16. 一些离谱的化学方程式
  17. Linux系列——自动化批量安装软件
  18. jpa、hibernate、spring-data-jpa、jdbcTemplate
  19. 苹果x和xsmax有什么区别_手机资讯:Apple 认证的翻新产品是什么苹果官方翻新机和全新设备有什么区别...
  20. html5 移动画布,html5画布移动元素(html5 canvas move element)

热门文章

  1. arima 数据预处理_数据预测算法-ARIMA预测
  2. IOS-如何处理多个网络请求的并发的情况
  3. 结合均线分析k线图的基本知识
  4. Android编译系统分析五:system.img的生成过程
  5. 信息技术包括计算机技术传感技术和什么技术,信息技术和计算机技术的区别是什么,大家知道吗...
  6. 快递鸟免费物流查询接口
  7. 深入了解zipline回测框架
  8. Vue源码解析-$mount
  9. NAT模式实现局域网物理机与虚拟机的互通访问
  10. 10月一次性领取3万元补贴!有这个证书的恭喜了!国家正式通知!