miércoles, 13 de mayo de 2026

02o.- Programación II - Parcial Nro. 2 (Semestre 2026 - II) - Solución del Profesor

 


Solución



Programa Nro. 1 Por Iteración

/* Programa de resolución del Parcial Nro. 2 "Game of Thrones"

   aplicando la ecuación obtenida con el método de la iteración
   rev. Mayo 2026
   Elaborado por: Carlos Ferrer
   */

#include<iostream>
#include<math.h>
#include<locale.h>
using namespace std;

main ()
{
double vo, h, g=9.8;
double Q, x;
double x2; // x de iteración
setlocale(LC_ALL,"spanish");
//Ingresamos datos
    do
{
cout <<"Ingrese altura de ubicación de la catapulta (100-900 mts) = "<<endl;
cin >>h;
if (h<100 or h>900)
   {
    cout <<endl<<"Valor ingresado de "<<h<<" mts"<<" fuera de rango" <<endl;
cout <<"El valor debe estar el rango de 100 a 900 mts! "<<endl<<endl;
   }
}
while (h<100 or h>900);
    do
{
cout <<"Ingrese la velocidad inicial de la catapulta (40-90 mts/seg) = "<<endl;
cin >>vo;
if (vo<40 or vo>90)
   {
    cout <<endl<<"Valor ingresado de "<<vo<<" mts/seg"<<" fuera de rango" <<endl;
cout <<"El valor debe estar el rango de 40 a 90 mts/seg! "<<endl<<endl;
   }
}
while (vo<40 or vo>90);
// Iteramos Q hasta conseguir X(max)
    
Q=0;
    x=vo*cos(Q)*(vo*sin(Q)+sqrt(pow(vo,2)*pow(sin(Q),2)+2*g*h))/g;
    while(Q<90)
    {
    Q=Q+0.001;
x2=vo*cos(Q*M_PI/180)*(vo*sin(Q*M_PI/180)+sqrt(pow(vo,2)*pow(sin(Q*M_PI/180),2)+2*g*h))/g;
if (x2>x)
{
x=x2;
}
else
{
break;
}
}
    
// Presentamos resultados
cout <<endl<<"Q= "<<Q<<" grados"<<endl;
    cout <<endl<<"X(max)= "<<x<<" mts"<<endl;
if (x<1100 or x>1200 )
{
cout <<endl<<"Favor no proceda a liberar la catapulta dado que"<<endl;
cout <<"la carga caerá fuera del rango establecido de 1100 a 1200 mts"<<endl;
}
    else
    {
cout <<endl<<"Favor proceda a liberar la catapulta dado que"<<endl;
cout <<"la carga caerá dentro del rango establecido de 1100 a 1200 mts"<<endl;
cout <<"exactamente a "<<x<<" mts."<<endl;
}
}

Programa Nro. 2 Por Derivación (Optimización)


/* Programa de resolución del Parcial Nro. 2 "Game of Thrones"
   aplicando la ecuación obtenida con el método de la optimización
   (La derivada)
   rev. Mayo 2026
   Elaborado por: Carlos Ferrer
   */

#include<iostream>
#include<math.h>
#include<locale.h>
using namespace std;

main ()
{
double vo, h, g=9.8;
double Q, x;
setlocale(LC_ALL,"spanish");
//Ingresamos datos
    do
{
cout <<"Ingrese altura de ubicación de la catapulta (100-900 mts) = "<<endl;
cin >>h;
if (h<100 or h>900)
   {
    cout <<endl<<"Valor ingresado de "<<h<<" mts"<<" fuera de rango" <<endl;
cout <<"El valor debe estar el rango de 100 a 900 mts! "<<endl<<endl;
   }
}
while (h<100 or h>900);
    do
{
cout <<"Ingrese la velocidad inicial de la catapulta (40-90 mts/seg) = "<<endl;
cin >>vo;
if (vo<40 or vo>90)
   {
    cout <<endl<<"Valor ingresado de "<<vo<<" mts/seg"<<" fuera de rango" <<endl;
cout <<"El valor debe estar el rango de 40 a 90 mts/seg! "<<endl<<endl;
   }
}
while (vo<40 or vo>90);
    //Calculamos Q en radianes
    
Q=asin(vo*sqrt(2*(g*h+pow(vo,2)))/(2*(g*h+pow(vo,2))));
        
    // Calculamos x máxima
    
    x=vo*cos(Q)*(vo*sin(Q)+sqrt(pow(vo,2)*pow(sin(Q),2)+2*g*h))/g;
    
// Presentamos resultados
cout <<endl<<"Q= "<<Q*180/M_PI<<" grados"<<endl;
    cout <<endl<<"X(max)= "<<x<<" mts"<<endl;
if (x<1100 or x>1200 )
{
cout <<endl<<"Favor NO proceda a liberar la catapulta dado que"<<endl;
cout <<"la carga caerá fuera del rango establecido de 1100 a 1200 mts"<<endl;
}
    else
    {
cout <<endl<<"Favor proceda a liberar la catapulta dado que"<<endl;
cout <<"la carga caerá dentro del rango establecido de 1100 a 1200 mts"<<endl;
cout <<"exactamente a "<<x<<" mts."<<endl;
      }
}

Éxitos 




No hay comentarios.:

Publicar un comentario