Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Написать код на C++

Григорий Орлов Ученик (101), закрыт 2 недели назад
Создать класс «Трехступенчатый ракетный двигатель», включающий данные-элементы: вид топлива, объем каждой из ступеней, скорость к моменту отключения каждой из ступеней, время работы каждой из ступеней.

Функции-элементы:
-создание и инициализация (конструктор),
-выдать сообщение о скорости ракеты через определенное время (заданное в аргументе), считая, что скорость растет линейно,
-выдать сообщение о том, сколько времени должно пройти к моменту выхода на заданную орбиту,
-выдать сообщение о том, какая ступень работает в данный момент (время – в аргументе), если все ступени уже отключились, то выдать сообщение об орбитальном полете и времени такого полета,
-деструктор
Лучший ответ
Webb_q Ученик (156) 3 недели назад
У меня сломана клавиатура((
Поэтому написать или пооверить код я не могу но если тебе нужен пример кода здесь и сейчас то вот ответ от нейронки:
#include <iostream>
#include <string>

class ThreeStageRocketEngine {
private:
std::string fuelType;
double stageVolumes[3];
double stageCutoffSpeeds[3];
double stageBurnTimes[3];

public:
ThreeStageRocketEngine(std::string fuel, double volumes[], double cutoffSpeeds[], double burnTimes[]) {
fuelType = fuel;
for (int i = 0; i < 3; ++i) {
stageVolumes[i] = volumes[i];
stageCutoffSpeeds[i] = cutoffSpeeds[i];
stageBurnTimes[i] = burnTimes[i];
}
}

void displaySpeedAtTime(double time) {
double speed = 0.0;
double timeSum = 0.0;

for (int i = 0; i < 3; ++i) {
if (time >= timeSum && time < timeSum + stageBurnTimes[i]) {
speed = stageCutoffSpeeds[i] * (time - timeSum) / stageBurnTimes[i];
break;
}
timeSum += stageBurnTimes[i];
speed = stageCutoffSpeeds[i];
}

std::cout << "The speed of the rocket at " << time << " seconds is approximately " << speed << " m/s." << std::endl;
}

void displayTimeToOrbit(double requiredOrbitSpeed) {
double time = 0.0;
double speed = 0.0;

for (int i = 0; i < 3; ++i) {
if (speed < requiredOrbitSpeed) {
double timeForStage = (requiredOrbitSpeed - speed) / stageCutoffSpeeds[i] * stageBurnTimes[i];
if (timeForStage <= stageBurnTimes[i]) {
time += timeForStage;
break;
} else {
time += stageBurnTimes[i];
speed = stageCutoffSpeeds[i];
}
}
}

std::cout << "It will take approximately " << time << " seconds to reach the orbit speed of " << requiredOrbitSpeed << " m/s." << std::endl;
}

void displayCurrentStage(double time) {
double timeSum = 0.0;

for (int i = 0; i < 3; ++i) {
timeSum += stageBurnTimes[i];
if (time < timeSum) {
std::cout << "Stage " << (i + 1) << " is currently active." << std::endl;
return;
}
}

std::cout << "The rocket is in orbital flight." << std::endl;
}

~ThreeStageRocketEngine() {
// Destructor logic if needed
}
};

int main() {
double volumes[] = {1000, 800, 500}; // Пример объемов ступеней
double cutoffSpeeds[] = {2000, 5000, 8000}; // Пример скоростей отключения ступеней
double burnTimes[] = {60, 120, 180}; // Пример времени работы ступеней

ThreeStageRocketEngine rocket("Liquid", volumes, cutoffSpeeds, burnTimes);

// Вывод скорости ракеты через определенное время
rocket.displaySpeedAtTime(100); // Пример времени

// Вывод времени до выхода на заданную орбиту
rocket.displayTimeToOrbit(7500); // Пример требуемой скорости орбиты

// Вывод информации о текущей ступени
rocket.displayCurrentStage(150); // Пример времени

return 0;
}
Остальные ответы
Slava Jirov. Просветленный (49824) 3 недели назад
Это зависит от твоего преподавателя.
Григорий ОрловУченик (101) 3 недели назад
Преподу плевать на сам код, главное чтобы я мог объяснить что за что отвечает. В целом в коде я ориентироваться умею, а вот писать на плюсах тяжко)
Slava Jirov. Просветленный (49824) Григорий Орлов, вот ты сейчас глупость сказал. Разумеется, каждый кодер пишет по своему. И преподавателю главное, чтобы ты умел объяснить. Так вот тут-то и собака зарыта: преподу не интересно твоё меканье на тему того, что "эта строка делает вот то-то". Препод будет спускаться на уровень работы с железом. И вот тут ты охудеешь. В моём ВУЗе, программирование вёл и принимал культовый препод. Так вот: многие не могли и не могут закрыть его предмет со 2 семака по самый диплом на 4 курсе. Хотя сам код - все написали легко и быстро. Так что это твоё "объяснить" может быть в тысячу раз сложнее, чем тебе кажется. Тут всё зависит от препода.
Mr.Hale Профи (749) 2 недели назад
 #include  
#include

using namespace std;

class RocketEngine {
public:
string fuelType;
double stageVolumes[3];
double stageSpeeds[3];
double stageTimes[3];

RocketEngine(string fuel, double volumes[3], double speeds[3], double times[3]) {
fuelType = fuel;
copy(volumes, volumes + 3, stageVolumes);
copy(speeds, speeds + 3, stageSpeeds);
copy(times, times + 3, stageTimes);
}

void speedAtTime(double time) {
double speed = 0;
for (int i = 0; i < 3; ++i) {
if (time <= stageTimes[i]) {
speed = stageSpeeds[i] / stageTimes[i] * time;
cout << "Скорость через " << time << " секунд: " << speed << endl;
return;
}
time -= stageTimes[i];
speed = stageSpeeds[i];
}
cout << "Скорость через " << time + stageTimes[0] + stageTimes[1] + stageTimes[2] << " секунд: " << speed << endl;
}

void timeToOrbit(double orbitSpeed) {
// Логику упростил
double totalTime = 0;
for (int i = 0; i < 3; ++i) {
if (orbitSpeed <= stageSpeeds[i]) {
totalTime += orbitSpeed / stageSpeeds[i] * stageTimes[i];
cout << "Время до выхода на орбиту: " << totalTime << " секунд" << endl;
return;
}
totalTime += stageTimes[i];
orbitSpeed -= stageSpeeds[i];
}
cout << "Время до выхода на орбиту: не достижима" << endl;
}

void currentStage(double time) {
if (time <= stageTimes[0]) {
cout << "Работает 1-я ступень" << endl;
} else if (time <= stageTimes[0] + stageTimes[1]) {
cout << "Работает 2-я ступень" << endl;
} else if (time <= stageTimes[0] + stageTimes[1] + stageTimes[2]) {
cout << "Работает 3-я ступень" << endl;
} else {
cout << "Орбитальный полёт. Время полета: " << time - stageTimes[0] - stageTimes[1] - stageTimes[2] << " секунд" << endl;
}
}

~RocketEngine() {}
};

int main() {
double volumes[3] = {1000, 500, 250};
double speeds[3] = {3000, 5000, 7000};
double times[3] = {120, 180, 240};
RocketEngine engine("Liquid Hydrogen", volumes, speeds, times);

engine.speedAtTime(200);
engine.timeToOrbit(6000);
engine.currentStage(500);

return 0;
}
Похожие вопросы