Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


создадим массив из пяти объектов ракет




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(“1–5 запуск или подрыв ракеты\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);

}

}

 





Поделиться с друзьями:


Дата добавления: 2016-11-24; Мы поможем в написании ваших работ!; просмотров: 269 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Чтобы получился студенческий борщ, его нужно варить также как и домашний, только без мяса и развести водой 1:10 © Неизвестно
==> читать все изречения...

2406 - | 2286 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.007 с.