CRocket objRocket[5];
void RocketControl(int rock, double h0,
double p0, double speed);
void main(void)
{
int i;
char variant;
double x,y,z,h,p;
printf( .\n);
printf(15 \n);
printf(p \n);
printf(x \n);
while(1)
{
//
scanf(%c,&variant);
switch(variant)
{
/
case 1:
RocketControl(1,45.0,45.0,100.0);
break;
case 2:
RocketControl(2,0.0,60.0,100.0);
break;
case 3:
RocketControl(3,90.0,90.0,100.0);
break;
case 4:
RocketControl(4,60.0,30.0,100.0);
break;
case 5:
RocketControl(5,20.0,80.0,100.0);
break;
case p:
for(i=0;i<5;i++)
{
if(objRocket[i].GetState());
{
printf( #%d\n,i)
objRocket[i].GetPosition(&x,&y,&z,
&h,&p);
printf(x=%Lg y=%Lg z=%Lg h=%Lg
p=%Lg\n, x,y,z);
}
}
break;
case x:
return;
default:
break;
}
}
}
void RocketControl(int rock, double h0,
double p0, double speed)
{
if(objRocket[rock].GetState())
{
objRocket[rock]. ExplodeRocket();
printf(Roket #%d exploded\n,rock);
}
Else
{
objRocket[rock].LaunchRocket(h0,p0,speed);
printf(Roket #%d started\n,rock);
}
}
1.
( ).
Rocket.h.
#include "stdafx.h"
class CRocket
{
public:
//
CRocket(void);
//
~CRocket(void);
//
bool GetState(void);
//- .
void GetPosition(double *x, double *y, double *z, double *h, double *p);
//-
void LaunchRocket(double h0,double p0,double speed);
//-
void ExplodeRocket(void);
private:
//
bool m_state;
//
double m_H0,m_P0;
//
double m_X,m_Y,m_Z;
//
double m_speed;
// .
void CRocket::ComputeRockCoords(void);
};
Rocket.cpp.
#include "stdafx.h"
#include "Rocket.h"
#include <math.h>
//
CRocket::CRocket()
{
//
m_state=false;
}
//
CRocket::~CRocket(void){};
//
bool CRocket::GetState(void)
{
return m_state;
}
//- .
void CRocket::GetPosition(double *x,double *y,double *z,double *h,double *p)
{
//
ComputeRockCoords();
|
|
*x=m_X;
*y=m_Y;
*z=m_Z;
*h=m_H0*180.0/3.1416;
*p=m_P0*180.0/3.1416;
}
//-
void CRocket::LaunchRocket(double h0,double p0,double speed)
{
//
double m_t=0.0;
//
m_X=0.0;
m_Y=0.0;
m_Z=0.0;
m_H0=h0*3.1416/180.0;
m_P0=p0*3.1416/180.0;
m_speed=speed;
//
m_state=true;
printf("Roket've started.\n");
}
//-
void CRocket::ExplodeRocket(void)
{
//
m_state=false;
printf("Roket exploded\n");
}
// .
void CRocket::ComputeRockCoords(void)
{
if(m_state) //
{
//
double dt=0.1;
// dt
m_X+=m_speed*cos(m_P0)*sin(m_H0)*dt;
m_Y+=m_speed*cos(m_P0)*cos(m_H0)*dt;
m_Z+=m_speed*sin(m_P0)*dt;
}
}
.
#include <stdafx.h>
#include <stdio.h>
#include <stdlib.h>
#include "Rocket.h"
//
CRocket objRocket[5];
//
void RocketControl(int rock, double h0, double p0, double speed);
void main(void)
{
int i;
char variant;
double x,y,z,h,p;
printf("Vvedite deystvie\n");
printf("1-5 start or rocket explode\n");
printf("p - iteration\n");
printf("x - exit\n");
while(1)
{
//
variant=0;
scanf("%c",&variant);
switch(variant)
{
// /
case '1':
RocketControl(1,45.0,45.0,100.0);
break;
case '2':
RocketControl(2,0.0,60.0,100.0);
break;
case '3':
RocketControl(3,90.0,90.0,100.0);
break;
case '4':
RocketControl(4,60.0,30.0,100.0);
break;
case '5':
RocketControl(5,20.0,80.0,100.0);
break;
//
case 'p':
for(i=0;i<5;i++)
{
if(objRocket[i].GetState())
{
printf("Rocket flying #%d\n",i);
objRocket[i].GetPosition(&x,&y,&z,&h,&p);
printf("x=%Lg y=%Lg z=%Lg h=%Lg p=%Lg\n",x,y,z,h,p);
}
}
break;
//
case 'x':
return;
default:
break;
}
}
}
void RocketControl(int rock, double h0,double p0, double speed)
{
if(objRocket[rock].GetState())
{
//
objRocket[rock]. ExplodeRocket();
printf("Roket #%d exploded\n",rock);
}
else
{
//
objRocket[rock].LaunchRocket(h0,p0,speed);
printf("Roket #%d started\n",rock);
}
}