/*
* Comentários:
* Este programa foi feito a partir de 6 opções possíveis de escolha do usuário
* buscando ter um nível não muito baixo de realismo, porém, foram ignorados alguns
* coeficientes como a variação na gravidade ao longo de um trajeto,
* rho do ar em que o objeto estará presente, variação no fluxo de combustível
* velocidade de escape do combustível, entre outros.
*/
package projetopifinal;
import java.util.Scanner;
/**
*
* @author Nícolas Behar Cambraia; César Lopes de Luca
*/
public class ProjetoPIfinal {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//Escolha das Opções
//Definição do ambiente
int s = 0;
while (s < 1 || s > 2) {
System.out.println("Escolha uma das opções para o ambiente\n 1 - Sistema sem gravidade\n 2 - Sistema com gravidade (Lançamento)");
s = sc.nextInt();
}
//Configuração do foguete
int f = 0;
while (f < 1 || f > 2) {
System.out.println("Escolha uma das opções para a configuração do foguete\n 1 - Foguete monolítico (Apenas 1 compartimento de combustível)\n 2 - Foguete com 3 estágios");
f = sc.nextInt();
}
float me1 = -1;
float me2 = -1;
float me3 = -1;
switch (f) {
case 2:
while (me1 < 0) {
System.out.println("Massa do primeiro estágio [em kg]");
me1 = sc.nextFloat();
}
while (me2 < 0) {
System.out.println("Massa do sengundo estágio [em kg]");
me2 = sc.nextFloat();
}
while (me3 < 0) {
System.out.println("Massa do terceiro estágio [em kg]");
me3 = sc.nextFloat();
}
}
//Propelente a ser usado
int p = 0;
while (p < 1 || p > 2) {
System.out.println("Escolha o tipo de propelente a ser usado\n 1 - Gás comprimido qualquer\n 2 - Hidrogênio (Requer oxigênio armazenado no foguete)");
p = sc.nextInt();
}
//Entrada de dados comuns a todas as opções de sistema e configuração de foguete e combustível e declaração de algumas variáveis
double vf; //velocidade final
float mt; //massa total (massa do foguete + massa do combustível)
float mc = -1; //massa do propelente
double ve = -1; //velocidade de escape do propelente
float mf = -1; //massa do foguete + massa de possível carga
double tep = -1;//taxa de escape do propelente (será utilizada para obter o tempo até acabar o propelente e a aceleração média
double tbo; //tempo para o foguete ficar sem combustível
double a; //aceleração média
double vi0; //velocidade inicial do sistema (variável utilizada para salvar a velocidade inicial nos casos de foguetes de vários estágios)
float g; //gravidade local
while (mf < 0) {
System.out.println("Digite a massa do foguete [Em kg e desconsiderando a massa de combustível (pode ser considerada a massa de carga)]");
mf = sc.nextFloat();
}
System.out.println("Velocidade inicial do foguete [em m/s]");
double vi = sc.nextFloat();
switch (s) {
case 1:
switch (f) {
//Foguete de 1 estágio
case 1:
switch (p) {
//Gás comprimido
case 1:
while (mc < 0) {
System.out.println("Massa de gás [em kg]");
mc = sc.nextFloat();
}
mt = mf + mc;
while (ve < 0) {
System.out.println("Velocidade de escape do propelente [em m/s]");
ve = sc.nextFloat();
}
while (tep < 0) {
System.out.println("Taxa de escape do propelente [kg por segundo][valor utilizado para calcular o tempo de liberação de combustível e aceleração média]: ");
tep = sc.nextFloat();
}
tbo = mc / tep;
vf = vi + ve * Math.log(mt / mf);
a = (vf - vi) / tbo;
System.out.println("\n\n\n\n================================================\n");
System.out.println("A massa inicial do foguete é de " + mt + " kg");
System.out.println("A massa final do foguete é de " + mf + " kg");
System.out.println("A velocidade final do foguete é " + vf + " m/s");
System.out.println("A aceleração média do foguete é " + a + " m/s²");
System.out.println("O tempo necessário para que o foguete fique sem combustível é de " + tbo + " segundos");
break;
//----------------------------------------------------------------------------
//Hidrogênio + Oxigênio
case 2:
while (mc < 0) {
System.out.println("Insira as massas de gás hidrogênio e gás oxigênio a serem usados (Excessos serão adicionados à massa do foguete)");
System.out.println("Massa de gás hidrogênio [em kg]");
float mh = sc.nextFloat();
float on = mh * 8;
System.out.println("São necessários " + on + " kg de gás oxigênio para a utilização de todo hidrogênio");
System.out.println("Massa de gás oxigênio [em kg]");
float mo = sc.nextInt();
if (mo > on) {
mf = mf + mo - on;
mo = on;
} else {
float hn = mh * (mo / on);
mf = mf + mh - hn;
mh = mh * (on / mo);
}
mc = mh + mo; //massa de propelente efetivo
System.out.println("Massa do foguete: " + mf + "\nMassa de combustível: " + mc);
}
mt = mf + mc;
while (ve < 0) {
System.out.println("Velocidade de escape do propelente [em m/s]");
ve = sc.nextFloat();
}
while (tep < 0) {
System.out.println("Taxa de escape do propelente [kg por segundo][valor utilizado para calcular o tempo de liberação de combustível e aceleração média]: ");
tep = sc.nextFloat();
}
vf = vi + ve * Math.log(mt / mf);
tbo = mc / tep;
a = (vf - vi) / tbo;
System.out.println("\n\n\n\n================================================\n");
System.out.println("A massa inicial do foguete é de " + mt + " kg");
System.out.println("A massa final do foguete é de " + mf + " kg");
System.out.println("A velocidade final do foguete é " + vf + " m/s");
System.out.println("A aceleração média do foguete é " + a + " m/s²");
System.out.println("O tempo necessário para que o foguete fique sem combustível é de " + tbo + " segundos");
break;
//----------------------------------------------------------------------------
}
break;
//=============================================================================
//Foguete de 3 estágios
case 2:
//Massa do foguete + estágios
mf = mf + me1 + me2 + me3;
switch (p) {
//Gás comprimido
case 1:
while (mc < 0) {
System.out.println("Massa de gás [em kg]");
mc = sc.nextFloat();
}
//Cálculo da quantidade de combustível que será colocada em cada estágio
//(será proporcional à massa do estágio
//Também é atualizada a massa de cada estágio com combustível
//massa total dos estágios sem combustível
float met = me1 + me2 + me3;
//massa do estágio 1 com combustível
float me1c = me1 + mc * (me1 / met);
//massa de combustível no estágio 1
float mc1 = mc * (me1 / met);
//massa do estágio 2 com combustível
float me2c = me2 + mc * (me2 / met);
//massa de combustível no estágio 1
float mc2 = mc * (me2 / met);
//massa do estágio 3 com combustível
float me3c = me3 + mc * (me3 / met);
//massa de combustível no estágio 1
float mc3 = mc * (me3 / met);
//Massa do foguete + estágios
mt = mf + mc + met;
float mfe1 = mt - mc1;
float mfe2 = mt - me1c - mc2;
float mfe3 = mt - me1c - me2c - mc3;
float mft = mt - me1c - me2c - me3c;
while (ve < 0) {
System.out.println("Velocidade de escape do propelente em todos os estágios [em m/s]");
ve = sc.nextFloat();
}
//Os estágios só são liberados quando não há mais combustível neles
//Obs: O terceiro estágio não será liberado até o fim dos cálculos
//portanto, a massa final para descobrir a velocidade final terá sua presença
//Obs 2: É necessário nesse caso manter a velocidade inicial salva em uma variável para que não se perca nos cálculos da velocidade final
vi0 = vi;
double vf1 = vi + ve * Math.log(mt / mfe1);
vi = vf1;
double vf2 = vi + ve * Math.log(mt / mfe2);
vi = vf2;
double vf3 = vi + ve * Math.log(mt / mfe3);
while (tep < 0) {
System.out.println("Taxa de escape do propelente [kg por segundo][valor utilizado para calcular o tempo de liberação de combustível e aceleração média]: ");
tep = sc.nextFloat();
}
tbo = mc / tep;
vf = vf3;
a = (vf - vi0) / tbo;
System.out.println("\n\n\n\n================================================\n");
System.out.println("A massa inicial do foguete é de " + mt + " kg");
System.out.println("A massa final do foguete é de " + mft + " kg");
System.out.println("A velocidade final do foguete é " + vf + " m/s");
System.out.println("A aceleração média do foguete é " + a + " m/s²");
System.out.println("O tempo necessário para que o foguete fique sem combustível é de " + tbo + " segundos");
break;
//----------------------------------------------------------------------------
//Foguete de estágios + Hidrogênio e Oxigênio
case 2:
while (mc < 0) {
System.out.println("Insira as massas de gás hidrogênio e gás oxigênio a serem usados (Excessos serão adicionados à massa do foguete)");
System.out.println("Massa de gás hidrogênio [em kg]");
float mh = sc.nextFloat();
float on = mh * 8;
System.out.println("São necessários " + on + " kg de gás oxigênio para a utilização de todo hidrogênio");
System.out.println("Massa de gás oxigênio [em kg]");
float mo = sc.nextInt();
if (mo > on) {
mf = mf + mo - on;
mo = on;
} else {
float hn = mh * (mo / on);
mf = mf + mh - hn;
mh = mh * (on / mo);
}
mc = mh + mo; //massa de propelente efetivo
System.out.println("Massa utilizável de propelente: " + mc);
}
//Cálculo da quantidade de combustível que será colocada em cada estágio
//(será proporcional à massa do estágio
//Também é atualizada a massa de cada estágio com combustível
//massa total dos estágios sem combustível
met = me1 + me2 + me3;
//massa do estágio 1 com combustível
me1c = me1 + mc * (me1 / met);
//massa de combustível no estágio 1
mc1 = mc * (me1 / met);
//massa do estágio 2 com combustível
me2c = me2 + mc * (me2 / met);
//massa de combustível no estágio 1
mc2 = mc * (me2 / met);
//massa do estágio 3 com combustível
me3c = me3 + mc * (me3 / met);
//massa de combustível no estágio 1
mc3 = mc * (me3 / met);
//Massa do foguete + estágios
mt = mf + mc + met;
mfe1 = mt - mc1;
mfe2 = mt - me1c - mc2;
mfe3 = mt - me1c - me2c - mc3;
mft = mt - me1c - me2c - me3c;
while (ve < 0) {
System.out.println("Velocidade de escape do propelente em todos os estágios [em m/s]");
ve = sc.nextFloat();
}
//Os estágios só são liberados quando não há mais combustível neles
//Obs: O terceiro estágio não será liberado até o fim dos cálculos
//portanto, a massa final para descobrir a velocidade final terá sua presença
//Obs 2: É necessário nesse caso manter a velocidade inicial salva em uma variável para que não se perca nos cálculos da velocidade final
vi0 = vi;
vf1 = vi + ve * Math.log(mt / mfe1);
vi = vf1;
vf2 = vi + ve * Math.log(mt / mfe2);
vi = vf2;
vf3 = vi + ve * Math.log(mt / mfe3);
while (tep < 0) {
System.out.println("Taxa de escape do propelente [kg por segundo][valor utilizado para calcular o tempo de liberação de combustível e aceleração média]: ");
tep = sc.nextFloat();
}
tbo = mc / tep;
vf = vf3;
a = (vf3 - vi0) / tbo;
System.out.print(vi0);
System.out.println("\n\n\n\n================================================\n");
System.out.println("A massa inicial do foguete é de " + mt + " kg");
System.out.println("A massa final do foguete é de " + mft + " kg");
System.out.println("A velocidade inicial do foguete é " + vi0 + " m/s");
System.out.println("A velocidade final do foguete é " + vf + " m/s");
System.out.println("A aceleração média do foguete é " + a + " m/s²");
System.out.println("O tempo necessário para que o foguete fique sem combustível é de " + tbo + " segundos");
break;
//----------------------------------------------------------------------------
}
break;
//=============================================================================
}
break;
case 2:
switch (f) {
case 1:
switch (p) {
//Gravidade + Foguete Simples + Gás
case 1:
System.out.println("Gravidade local [em m/s²]: ");
g = sc.nextFloat();
while (mc < 0) {
System.out.println("Massa de gás [em kg]");
mc = sc.nextFloat();
}
mt = mf + mc;
while (ve < 0) {
System.out.println("Velocidade de escape do propelente [em m/s]");
ve = sc.nextFloat();
}
while (tep < 0) {
System.out.println("Taxa de escape do propelente [kg por segundo][valor utilizado para calcular o tempo de liberação de combustível e aceleração média]: ");
tep = sc.nextFloat();
}
tbo = mc / tep;
vf = vi + ve * Math.log(mt / mf) - g * tbo;
a = (vf - vi) / tbo;
if (vf > 0) {
System.out.println("\n\n\n\n================================================\n");
System.out.println("A massa inicial do foguete é de " + mt + " kg");
System.out.println("A massa final do foguete é de " + mf + " kg");
System.out.println("A velocidade final do foguete é " + vf + " m/s");
System.out.println("A aceleração média do foguete é " + a + " m/s²");
System.out.println("O tempo necessário para que o foguete fique sem combustível é de " + tbo + " segundos");
} else {
System.out.println("\n\n\n\n================================================\n");
System.out.println("O foguete não decola");
}
break;
//Gravidade + Foguete simples + Hidrogênio e Oxigênio
case 2:
System.out.println("Gravidade local [em m/s²]: ");
g = sc.nextFloat();
while (mc < 0) {
System.out.println("Insira as massas de gás hidrogênio e gás oxigênio a serem usados (Excessos serão adicionados à massa do foguete)");
System.out.println("Massa de gás hidrogênio [em kg]");
float mh = sc.nextFloat();
float on = mh * 8;
System.out.println("São necessários " + on + " kg de gás oxigênio para a utilização de todo hidrogênio");
System.out.println("Massa de gás oxigênio [em kg]");
float mo = sc.nextInt();
if (mo > on) {
mf = mf + mo - on;
mo = on;
} else {
float hn = mh * (mo / on);
mf = mf + mh - hn;
mh = mh * (on / mo);
}
mc = mh + mo; //massa de propelente efetivo
System.out.println("Massa do foguete: " + mf + "\nMassa de combustível: " + mc);
}
mt = mf + mc;
while (ve < 0) {
System.out.println("Velocidade de escape do propelente [em m/s]");
ve = sc.nextFloat();
}
while (tep < 0) {
System.out.println("Taxa de escape do propelente [kg por segundo][valor utilizado para calcular o tempo de liberação de combustível e aceleração média]: ");
tep = sc.nextFloat();
}
tbo = mc / tep;
vf = vi + ve * Math.log(mt / mf) - g * tbo;
a = (vf - vi) / tbo;
if (vf > 0) {
System.out.println("\n\n\n\n================================================\n");
System.out.println("A massa inicial do foguete é de " + mt + " kg");
System.out.println("A massa final do foguete é de " + mf + " kg");
System.out.println("A velocidade final do foguete é " + vf + " m/s");
System.out.println("A aceleração média do foguete é " + a + " m/s²");
System.out.println("O tempo necessário para que o foguete fique sem combustível é de " + tbo + " segundos");
} else {
System.out.println("\n\n\n\n================================================\n");
System.out.println("O foguete não decola");
}
break;
}
break;
case 2:
switch (p) {
case 1:
//Gravidade + Foguete de vários estágios + Gás
System.out.println("Gravidade local [em m/s²]: ");
g = sc.nextFloat();
while (mc < 0) {
System.out.println("Massa de gás [em kg]");
mc = sc.nextFloat();
}
//Cálculo da quantidade de combustível que será colocada em cada estágio
//(será proporcional à massa do estágio
//Também é atualizada a massa de cada estágio com combustível
//massa total dos estágios sem combustível
float met = me1 + me2 + me3;
//massa do estágio 1 com combustível
float me1c = me1 + mc * (me1 / met);
//massa de combustível no estágio 1
float mc1 = mc * (me1 / met);
//massa do estágio 2 com combustível
float me2c = me2 + mc * (me2 / met);
//massa de combustível no estágio 1
float mc2 = mc * (me2 / met);
//massa do estágio 3 com combustível
float me3c = me3 + mc * (me3 / met);
//massa de combustível no estágio 1
float mc3 = mc * (me3 / met);
//Massa do foguete + estágios
mt = mf + mc + met;
float mfe1 = mt - mc1;
float mfe2 = mt - me1c - mc2;
float mfe3 = mt - me1c - me2c - mc3;
float mft = mt - me1c - me2c - me3c;
while (ve < 0) {
System.out.println("Velocidade de escape do propelente em todos os estágios [em m/s]");
ve = sc.nextFloat();
}
//Os estágios só são liberados quando não há mais combustível neles
//Obs: O terceiro estágio não será liberado até o fim dos cálculos
//portanto, a massa final para descobrir a velocidade final terá sua presença
//Obs 2: É necessário nesse caso manter a velocidade inicial salva em uma variável para que não se perca nos cálculos da velocidade final
while (tep < 0) {
System.out.println("Taxa de escape do propelente [kg por segundo][valor utilizado para calcular o tempo de liberação de combustível e aceleração média]: ");
tep = sc.nextFloat();
}
//Cálculo do tempo necessário para cada estágio ficar sem propelente
double tbo1 = mc1 / tep;
double tbo2 = mc1 / tep;
double tbo3 = mc1 / tep;
//Pode-se usar outros valores para a gravidade, onde o usuário pode inserir outros dados para um resultado mais proximo da realidade
vi0 = vi;
double vf1 = vi + ve * Math.log(mt / mfe1) - g * tbo1;
vi = vf1;
double vf2 = vi + ve * Math.log(mt / mfe2) - g * tbo2;
vi = vf2;
double vf3 = vi + ve * Math.log(mt / mfe3) - g * tbo3;
tbo = mc / tep;
vf = vf3;
a = (vf - vi0) / tbo;
if (vf1 > 0) {
System.out.println("\n\n\n\n================================================\n");
System.out.println("A massa inicial do foguete é de " + mt + " kg");
System.out.println("A massa final do foguete é de " + mft + " kg");
System.out.println("A velocidade final do foguete é " + vf + " m/s");
System.out.println("A aceleração média do foguete é " + a + " m/s²");
System.out.println("O tempo necessário para que o foguete fique sem combustível é de " + tbo + " segundos");
} else {
System.out.println("\n\n\n\n================================================\n");
System.out.println("O foguete não decola");
}
break;
case 2:
//Gravidade + Foguete de vários estágios + Oxigênio e Hidrogênio
System.out.println("Gravidade local [em m/s²]: ");
g = sc.nextFloat();
while (mc < 0) {
System.out.println("Insira as massas de gás hidrogênio e gás oxigênio a serem usados (Excessos serão adicionados à massa do foguete)");
System.out.println("Massa de gás hidrogênio [em kg]");
float mh = sc.nextFloat();
float on = mh * 8;
System.out.println("São necessários " + on + " kg de gás oxigênio para a utilização de todo hidrogênio");
System.out.println("Massa de gás oxigênio [em kg]");
float mo = sc.nextInt();
if (mo > on) {
mf = mf + mo - on;
mo = on;
} else {
float hn = mh * (mo / on);
mf = mf + mh - hn;
mh = mh * (on / mo);
}
mc = mh + mo; //massa de propelente efetivo
System.out.println("Massa utilizável de propelente: " + mc);
}
//Cálculo da quantidade de combustível que será colocada em cada estágio
//(será proporcional à massa do estágio
//Também é atualizada a massa de cada estágio com combustível
//massa total dos estágios sem combustível
met = me1 + me2 + me3;
//massa do estágio 1 com combustível
me1c = me1 + mc * (me1 / met);
//massa de combustível no estágio 1
mc1 = mc * (me1 / met);
//massa do estágio 2 com combustível
me2c = me2 + mc * (me2 / met);
//massa de combustível no estágio 1
mc2 = mc * (me2 / met);
//massa do estágio 3 com combustível
me3c = me3 + mc * (me3 / met);
//massa de combustível no estágio 1
mc3 = mc * (me3 / met);
//Massa do foguete + estágios
mt = mf + mc + met;
mfe1 = mt - mc1;
mfe2 = mt - me1c - mc2;
mfe3 = mt - me1c - me2c - mc3;
mft = mt - me1c - me2c - me3c;
while (ve < 0) {
System.out.println("Velocidade de escape do propelente em todos os estágios [em m/s]");
ve = sc.nextFloat();
}
//Os estágios só são liberados quando não há mais combustível neles
//Obs: O terceiro estágio não será liberado até o fim dos cálculos
//portanto, a massa final para descobrir a velocidade final terá sua presença
//Obs 2: É necessário nesse caso manter a velocidade inicial salva em uma variável para que não se perca nos cálculos da velocidade final
while (tep < 0) {
System.out.println("Taxa de escape do propelente [kg por segundo][valor utilizado para calcular o tempo de liberação de combustível e aceleração média]: ");
tep = sc.nextFloat();
}
//Tempo que leva para cada estágio ficar sem combustível
tbo1 = mc1 / tep;
tbo2 = mc2 / tep;
tbo3 = mc3 / tep;
vi0 = vi;
vf1 = vi + ve * Math.log(mt / mfe1) - g * tbo1;
vi = vf1;
vf2 = vi + ve * Math.log(mt / mfe2) - g * tbo2;
vi = vf2;
vf3 = vi + ve * Math.log(mt / mfe3) - g * tbo3;
tbo = mc / tep;
vf = vf3;
a = (vf - vi0) / tbo;
if (vf1 > 0) {
System.out.println("\n\n\n\n================================================\n");
System.out.println("A massa inicial do foguete é de " + mt + " kg");
System.out.println("A massa final do foguete é de " + mft + " kg");
System.out.println("A velocidade final do foguete é " + vf + " m/s");
System.out.println("A aceleração média do foguete é " + a + " m/s²");
System.out.println("O tempo necessário para que o foguete fique sem combustível é de " + tbo + " segundos");
} else {
System.out.println("\n\n\n\n================================================\n");
System.out.println("O foguete não decola");
}
break;
}
break;
}
break;
}
}
}
* Comentários:
* Este programa foi feito a partir de 6 opções possíveis de escolha do usuário
* buscando ter um nível não muito baixo de realismo, porém, foram ignorados alguns
* coeficientes como a variação na gravidade ao longo de um trajeto,
* rho do ar em que o objeto estará presente, variação no fluxo de combustível
* velocidade de escape do combustível, entre outros.
*/
package projetopifinal;
import java.util.Scanner;
/**
*
* @author Nícolas Behar Cambraia; César Lopes de Luca
*/
public class ProjetoPIfinal {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//Escolha das Opções
//Definição do ambiente
int s = 0;
while (s < 1 || s > 2) {
System.out.println("Escolha uma das opções para o ambiente\n 1 - Sistema sem gravidade\n 2 - Sistema com gravidade (Lançamento)");
s = sc.nextInt();
}
//Configuração do foguete
int f = 0;
while (f < 1 || f > 2) {
System.out.println("Escolha uma das opções para a configuração do foguete\n 1 - Foguete monolítico (Apenas 1 compartimento de combustível)\n 2 - Foguete com 3 estágios");
f = sc.nextInt();
}
float me1 = -1;
float me2 = -1;
float me3 = -1;
switch (f) {
case 2:
while (me1 < 0) {
System.out.println("Massa do primeiro estágio [em kg]");
me1 = sc.nextFloat();
}
while (me2 < 0) {
System.out.println("Massa do sengundo estágio [em kg]");
me2 = sc.nextFloat();
}
while (me3 < 0) {
System.out.println("Massa do terceiro estágio [em kg]");
me3 = sc.nextFloat();
}
}
//Propelente a ser usado
int p = 0;
while (p < 1 || p > 2) {
System.out.println("Escolha o tipo de propelente a ser usado\n 1 - Gás comprimido qualquer\n 2 - Hidrogênio (Requer oxigênio armazenado no foguete)");
p = sc.nextInt();
}
//Entrada de dados comuns a todas as opções de sistema e configuração de foguete e combustível e declaração de algumas variáveis
double vf; //velocidade final
float mt; //massa total (massa do foguete + massa do combustível)
float mc = -1; //massa do propelente
double ve = -1; //velocidade de escape do propelente
float mf = -1; //massa do foguete + massa de possível carga
double tep = -1;//taxa de escape do propelente (será utilizada para obter o tempo até acabar o propelente e a aceleração média
double tbo; //tempo para o foguete ficar sem combustível
double a; //aceleração média
double vi0; //velocidade inicial do sistema (variável utilizada para salvar a velocidade inicial nos casos de foguetes de vários estágios)
float g; //gravidade local
while (mf < 0) {
System.out.println("Digite a massa do foguete [Em kg e desconsiderando a massa de combustível (pode ser considerada a massa de carga)]");
mf = sc.nextFloat();
}
System.out.println("Velocidade inicial do foguete [em m/s]");
double vi = sc.nextFloat();
switch (s) {
case 1:
switch (f) {
//Foguete de 1 estágio
case 1:
switch (p) {
//Gás comprimido
case 1:
while (mc < 0) {
System.out.println("Massa de gás [em kg]");
mc = sc.nextFloat();
}
mt = mf + mc;
while (ve < 0) {
System.out.println("Velocidade de escape do propelente [em m/s]");
ve = sc.nextFloat();
}
while (tep < 0) {
System.out.println("Taxa de escape do propelente [kg por segundo][valor utilizado para calcular o tempo de liberação de combustível e aceleração média]: ");
tep = sc.nextFloat();
}
tbo = mc / tep;
vf = vi + ve * Math.log(mt / mf);
a = (vf - vi) / tbo;
System.out.println("\n\n\n\n================================================\n");
System.out.println("A massa inicial do foguete é de " + mt + " kg");
System.out.println("A massa final do foguete é de " + mf + " kg");
System.out.println("A velocidade final do foguete é " + vf + " m/s");
System.out.println("A aceleração média do foguete é " + a + " m/s²");
System.out.println("O tempo necessário para que o foguete fique sem combustível é de " + tbo + " segundos");
break;
//----------------------------------------------------------------------------
//Hidrogênio + Oxigênio
case 2:
while (mc < 0) {
System.out.println("Insira as massas de gás hidrogênio e gás oxigênio a serem usados (Excessos serão adicionados à massa do foguete)");
System.out.println("Massa de gás hidrogênio [em kg]");
float mh = sc.nextFloat();
float on = mh * 8;
System.out.println("São necessários " + on + " kg de gás oxigênio para a utilização de todo hidrogênio");
System.out.println("Massa de gás oxigênio [em kg]");
float mo = sc.nextInt();
if (mo > on) {
mf = mf + mo - on;
mo = on;
} else {
float hn = mh * (mo / on);
mf = mf + mh - hn;
mh = mh * (on / mo);
}
mc = mh + mo; //massa de propelente efetivo
System.out.println("Massa do foguete: " + mf + "\nMassa de combustível: " + mc);
}
mt = mf + mc;
while (ve < 0) {
System.out.println("Velocidade de escape do propelente [em m/s]");
ve = sc.nextFloat();
}
while (tep < 0) {
System.out.println("Taxa de escape do propelente [kg por segundo][valor utilizado para calcular o tempo de liberação de combustível e aceleração média]: ");
tep = sc.nextFloat();
}
vf = vi + ve * Math.log(mt / mf);
tbo = mc / tep;
a = (vf - vi) / tbo;
System.out.println("\n\n\n\n================================================\n");
System.out.println("A massa inicial do foguete é de " + mt + " kg");
System.out.println("A massa final do foguete é de " + mf + " kg");
System.out.println("A velocidade final do foguete é " + vf + " m/s");
System.out.println("A aceleração média do foguete é " + a + " m/s²");
System.out.println("O tempo necessário para que o foguete fique sem combustível é de " + tbo + " segundos");
break;
//----------------------------------------------------------------------------
}
break;
//=============================================================================
//Foguete de 3 estágios
case 2:
//Massa do foguete + estágios
mf = mf + me1 + me2 + me3;
switch (p) {
//Gás comprimido
case 1:
while (mc < 0) {
System.out.println("Massa de gás [em kg]");
mc = sc.nextFloat();
}
//Cálculo da quantidade de combustível que será colocada em cada estágio
//(será proporcional à massa do estágio
//Também é atualizada a massa de cada estágio com combustível
//massa total dos estágios sem combustível
float met = me1 + me2 + me3;
//massa do estágio 1 com combustível
float me1c = me1 + mc * (me1 / met);
//massa de combustível no estágio 1
float mc1 = mc * (me1 / met);
//massa do estágio 2 com combustível
float me2c = me2 + mc * (me2 / met);
//massa de combustível no estágio 1
float mc2 = mc * (me2 / met);
//massa do estágio 3 com combustível
float me3c = me3 + mc * (me3 / met);
//massa de combustível no estágio 1
float mc3 = mc * (me3 / met);
//Massa do foguete + estágios
mt = mf + mc + met;
float mfe1 = mt - mc1;
float mfe2 = mt - me1c - mc2;
float mfe3 = mt - me1c - me2c - mc3;
float mft = mt - me1c - me2c - me3c;
while (ve < 0) {
System.out.println("Velocidade de escape do propelente em todos os estágios [em m/s]");
ve = sc.nextFloat();
}
//Os estágios só são liberados quando não há mais combustível neles
//Obs: O terceiro estágio não será liberado até o fim dos cálculos
//portanto, a massa final para descobrir a velocidade final terá sua presença
//Obs 2: É necessário nesse caso manter a velocidade inicial salva em uma variável para que não se perca nos cálculos da velocidade final
vi0 = vi;
double vf1 = vi + ve * Math.log(mt / mfe1);
vi = vf1;
double vf2 = vi + ve * Math.log(mt / mfe2);
vi = vf2;
double vf3 = vi + ve * Math.log(mt / mfe3);
while (tep < 0) {
System.out.println("Taxa de escape do propelente [kg por segundo][valor utilizado para calcular o tempo de liberação de combustível e aceleração média]: ");
tep = sc.nextFloat();
}
tbo = mc / tep;
vf = vf3;
a = (vf - vi0) / tbo;
System.out.println("\n\n\n\n================================================\n");
System.out.println("A massa inicial do foguete é de " + mt + " kg");
System.out.println("A massa final do foguete é de " + mft + " kg");
System.out.println("A velocidade final do foguete é " + vf + " m/s");
System.out.println("A aceleração média do foguete é " + a + " m/s²");
System.out.println("O tempo necessário para que o foguete fique sem combustível é de " + tbo + " segundos");
break;
//----------------------------------------------------------------------------
//Foguete de estágios + Hidrogênio e Oxigênio
case 2:
while (mc < 0) {
System.out.println("Insira as massas de gás hidrogênio e gás oxigênio a serem usados (Excessos serão adicionados à massa do foguete)");
System.out.println("Massa de gás hidrogênio [em kg]");
float mh = sc.nextFloat();
float on = mh * 8;
System.out.println("São necessários " + on + " kg de gás oxigênio para a utilização de todo hidrogênio");
System.out.println("Massa de gás oxigênio [em kg]");
float mo = sc.nextInt();
if (mo > on) {
mf = mf + mo - on;
mo = on;
} else {
float hn = mh * (mo / on);
mf = mf + mh - hn;
mh = mh * (on / mo);
}
mc = mh + mo; //massa de propelente efetivo
System.out.println("Massa utilizável de propelente: " + mc);
}
//Cálculo da quantidade de combustível que será colocada em cada estágio
//(será proporcional à massa do estágio
//Também é atualizada a massa de cada estágio com combustível
//massa total dos estágios sem combustível
met = me1 + me2 + me3;
//massa do estágio 1 com combustível
me1c = me1 + mc * (me1 / met);
//massa de combustível no estágio 1
mc1 = mc * (me1 / met);
//massa do estágio 2 com combustível
me2c = me2 + mc * (me2 / met);
//massa de combustível no estágio 1
mc2 = mc * (me2 / met);
//massa do estágio 3 com combustível
me3c = me3 + mc * (me3 / met);
//massa de combustível no estágio 1
mc3 = mc * (me3 / met);
//Massa do foguete + estágios
mt = mf + mc + met;
mfe1 = mt - mc1;
mfe2 = mt - me1c - mc2;
mfe3 = mt - me1c - me2c - mc3;
mft = mt - me1c - me2c - me3c;
while (ve < 0) {
System.out.println("Velocidade de escape do propelente em todos os estágios [em m/s]");
ve = sc.nextFloat();
}
//Os estágios só são liberados quando não há mais combustível neles
//Obs: O terceiro estágio não será liberado até o fim dos cálculos
//portanto, a massa final para descobrir a velocidade final terá sua presença
//Obs 2: É necessário nesse caso manter a velocidade inicial salva em uma variável para que não se perca nos cálculos da velocidade final
vi0 = vi;
vf1 = vi + ve * Math.log(mt / mfe1);
vi = vf1;
vf2 = vi + ve * Math.log(mt / mfe2);
vi = vf2;
vf3 = vi + ve * Math.log(mt / mfe3);
while (tep < 0) {
System.out.println("Taxa de escape do propelente [kg por segundo][valor utilizado para calcular o tempo de liberação de combustível e aceleração média]: ");
tep = sc.nextFloat();
}
tbo = mc / tep;
vf = vf3;
a = (vf3 - vi0) / tbo;
System.out.print(vi0);
System.out.println("\n\n\n\n================================================\n");
System.out.println("A massa inicial do foguete é de " + mt + " kg");
System.out.println("A massa final do foguete é de " + mft + " kg");
System.out.println("A velocidade inicial do foguete é " + vi0 + " m/s");
System.out.println("A velocidade final do foguete é " + vf + " m/s");
System.out.println("A aceleração média do foguete é " + a + " m/s²");
System.out.println("O tempo necessário para que o foguete fique sem combustível é de " + tbo + " segundos");
break;
//----------------------------------------------------------------------------
}
break;
//=============================================================================
}
break;
case 2:
switch (f) {
case 1:
switch (p) {
//Gravidade + Foguete Simples + Gás
case 1:
System.out.println("Gravidade local [em m/s²]: ");
g = sc.nextFloat();
while (mc < 0) {
System.out.println("Massa de gás [em kg]");
mc = sc.nextFloat();
}
mt = mf + mc;
while (ve < 0) {
System.out.println("Velocidade de escape do propelente [em m/s]");
ve = sc.nextFloat();
}
while (tep < 0) {
System.out.println("Taxa de escape do propelente [kg por segundo][valor utilizado para calcular o tempo de liberação de combustível e aceleração média]: ");
tep = sc.nextFloat();
}
tbo = mc / tep;
vf = vi + ve * Math.log(mt / mf) - g * tbo;
a = (vf - vi) / tbo;
if (vf > 0) {
System.out.println("\n\n\n\n================================================\n");
System.out.println("A massa inicial do foguete é de " + mt + " kg");
System.out.println("A massa final do foguete é de " + mf + " kg");
System.out.println("A velocidade final do foguete é " + vf + " m/s");
System.out.println("A aceleração média do foguete é " + a + " m/s²");
System.out.println("O tempo necessário para que o foguete fique sem combustível é de " + tbo + " segundos");
} else {
System.out.println("\n\n\n\n================================================\n");
System.out.println("O foguete não decola");
}
break;
//Gravidade + Foguete simples + Hidrogênio e Oxigênio
case 2:
System.out.println("Gravidade local [em m/s²]: ");
g = sc.nextFloat();
while (mc < 0) {
System.out.println("Insira as massas de gás hidrogênio e gás oxigênio a serem usados (Excessos serão adicionados à massa do foguete)");
System.out.println("Massa de gás hidrogênio [em kg]");
float mh = sc.nextFloat();
float on = mh * 8;
System.out.println("São necessários " + on + " kg de gás oxigênio para a utilização de todo hidrogênio");
System.out.println("Massa de gás oxigênio [em kg]");
float mo = sc.nextInt();
if (mo > on) {
mf = mf + mo - on;
mo = on;
} else {
float hn = mh * (mo / on);
mf = mf + mh - hn;
mh = mh * (on / mo);
}
mc = mh + mo; //massa de propelente efetivo
System.out.println("Massa do foguete: " + mf + "\nMassa de combustível: " + mc);
}
mt = mf + mc;
while (ve < 0) {
System.out.println("Velocidade de escape do propelente [em m/s]");
ve = sc.nextFloat();
}
while (tep < 0) {
System.out.println("Taxa de escape do propelente [kg por segundo][valor utilizado para calcular o tempo de liberação de combustível e aceleração média]: ");
tep = sc.nextFloat();
}
tbo = mc / tep;
vf = vi + ve * Math.log(mt / mf) - g * tbo;
a = (vf - vi) / tbo;
if (vf > 0) {
System.out.println("\n\n\n\n================================================\n");
System.out.println("A massa inicial do foguete é de " + mt + " kg");
System.out.println("A massa final do foguete é de " + mf + " kg");
System.out.println("A velocidade final do foguete é " + vf + " m/s");
System.out.println("A aceleração média do foguete é " + a + " m/s²");
System.out.println("O tempo necessário para que o foguete fique sem combustível é de " + tbo + " segundos");
} else {
System.out.println("\n\n\n\n================================================\n");
System.out.println("O foguete não decola");
}
break;
}
break;
case 2:
switch (p) {
case 1:
//Gravidade + Foguete de vários estágios + Gás
System.out.println("Gravidade local [em m/s²]: ");
g = sc.nextFloat();
while (mc < 0) {
System.out.println("Massa de gás [em kg]");
mc = sc.nextFloat();
}
//Cálculo da quantidade de combustível que será colocada em cada estágio
//(será proporcional à massa do estágio
//Também é atualizada a massa de cada estágio com combustível
//massa total dos estágios sem combustível
float met = me1 + me2 + me3;
//massa do estágio 1 com combustível
float me1c = me1 + mc * (me1 / met);
//massa de combustível no estágio 1
float mc1 = mc * (me1 / met);
//massa do estágio 2 com combustível
float me2c = me2 + mc * (me2 / met);
//massa de combustível no estágio 1
float mc2 = mc * (me2 / met);
//massa do estágio 3 com combustível
float me3c = me3 + mc * (me3 / met);
//massa de combustível no estágio 1
float mc3 = mc * (me3 / met);
//Massa do foguete + estágios
mt = mf + mc + met;
float mfe1 = mt - mc1;
float mfe2 = mt - me1c - mc2;
float mfe3 = mt - me1c - me2c - mc3;
float mft = mt - me1c - me2c - me3c;
while (ve < 0) {
System.out.println("Velocidade de escape do propelente em todos os estágios [em m/s]");
ve = sc.nextFloat();
}
//Os estágios só são liberados quando não há mais combustível neles
//Obs: O terceiro estágio não será liberado até o fim dos cálculos
//portanto, a massa final para descobrir a velocidade final terá sua presença
//Obs 2: É necessário nesse caso manter a velocidade inicial salva em uma variável para que não se perca nos cálculos da velocidade final
while (tep < 0) {
System.out.println("Taxa de escape do propelente [kg por segundo][valor utilizado para calcular o tempo de liberação de combustível e aceleração média]: ");
tep = sc.nextFloat();
}
//Cálculo do tempo necessário para cada estágio ficar sem propelente
double tbo1 = mc1 / tep;
double tbo2 = mc1 / tep;
double tbo3 = mc1 / tep;
//Pode-se usar outros valores para a gravidade, onde o usuário pode inserir outros dados para um resultado mais proximo da realidade
vi0 = vi;
double vf1 = vi + ve * Math.log(mt / mfe1) - g * tbo1;
vi = vf1;
double vf2 = vi + ve * Math.log(mt / mfe2) - g * tbo2;
vi = vf2;
double vf3 = vi + ve * Math.log(mt / mfe3) - g * tbo3;
tbo = mc / tep;
vf = vf3;
a = (vf - vi0) / tbo;
if (vf1 > 0) {
System.out.println("\n\n\n\n================================================\n");
System.out.println("A massa inicial do foguete é de " + mt + " kg");
System.out.println("A massa final do foguete é de " + mft + " kg");
System.out.println("A velocidade final do foguete é " + vf + " m/s");
System.out.println("A aceleração média do foguete é " + a + " m/s²");
System.out.println("O tempo necessário para que o foguete fique sem combustível é de " + tbo + " segundos");
} else {
System.out.println("\n\n\n\n================================================\n");
System.out.println("O foguete não decola");
}
break;
case 2:
//Gravidade + Foguete de vários estágios + Oxigênio e Hidrogênio
System.out.println("Gravidade local [em m/s²]: ");
g = sc.nextFloat();
while (mc < 0) {
System.out.println("Insira as massas de gás hidrogênio e gás oxigênio a serem usados (Excessos serão adicionados à massa do foguete)");
System.out.println("Massa de gás hidrogênio [em kg]");
float mh = sc.nextFloat();
float on = mh * 8;
System.out.println("São necessários " + on + " kg de gás oxigênio para a utilização de todo hidrogênio");
System.out.println("Massa de gás oxigênio [em kg]");
float mo = sc.nextInt();
if (mo > on) {
mf = mf + mo - on;
mo = on;
} else {
float hn = mh * (mo / on);
mf = mf + mh - hn;
mh = mh * (on / mo);
}
mc = mh + mo; //massa de propelente efetivo
System.out.println("Massa utilizável de propelente: " + mc);
}
//Cálculo da quantidade de combustível que será colocada em cada estágio
//(será proporcional à massa do estágio
//Também é atualizada a massa de cada estágio com combustível
//massa total dos estágios sem combustível
met = me1 + me2 + me3;
//massa do estágio 1 com combustível
me1c = me1 + mc * (me1 / met);
//massa de combustível no estágio 1
mc1 = mc * (me1 / met);
//massa do estágio 2 com combustível
me2c = me2 + mc * (me2 / met);
//massa de combustível no estágio 1
mc2 = mc * (me2 / met);
//massa do estágio 3 com combustível
me3c = me3 + mc * (me3 / met);
//massa de combustível no estágio 1
mc3 = mc * (me3 / met);
//Massa do foguete + estágios
mt = mf + mc + met;
mfe1 = mt - mc1;
mfe2 = mt - me1c - mc2;
mfe3 = mt - me1c - me2c - mc3;
mft = mt - me1c - me2c - me3c;
while (ve < 0) {
System.out.println("Velocidade de escape do propelente em todos os estágios [em m/s]");
ve = sc.nextFloat();
}
//Os estágios só são liberados quando não há mais combustível neles
//Obs: O terceiro estágio não será liberado até o fim dos cálculos
//portanto, a massa final para descobrir a velocidade final terá sua presença
//Obs 2: É necessário nesse caso manter a velocidade inicial salva em uma variável para que não se perca nos cálculos da velocidade final
while (tep < 0) {
System.out.println("Taxa de escape do propelente [kg por segundo][valor utilizado para calcular o tempo de liberação de combustível e aceleração média]: ");
tep = sc.nextFloat();
}
//Tempo que leva para cada estágio ficar sem combustível
tbo1 = mc1 / tep;
tbo2 = mc2 / tep;
tbo3 = mc3 / tep;
vi0 = vi;
vf1 = vi + ve * Math.log(mt / mfe1) - g * tbo1;
vi = vf1;
vf2 = vi + ve * Math.log(mt / mfe2) - g * tbo2;
vi = vf2;
vf3 = vi + ve * Math.log(mt / mfe3) - g * tbo3;
tbo = mc / tep;
vf = vf3;
a = (vf - vi0) / tbo;
if (vf1 > 0) {
System.out.println("\n\n\n\n================================================\n");
System.out.println("A massa inicial do foguete é de " + mt + " kg");
System.out.println("A massa final do foguete é de " + mft + " kg");
System.out.println("A velocidade final do foguete é " + vf + " m/s");
System.out.println("A aceleração média do foguete é " + a + " m/s²");
System.out.println("O tempo necessário para que o foguete fique sem combustível é de " + tbo + " segundos");
} else {
System.out.println("\n\n\n\n================================================\n");
System.out.println("O foguete não decola");
}
break;
}
break;
}
break;
}
}
}
Última edição por MiW | Dexter em Qua Abr 25, 2012 11:09 pm, editado 1 vez(es)