Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C++ (http://www.go4expert.com/forums/cpp/)
-   -   Can anyone help with this code? (http://www.go4expert.com/forums/help-code-t9993/)

shadachi 13Apr2008 21:17

Can anyone help with this code?
 
I've written a C++ code regarding a tank and a monster.And uses slope range to damage the monster.The problem is the damage is wrong and the code is too long anyway to make it betteR?

Anyone please can help me on correcting or teach me how to make this code better so i can learn more =) Please and Thank you in advanced.


Assume that the tank is located in position (0,0) and monster y is 8 km from you. Different slopes of missile lunaching will giv different impacts against the monster.

Slope Range Impact Hit
>=4 AND < 5 2%
>= 3 AND <4 5%
>=2 AND <3 7%
>=1 AND <2 9%
exactly 1 12 %

other slopes values will get 0 % hit . And the monster has 100% health initially.


Points (8,1) with 6 attacks
points (8,2) with 3 attacks
points (8,3) with 4 attacks
Points (8,4) with 3 attacks
points (8,6) with 4 attacks
points (8,7) with 2 attacks
points (8,8) with 6 attacks




Here is the code

Code:

#include <iostream>
#include <math.h>


using namespace std;

float getSlope1(float * p1 ,float * p2 );
float getSlope2(float * p1 ,float * p3 );
float getSlope3(float * p1 ,float * p4 );
float getSlope4(float * p1 ,float * p5);
float getSlope5(float * p1 ,float * p6 );
float getSlope6(float * p1 ,float * p7 );
float getSlope7(float * p1 ,float * p8 );


int main()
{
        float * p1 ,* p2, *p3,*p4,*p5,*p6,*p7,*p8;
        p1 = new float [2];
        p2 = new float [2];
        p3 = new float [2];
        p4 = new float [2];
        p5 = new float [2];
        p6 = new float [2];
        p7 = new float [2];
        p8 = new float [2];
       
       
       
        // 0 for x ; 1 for y
        p1[0] = 0.0f; //x1
        p1[1] = 0.0f; //y1
       
        p2[0] = 8.0f; // x2
        p2[1] = 1.0f; //y2
       
        p3[0] = 8.0f ; //x3
        p3[1] = 2.0f; //y3
       
        p4[0] = 8.0f ; //x4
        p4[1] = 3.0f; //y4
       
        p5[0] = 8.0f ; //x5
        p5[1] = 4.0f; //y5
       
        p6[0] = 8.0f ; //x6
        p6[1] = 6.0f; //y6
       
        p7[0] = 8.0f ; //x7
        p7[1] = 8.0f; //x7
       
        p8[0] = 8.0f ;
        p8[1] = 10.0f;
       
       
       
       
       
        float SlopeR [7];
        SlopeR[0]=getSlope1(p1,p2);
        SlopeR[1]=getSlope2(p1,p3);
        SlopeR[2]=getSlope3(p1,p4);
        SlopeR[3]=getSlope4(p1,p5);
        SlopeR[4]=getSlope5(p1,p6);
        SlopeR[5]=getSlope6(p1,p7);
        SlopeR[6]=getSlope7(p1,p8);
       
       
       
        float AttackNums [7];
        AttackNums[0]= 6;
        AttackNums[1]= 3;
        AttackNums[2]= 4;
        AttackNums[3]= 3;
        AttackNums[4]= 4;
        AttackNums[5]= 2;
        AttackNums[6]= 6;
       
       
       
       
       
        for ( int n = 0 ; n < 7 ; n ++ )
        {
                float MonsterHP = 100;
               
                float ReMainHp= 0;
               
               
                if (SlopeR[n] >=4 && SlopeR[n]< 5)
                {
                        SlopeR[n] = 2;
                }
                else if (SlopeR[n] >=3 && SlopeR[n]< 4)
                {
                        SlopeR[n] = 5;
                }
                else if (SlopeR[n] >=2 && SlopeR[n]< 3)
                {
                        SlopeR[n] = 7;
                }
                else if (SlopeR[n] >=1 && SlopeR[n]< 2)
                {
                        SlopeR[n] = 9;
                }
                else if (SlopeR[n] == 1)
                {
                        SlopeR[n] = 12;
                }
                else
                {
                        SlopeR[n] = 0;
                }
               
               
               
               
               
                for ( int m = 0 ; m < AttackNums[n] ; m++)
                {
                       
                        MonsterHP =MonsterHP -SlopeR[n];
                       
                        ReMainHp = (MonsterHP -SlopeR[n]) * AttackNums[n];
                       
                       
                }
               
               
                if (SlopeR[n] > 0 )
                       
                {
                        cout <<"The tank has fired "<< AttackNums[n]<< "times"<< endl;
                        cout << "The monster has left " << MonsterHP<< endl;
                        cout << "The monster has left " << ReMainHp << endl;
                       
                       
                }
               
                else
                {
                        cout << "The tank has missed the monster by" <<AttackNums[n] <<"times" <<endl;
                        cout << "The monster has left " << MonsterHP<< endl;
                        cout << "The monster has left " << ReMainHp << endl;
                }
               
               
        }
       
       
       
       
        return 0 ;
       
}



float getSlope1(float * p1 ,float * p2 )
{
        float result1 = 0.0f;
        result1 = (p2[1] - p1[1])/(p2[0]-p1[0]);
        return result1;
}


float getSlope2(float * p1 ,float * p3 )
{
        float result2 = 0.0f;
        result2 = (p3[1] - p1[1])/(p3[0]-p1[0]);
        return result2;
}

float getSlope3(float * p1 ,float * p4 )
{
        float result4 = 0.0f;
        result4 = (p4[1] - p1[1])/(p4[0]-p1[0]);
        return result4;
}
float getSlope4(float * p1 ,float * p5 )
{
        float result5 = 0.0f;
        result5 = (p5[1] - p1[1])/(p5[0]-p1[0]);
        return result5;
}
float getSlope5(float * p1 ,float * p6 )
{
        float result6 = 0.0f;
        result6 = (p6[1] - p1[1])/(p6[0]-p1[0]);
        return result6;
}
float getSlope6(float * p1 ,float * p7)
{
        float result7 = 0.0f;
        result7 = (p7[1] - p1[1])/(p7[0]-p1[0]);
        return result7;
}

float getSlope7(float * p1 ,float * p8 )
{
        float result8 = 0.0f;
        result8 = (p8[1] - p1[1])/(p8[0]-p1[0]);
        return result8;
}



The Output

The tank has missed the monster by6times
The monster has left 100
The monster has left 600
The tank has missed the monster by3times
The monster has left 100
The monster has left 300
The tank has missed the monster by4times
The monster has left 100
The monster has left 400
The tank has missed the monster by3times
The monster has left 100
The monster has left 300
The tank has missed the monster by4times
The monster has left 100
The monster has left 400
The tank has fired 2times
The monster has left 82
The monster has left 146
The tank has fired 6times
The monster has left 46
The monster has left 222


All times are GMT +5.5. The time now is 10:17.