题目要求你为一款战舰游戏制作血量统计程序。
	一部分参数详解:
	船只类型:CV CA CL BB DD
	弹药类型:AP HE ST DT
	HE弹药:完全穿透时造成100%最高伤害,穿深大于装甲厚度,小于130%装甲厚度时为50%伤害,其他情况不造成伤害。不会跳弹。
	AP弹药:装甲厚度小于40%穿深时造成25%伤害,装甲厚度大于50%穿深小于100%穿深时造成100%伤害,未击穿不造成伤害。在入射角小于30度时跳弹,不造成伤害。
	ST弹药:无视装甲厚度,但是受鱼雷伤害减免影响。入射角小于10度时跳弹。
	DT弹药:无视装甲厚度,但是受鱼雷伤害减免影响。入射角小于10度时跳弹。只能攻击CV/CA/BB,对CL/DD无伤害。
	
 
                                            
                        
	第一行为战舰信息,格式为
	船只类型 装甲厚度 最大血量 鱼雷伤害减免(百分比)
	此后有n(n<20)行攻击信息,格式为
	弹药类型 伤害 穿深(鱼雷为32767) 入射角(仅供计算跳弹使用)
	以0 0 0 0标记输入结束,题目保证所有数据在int范围内。
 
                                            
                        
	代码很长,函数很多,尽量OOP。
	
	
	#include<cstdio>
#include<cstring>
class ship_info
{
public:
    int HP; /* 血量 */
    enum type_{CV,CA,CL,BB,DD} type; /* 船只类型 */
    int armor_thickness; /* 装甲厚度 */
    double damage_reduction; /* 鱼雷伤害减免 */
    inline void typeSet_(const char*);
    inline bool sinked();
    inline void heat(const class ammo_info);
};
class ammo_info
{
public:
    enum type_{AP,HE,ST,DT} type; /* 弹药类型 */
    int hurt; /* 伤害 */
    int PD; /* 穿深 */
    int AOI; /* 入射角 */
    void typeSet_(const char*);
};
	/* 想什么呢,你以为我会给你标程?自己去写函数定义! */
	int main()
{
    using namespace std;
    ship_info ship;
    ammo_info ammo;
    char a[3];
    scanf("%s %d %d %lf", a, &ship.armor_thickness, &ship.HP, &ship.damage_reduction);
    ship.damage_reduction /= 100;
    ship.typeSet_(a);
    while (getchar() != EOF)
    {
        scanf("%s %d %d %d", a, &ammo.hurt, &ammo.PD, &ammo.AOI);
        if (!strcmp(a, "0")) break;
        ammo.typeSet_(a);
        ship.heat(ammo);
    }
    if (ship.sinked()) puts("The ship has been sunk");
    else printf("%d\n", ship.HP);
    return 0;
}