C++面向对象程序设计 021:魔兽世界之二:装备 ---- (北大Mooc)


前引

我现在心里面非常非常难受 :(
因为我本地IDE 测试了无数遍 并且我得到的结果与 系统给出来的结果
一行一行 一个字一个字的去做了对比
我就是不知道我哪里出错了
测试了一个小时了
而且我的这个版本 明显是不能用在 大作业的 开战的
我这个摆烂写法 都过不了 真的怒了 之后发现大家大部分
都是这样 摆烂写法 但是我的真的AC不了 哎 真的生气


他人博客优秀代码

德林恩宝的 魔兽世界2:装备
酱油瓶被人注册了的 魔兽世界2:装备


我的代码(提交过不了 但是数据本地测试正常 一行一行的进行了对比 都不知道为什么AC不了)

#include <iostream>
#include <string>
#include <string.h>
#include <iomanip>
#include <math.h>
using namespace std;

class Weapons
{
    
    
public:
    string name[3];
    Weapons()
    {
    
    
        name[0] = "sword",name[1] = "bomb",name[2] = "arrow";
    }

};



class RedTeam
{
    
    
private:
    int producelife,dragonlife,ninjalife,icemanlife,lionlife,wolflife;
    int numbers[5],producechoose;
    int time,totalnum;
    int lifes[5];
    string name[5];
    string bornout,teamout;
    string hasout,loyalout,moraleout;
    Weapons Weapon;
    int loyalty;
    float morale;
public:
    int Rflag;
    RedTeam(int life,int dragon,int ninja,int iceman,int lion,int wolf)
    {
    
    
        producelife = life,dragonlife = dragon,ninjalife = ninja,icemanlife = iceman,lionlife = lion,wolflife = wolf;
        lifes[0] = icemanlife,lifes[1] = lionlife,lifes[2] = wolflife,lifes[3] = ninjalife,lifes[4] = dragonlife;
        name[0] = "iceman",name[1] = "lion",name[2] = "wolf",name[3] = "ninja",name[4] = "dragon";
        producechoose = totalnum = Rflag = time = 0;
        memset(numbers,0,sizeof(numbers));
        bornout = " born with strength ",teamout = " in red headquarter",hasout = "It has a ",loyalout = "It's loyalty is ",moraleout = ",and it's morale is ";
        loyalty = morale = 0;
    }
    void ProducePrint()
    {
    
    
        int i,flag = 0;
        for(i=0;i<5;i++)
        {
    
    
            if(producelife >= lifes[producechoose])
            {
    
    
                producelife -= lifes[producechoose];
                numbers[producechoose]++;
                totalnum++;
                cout<<setw(3)<<setfill('0')<<time<<" red ";
                cout<<name[producechoose]<<' '<<totalnum<<bornout<<lifes[producechoose]<<',';
                cout<<numbers[producechoose]<<' '<<name[producechoose]<<teamout<<endl;
                flag = 1;

                if(!producechoose)  cout<<hasout<<Weapon.name[totalnum%3]<<endl;
                else if(producechoose == 1) cout<<loyalout<<producelife<<endl;
                else if(producechoose == 3) cout<<hasout<<Weapon.name[totalnum%3]<<" and a "<<Weapon.name[(totalnum+1)%3]<<endl;
                else if(producechoose == 4) cout<<hasout<<Weapon.name[totalnum%3]<<moraleout<<fixed<<setprecision(2)<<((float)producelife/lifes[producechoose])<<endl;

            }
            producechoose++;
            if(producechoose == 5)  producechoose = 0;
            if(flag)break;
        }
        if(flag)
            time++;
        if(!flag){
    
    
            Rflag = 1;
            cout<<setw(3)<<setfill('0')<<time<<' '<<"red headquarter stops making warriors"<<endl;
                }
    }
};

class BlueTeam{
    
    
private:
    int producelife,dragonlife,ninjalife,icemanlife,lionlife,wolflife;
    int numbers[5],producechoose;
    int time,totalnum;
    int lifes[5];
    string name[5];
    string bornout,teamout;
    string hasout,loyalout,moraleout;
    Weapons Weapon;
    int loyalty;
    float morale;
public:
    int Bflag;
    BlueTeam(int life,int dragon,int ninja,int iceman,int lion,int wolf)
    {
    
    
        producelife = life,dragonlife = dragon,ninjalife = ninja,icemanlife = iceman,lionlife = lion,wolflife = wolf;
        totalnum = producechoose = Bflag = time = 0;
        name[0] = "lion",name[1] = "dragon",name[2] = "ninja",name[3] = "iceman",name[4] = "wolf";
        memset(numbers,0,sizeof(numbers));
        lifes[0] = lionlife,lifes[1] = dragonlife,lifes[2] = ninjalife,lifes[3] = icemanlife,lifes[4] = wolflife;
        bornout = " born with strength ",teamout = " in red headquarter",hasout = "It has a ",loyalout = "It's loyalty is ",moraleout = ",and it's morale is ";
        loyalty = morale = 0;
    }
    void ProducePrint()
    {
    
    
        int i,flag = 0;
        for(i=0;i<5;i++)
        {
    
    
            if(producelife >= lifes[producechoose])
            {
    
    
                producelife -= lifes[producechoose];
                numbers[producechoose]++;
                totalnum++;
                cout<<setw(3)<<setfill('0')<<time<<" blue "<<name[producechoose]<<' '<<totalnum<<' '<<bornout<<lifes[producechoose]<<',';
                cout<<numbers[producechoose]<<' '<<name[producechoose]<<teamout<<endl;
                flag = 1;

                if(producechoose == 3)  cout<<hasout<<Weapon.name[totalnum%3]<<endl;
                else if(!producechoose) cout<<loyalout<<producelife<<endl;
                else if(producechoose == 2) cout<<hasout<<Weapon.name[totalnum%3]<<" and a "<<Weapon.name[(totalnum+1)%3]<<endl;
                else if(producechoose == 1) cout<<hasout<<Weapon.name[totalnum%3]<<moraleout<<fixed<<setprecision(2)<<((float)producelife/lifes[producechoose])<<endl;
            }
            producechoose++;
            if(producechoose == 5)  producechoose = 0;
            if(flag == 1)break;
        }
        if(flag)
            time++;
        if(!flag){
    
    
            Bflag = 1;
            cout<<setw(3)<<setfill('0')<<time<<" blue headquarter stops making warriors"<<endl;
        }
    }
};

int main()
{
    
    
    int testtimes,producelife,dragonlife,ninjalife,icemanlife,lionlife,wolflife,i;
    cin>>testtimes;
    for(i=1;i<=testtimes;i++)
    {
    
    
        cin>>producelife;
        cin>>dragonlife>>ninjalife>>icemanlife>>lionlife>>wolflife;
        RedTeam R(producelife,dragonlife,ninjalife,icemanlife,lionlife,wolflife);
        BlueTeam B(producelife,dragonlife,ninjalife,icemanlife,lionlife,wolflife);
        cout<<"Case:"<<i<<endl;
        while(!R.Rflag || !B.Bflag)
        {
    
    
            if(!R.Rflag)R.ProducePrint();
            if(!B.Bflag)B.ProducePrint();
        }
    }
    return 0;
}

闲聊

现在都下午1点多了 没吃饭
有的时候 做这种题 真的很气人
但我想到原来写我的浙大PTA 数据结构也是
有的时候真的纠结4-5个小时 也是这个样子
没有办法 凡事总有不完美的地方 (叹息)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_37500516/article/details/114924940