Usted debe elaborar un programa que permita destruir la bomba enemiga considerando que las siguientes condiciones que reporta el radar pueden variar:
Datos de entrada al programa proveniente del radar de la base antiaérea.
- Velocidad del avión (En el momento que suelta la bomba)
- Altura de vuelo del avión (En el momento que se suelta la bomba -superior a los 2000 mts)
- Distancia horizontal del avión al cañón antiaéreo (En el momento que se suelta la bomba).
Para todo cálculo que lo requiera utilice 9.8 mts/seg2 como valor de la gravedad
El programa deberá reportar:
(1) Velocidad de disparo del cañón antiaéreo (mts/seg)
(2) Angulo de disparo del Cañón (En Radianes y Grados)
La seguridad de la instalación depende de ustedes!!!
Solución
Programa en C++
// Programa para el calculo del disparo del cañón antibombas
// Catedra Programación II - Profesor Carlos Ferrer
// Nov- 2024
#include <iostream>
#include <math.h>
#include <locale.h>
using namespace std;
main(){
setlocale(LC_ALL, "spanish"); //Se coloca el lenguaje en español
float vom=0,Q=0;
// las dos variables que queremos calcular vom = Velocidad inicial del misil Q= Angulo de disparo
double da=0,v=0,h=0;
/*
Datos que suministra el sistema de radar da = distancia en X del lanzamisiles al avion cuando suelta la bomba
v = Velocidad del avión
h = Altura del avión cuando suelta la carga
*/
double d=0,tvb=0,tvm=0,h_impacto=1600;
/*
d = desplazamiento en x de la bomba hasta que su altura es de 1600 metros,
tvb = tiempo de vuelo de la bomba hasta 1600 mts
tvm = tiempo de vuelo del misil
h_impacto = altura a la cual impactara el misil con la bomba
*/
inicio:
system("cls");//para limpiar la consola
cout<<"El punto de referencia del cañón es cero(0), si se indica valores negativos"<<endl;
cout<<"es porque el avión soltó la bomba esta detrás del cañón, valores positivos indican que el"<<endl;
cout<<"avión soltó la carga delante del cañón, cero (0) indicaría que soltó la carga exactamente encima del cañón"<<endl<<endl;
cout<<"El radar reporto que la distancia en X del lanza misiles al avión (mts) es = ";cin>>da;
cout<<"El radar reporto que la velocidad del avión (mts/s) es = ";cin>>v;
cout<<"El radar reporto que la Altura de vuelo del avion (mts) es = ";cin>>h;
tvb=sqrt((h-h_impacto)/4.9); //Calculamos tiempo de vuelo bomba hasta 1600 mts
d=v*tvb; //Calculamos desplazamiento en X de la bomba hasta alcanzar la altura de 1600 mts
// Calculamos Tiempo de vuelo del misil hasta una altura de 1600 mts
tvm=tvb-5;
//Calculamos Velocidad inicial del misil
vom=sqrt(pow((h_impacto/tvm+4.9*tvm),2)+(pow((da+d),2)/pow(tvm,2)));
Q=acos((da+d)/(tvm*vom)); // Calculamos ángulo de elevación del lanzamisiles en radianes
Q=Q*180/3.141592; //Convertimos el ángulo de rad a Deg.
// Presentamos los resultados
if (vom>=100000)
{
cout <<endl<<"La bomba lleva una trayectoria que esta fuera del alcance del cañón."<<endl;
cout <<"La explotara en una zona lejana al campamento"<<endl;
}
else
{
cout <<endl<<"La velocidad a la cual debe dispararse el misil es (mts/s) = "<<vom<<endl;
cout<<"El ángulo con respecto al piso del lanzamisiles es (deg) = "<<Q<<"°"<<endl;
}
system("pause");
goto inicio;
}
Programa en Python
# Programa para el calculo del disparo del cañón antibombas
# Catedra Programación II - Profesor Carlos Ferrer
#Nov- 2024
import math
import os
# las dos variables que queremos calcular vom = Velocidad inicial del misil Q= Angulo de disparo
vom = 0
Q = 0
# Datos que suministra el sistema de radar
# da = distancia en X del lanzamisiles al avion cuando suelta la bomba
# v = Velocidad del avión
# h = Altura del avión cuando suelta la carga
da = 0
v = 0
h = 0
# d = desplazamiento en x de la bomba hasta que su altura es de 1600 metros,
# tvb = tiempo de vuelo de la bomba hasta 1600 mts
# tvm = tiempo de vuelo del misil
# h_impacto = altura a la cual impactara el misil con la bomba
d = 0
tvb = 0
tvm = 0
h_impacto = 1600
while True:
os.system("cls")
print("El punto de referencia del cañón es cero(0), si se indica valores negativos")
print("es porque el avión soltó la bomba esta detrás del cañón, valores positivos indican que el")
print("avión soltó la carga delante del cañón, cero (0) indicaría que soltó la carga exactamente encima del cañón")
print()
da = float(input("El radar reporto que la distancia en X del lanza misiles al avión (mts) es = "))
v = float(input("El radar reporto que la velocidad del avión (mts/s) es = "))
h = float(input("El radar reporto que la Altura de vuelo del avion (mts) es = "))
# Calculamos tiempo de vuelo bomba hasta 1600 mts
tvb = math.sqrt((h - h_impacto) / 4.9)
# Calculamos desplazamiento en X de la bomba hasta alcanzar la altura de 1600 mts
d = v * tvb
# Calculamos Tiempo de vuelo del misil hasta una altura de 1600 mts
tvm = tvb - 5
# Calculamos Velocidad inicial del misil
vom = math.sqrt(pow((h_impacto / tvm + 4.9 * tvm), 2) + (pow((da + d), 2) / pow(tvm, 2)))
# Calculamos ángulo de elevación del lanzamisiles en radianes y convertimos a grados
Q = math.acos((da + d) / (tvm * vom))
Q = Q * 180 / 3.141592
# Presentamos Resultados
if vom >= 100000:
print()
print("La bomba lleva una trayectoria que esta fuera del alcance del cañón.")
print("La explotara en una zona lejana al campamento")
else:
print()
print("La velocidad a la cual debe dispararse el misil es (mts/s) = ", vom)
print("El ángulo con respecto al piso del lanzamisiles es (deg) = ", Q, "°")
os.system("pause")




No hay comentarios.:
Publicar un comentario