jueves, 30 de abril de 2026

02i.- Programación II - Ejercicio a trabajar en clase 29 de abril de 2026 (Semestre 2026 - II) - Solución del Profesor

 

SOLUCIÓN

VIDEO EXPLICATIVO


Programa Nro. 1 Método de Iteración

/* Programa que calcula las soluciones para el ejercicio del

   dilema de la faraona, aplicando el método de la iteración

   revisión abril 2026

   elaborado por: Carlos Ferrer

*/   

#include<iostream>

#include<math.h>

#include<locale.h>

using namespace std;

main()

{

double R,g=9.81,m1,m2,p1,p2,Q,t,a; //Variables del ejercicio

double aux; //aceleración auxiliar

setlocale(LC_ALL,"spanish");

//ingresamos datos

cout <<endl<<"Ingrese masa de la caja Nro.1 en kg = "<<endl;

cin >>m1;

cout <<endl<<"Ingrese la aceleración del sistema en m/seg2 = "<<endl;

cin >>a;

cout <<endl<<"Ingrese la relación entre m1 y m2 (m2 = m1 x R) = "<<endl;

cin >>R;

m2=m1*R;

p1=m1*g;

p2=m2*g;

// calculamos tensión

t= m1*a+p1*sin(20*M_PI/180)+p1*cos(20*M_PI/180)*0.12;

// iteramos

while ((aux-a)<-0.0001 or (aux-a)>0.0001 )

{

Q=Q+0.001;

aux= (p2*sin(Q*M_PI/180)-p2*cos(Q*M_PI/180)*0.12-t)/m2;

//evaluamos el caso de no obtener solución

if (Q>90)

{

cout <<endl<<"No existe un ángulo Q que mueva el sistema en ese sentido"<<endl;

goto fin;

}

}

//presentamos resultados

cout <<endl<<"El angulo Q corresponde a = "<<Q<<" Grados"<<endl;

fin:

cout <<endl<<"La tensión de la cuerda es igual a = "<<t<<" Newtons"<<endl;

cout <<endl<<"La distancia BC en metros = "<<1500*sin(20*M_PI/180)/sin(Q*M_PI/180)<<endl;

if (t>600)

{

cout <<endl<<"La tensión es superior a la que soporta la cuerda (600 newtons) ";

cout <<endl<<"por favor no implemente el sistema!!!! "<<endl;

}

}

Programa Nro. 1 Método Matemático

/* Programa que calcula las soluciones para el ejercicio del

   dilema de la faraona, aplicando el método matemático

   revisión abril 2026

   elaborado por: Carlos Ferrer

*/   

#include<iostream>

#include<math.h>

#include<locale.h>

using namespace std;


main()

{

double R,g=9.81,m1,m2,p1,p2,Q=100,t,a,aux,x;

double Q1,Q2; //Ángulos a obtener por la resolvente

double a1,b1,c1; //Datos de la resolvente

setlocale(LC_ALL,"spanish");

// Ingresamos datos iniciales

cout <<endl<<"Ingrese masa de la caja Nro.1 en kg = "<<endl;

cin >>m1;

cout <<endl<<"Ingrese la aceleración del sistema en m/seg2 = "<<endl;

cin >>a;

cout <<endl<<"Ingrese la relación entre m1 y m2 (m2 = m1 x R) = "<<endl;

cin >>R;

m2=m1*R;

p1=m1*g;

p2=m2*g;


    // Calculamos tensión

t= m1*a+p1*sin(20*M_PI/180)+p1*cos(20*M_PI/180)*0.12;

x= t+m2*a;

// Determinamos las constantes de la resolvente

a1=pow(p2,2)*pow(0.12,2)+pow(p2,2);

b1=2*p2*0.12*x;

c1=pow(x,2)-pow(p2,2);

//Calculamos los dos ángulos posibles

Q1=(acos((-b1+sqrt(pow(b1,2)-4*a1*c1))/(2*a1)))*180/M_PI;

Q2=(acos((-b1-sqrt(pow(b1,2)-4*a1*c1))/(2*a1)))*180/M_PI;

//Determinamos el ángulo correcto

if(Q1>0 and Q1<=90)

{

Q=Q1;

}

if(Q2>0 and Q2<=90)

{

Q=Q2;

}

if(Q==100)

{

cout <<endl<<"No existe un angulo Q que mueva el sistema en ese sentido"<<endl;

goto fin;

}

//terminamos de presentar los resultados


cout <<endl<<"El angulo Q corresponde a = "<<Q<<" Grados"<<endl;

fin:

cout <<endl<<"La tensión de la cuerda es igual a = "<<t<<" Newtons"<<endl;

cout <<endl<<"La distancia BC en metros = "<<1500*sin(20*M_PI/180)/sin(Q*M_PI/180)<<endl;

if (t>600)

{

cout <<endl<<"La tensión es superior a la que soporta la cuerda (600 newtons) ";

cout <<endl<<"por favor no implemente el sistema!!!! "<<endl;

}

}







jueves, 23 de abril de 2026

02h.- Programación II - Ejercicio a trabajar en clase 23 de abril de 2026 (Semestre 2026 - II) - Solución del Profesor

Rápidos y Furiosos X


Un tanque perteneciente a Dante Reyes archienemigo de Dominic Toretto trata de impedir que Toretto haga llegar suministros: Comida, agua, armamento, medicinas, etc.  a sus compañeros que se encuentran atrapados en un refugio en la cordillera de los Alpes.

El tanque de Dante Reyes puede acercarse a la montaña hasta distancias superiores a los 1400 mts. Esto dado que Letty y Román (Novia y amigo de Dominic) colocaron minas explosivas en el área cercana a la montaña de forma de impedir que se acerque el  tanque de Reyes. En consecuencia, sistemáticamente el tanque se posiciona a distancias cercanas al área minada y bombardea la parte trasera de la montaña, la cual es la zona por donde Dominic piensa pasar para trasladar los suministros.

El tanque generalmente dispone de un radio de disparo comprendido entre los ángulos θ1 y θ2, cuando se posiciona el cañón entre esos dos ángulos todos los disparos caen en el lado de la montaña donde se reciben los suministros.

En la medida que el tanque se aleja de la montaña los ángulos θ1 y θ2 tienden a igualarse. Si el tanque se aleja mucho todos los disparos colisionaran en la montaña o terminaran cayendo antes de ella.

Recuerde lo máximo que puede acercarse el tanque al eje central de la montaña es a 1400 mts. El tanque se posiciona sistematicamente en ubicaciones distintas: 1450 mts, 1500 mts, etc.



Su programa deberá:

1.- Indicar en caso de existir el rango del ángulo con el cual el tanque bombardea el lado contrario. (mínimo θ1 - máximo θ2).

2.- Indicar el rango del área que puede ser bombardeada con el tanque (mínima X1 - máxima X2) según como aparece representado en dibujo.

3.- Indique cual mensaje que debe transmitirle el programa a Dominic, considere que el camión mide 5 mts de ancho x 5 mts de alto.

4.- El único dato de entrada al programa es la distancia X desde el eje central de la montaña hasta el tanque. Este dato es conocido gracias a un radar ubicado en el refugio.

Nota: Para cualquier cálculo considere la gravedad de 9.8 mts/s2. Considere para todo cálculo la altura del cañón del tanque en 2.2 mts.

Indique: θ1 en grados , θ2 en grados, X1 en mts, X2 en mts y recomendación del programa para Dominic Toretto para las siguientes ubicaciones del tanque: 4000 mts, 4200 mts y 4500 mts.


Programa en C++

/*Rápidos y Furiosos - semestre 2026-II

Programación II

Elaborado Por Carlos Ferrer

Rev. 23 de abril de 2026

*/


#include <iostream>

#include <math.h>

using namespace std;

int main() 

{

// Distancia del tanque a la parte alta de la montaña en horizontal

double x;

// Elementos de la resolvente

double a,b,c; 

// Tangente de los ángulos

double tQ1;

double tQ2;

// Ángulos en radianes

double Q1_Rad;

double Q2_Rad;

// Velocidad Inicial

double vo=250;

//Tiempo de vuelo de alcance máximo conociendo el ángulo

double tv1a, tv1b, tv2a, tv2b, tv1, tv2;

// Distancias de cobertura de ataque del tanque

double x1,x2;


do 

   { 

   cout <<"Ingrese la distancia del tanque (Mayor de 1400 mts)= ";

   cin >>x;

    }

while (x<1400);

// Determinamos los ángulos

a=4.9*pow(x,2)/pow(vo,2);

b=-x;

c=1800-2.2+4.9*pow(x,2)/pow(vo,2);

tQ1=(-b+sqrt(pow(b,2)-4*a*c))/(2*a);

tQ2=(-b-sqrt(pow(b,2)-4*a*c))/(2*a);    

Q1_Rad=atan(tQ1);

Q2_Rad=atan(tQ2);


//Determinamos el tiempo de vuelo del recorrido completo para el primer ángulo y X1

a=-4.9;

b= vo*sin(Q1_Rad);

c=2.2;

tv1a=(-b+sqrt(pow(b,2)-4*a*c))/(2*a);

tv1b=(-b-sqrt(pow(b,2)-4*a*c))/(2*a);

if (tv1a>0)

{

tv1=tv1a;

}

else

{

tv1=tv1b;

}

x1=vo * cos(Q1_Rad)*tv1-x;

//Determinamos el tiempo de vuelo del recorrido completo para el 2do ángulo y X2

a=-4.9;

b= vo*sin(Q2_Rad);

c=2.2;

tv2a=(-b+sqrt(pow(b,2)-4*a*c))/(2*a);

tv2b=(-b-sqrt(pow(b,2)-4*a*c))/(2*a);

if (tv2a>0)

{

tv2=tv2a;

}

else

{

tv2=tv2b;

}

x2=vo * cos(Q2_Rad)*tv2-x;

// Presentamos los resultados

cout <<"El angulo menor para pasar el cerro es = "<<Q2_Rad*180/M_PI<<endl;

cout <<"El angulo mayor para pasar el cerro es = "<<Q1_Rad*180/M_PI<<endl;

cout <<"El tanque puede Bombardear el area entre "<<x1<<" y "<<x2<<" mts"<<endl<<endl;


if (x1<1805 and x2>1805)

{

cout <<"Comuniquense urgente con Dominic e indiquenle que no se acerque dado que corre peligro"<<endl<<endl;

}

else

{

cout <<"Comuniquense urgente con Dominic e indiquenle que traiga el camión de inmediato"<<endl<<endl;

}

system ("pause");

}

Programa en Python



# Rápidos y Furiosos - semestre 2026-II
# Programación II
# Elaborado Por Carlos Ferrer
# Rev. 26 de abril de 2025

import math
import os

os.system("cls")

# Distancia del tanque a la parte alta de la montaña
# en horizontal
x1=0
x2=0
x = float(input("Ingrese la distancia del tanque (Mayor de 1400 mts)= "))
while x < 1400:
    x = float(input("Ingrese la distancia del tanque (Mayor de 1400 mts)= "))

# Velocidad Inicial

vo = 250

# Elementos de la resolvente

a = 4.9 * x**2 / vo**2
b = -x
c = 1800 - 2.2 + 4.9 * x**2 / vo**2

# Tangentes de los angulos

if ((b**2 - 4*a*c)<0):
    no_pasa=True
else:
    no_pasa=False  
    tQ1 = (-b + math.sqrt(b**2 - 4*a*c)) / (2*a)
    tQ2 = (-b - math.sqrt(b**2 - 4*a*c)) / (2*a)
    # Angulos
    Q1_Rad = math.atan(tQ1)
    Q2_Rad = math.atan(tQ2)
    # Calculos de X1 y X2
    a = -4.9
    b = vo * math.sin(Q1_Rad)
    c = 2.2
    tv1a = (-b + math.sqrt(b**2 - 4*a*c)) / (2*a)
    tv1b = (-b - math.sqrt(b**2 - 4*a*c)) / (2*a)
    if tv1a > 0:
        tv1 = tv1a
    else:
        tv1 = tv1b
    x1 = vo * math.cos(Q1_Rad) * tv1 - x
    a = -4.9
    b = vo * math.sin(Q2_Rad)
    c = 2.2
    tv2a = (-b + math.sqrt(b**2 - 4*a*c)) / (2*a)
    tv2b = (-b - math.sqrt(b**2 - 4*a*c)) / (2*a)
    if tv2a > 0:
        tv2 = tv2a
    else:
        tv2 = tv2b
    x2 = vo * math.cos(Q2_Rad) * tv2 - x

# Presentación de resultados
    print("\n")
    print("El angulo menor para pasar el cerro es =", Q2_Rad*180/math.pi)
    print("El angulo mayor para pasar el cerro es =", Q1_Rad*180/math.pi)
    print("El tanque puede Bombardear el área entre", x1, "y", x2, "mts")

if ((x1 < 1805 and x2 > 1805) and (no_pasa==False)):
    print("\n")
    print("Comuníquense urgente con Dominic e indíquenle que no se acerque dado que corre peligro","\n")
else:
    print("\n")
    print("Comuníquense urgente con Dominic e indíquenle que traiga el camión de inmediato","\n")

02g.- Programación II - Ejercicio a trabajar en clase 23 de abril de 2026 (Semestre 2026 - II)

 Rápidos y Furiosos X

Un tanque perteneciente a Dante Reyes archienemigo de Dominic Toretto trata de impedir que Toretto haga llegar suministros: Comida, agua, armamento, medicinas, etc.  a sus compañeros que se encuentran atrapados en un refugio en la cordillera de los Alpes.

El tanque de Dante Reyes puede acercarse a la montaña hasta distancias superiores a los 1400 mts. Esto dado que Letty y Román (Novia y amigo de Dominic) colocaron minas explosivas en el área cercana a la montaña de forma de impedir que se acerque el  tanque de Reyes. En consecuencia, sistemáticamente el tanque se posiciona a distancias cercanas al área minada y bombardea la parte trasera de la montaña, la cual es la zona por donde Dominic piensa pasar para trasladar los suministros.

El tanque generalmente dispone de un radio de disparo comprendido entre los ángulos θ1 y θ2, cuando se posiciona el cañón entre esos dos ángulos todos los disparos caen en el lado de la montaña donde se reciben los suministros.

En la medida que el tanque se aleja de la montaña los ángulos θ1 y θ2 tienden a igualarse. Si el tanque se aleja mucho todos los disparos colisionaran en la montaña o terminaran cayendo antes de ella.

Recuerde lo máximo que puede acercarse el tanque al eje central de la montaña es a 1400 mts. El tanque se posiciona sistemáticamente en ubicaciones distintas: 1450 mts, 1500 mts, etc.



Su programa deberá:

1.- Indicar en caso de existir el rango del ángulo con el cual el tanque bombardea el lado contrario. (mínimo θ1 - máximo θ2).

2.- Indicar el rango del área que puede ser bombardeada con el tanque (mínima X1 - máxima X2) según como aparece representado en dibujo.

3.- Indique cual mensaje que debe transmitirle el programa a Dominic, considere que el camión mide 5 mts de ancho x 5 mts de alto.

4.- El único dato de entrada al programa es la distancia X desde el eje central de la montaña hasta el tanque. Este dato es conocido gracias a un radar ubicado en el refugio.

Nota: Para cualquier cálculo considere la gravedad de 9.8 mts/s2. Considere para todo cálculo la altura del cañón del tanque en 2.2 mts.

Indique: θ1 en grados , θ2 en grados, X1 en mts, X2 en mts y recomendación del programa para Dominic Toretto para las siguientes ubicaciones del tanque: 4000 mts, 4200 mts y 4500 mts.

miércoles, 22 de abril de 2026

02f.- Programación II - Ejercicio a desarrollar 22 de abril de 2026 (Semestre 2026 - II) - Solución del Profesor

  Nuestro ejército se encuentra diezmado por la acción de un tanque enemigo, nuestro capitán en una acción desesperada planea arrojar un vehículo cargado de explosivos desde una rampa ubicada en la cima de una montaña de 600 mts de alto.






El enemigo no espera un ataque aéreo, nuestra base dispone de un radar lo suficientemente preciso para indicarnos la distancia existente entre la montaña y el tanque enemigo.

El vehículo se modificará para que trabaje a una velocidad de 180 km/hr o lo que es lo mismo 50 m/s. La modificación consiste en trabar la dirección y el acelerador para no requerir ningún conductor abordo.

El capitán conoce sus habilidades en programación y lo ha asignado a usted para que elabore un programa que permita determinar el ángulo (θ) de forma de que el carro bomba impacte al tanque.

La supervivencia del batallón depende de usted. Solo  contamos con un vehículo con explosivos. La base informará el momento en que el tanque se detiene a disparar, esto dura alrededor de 25 seg... por lo tanto es necesario que actuemos de la forma lo mas rápida y precisa que nos sea posible.

El vehículo  tarda 10 seg en salir de la rampa. Ese tiempo sumado al tiempo de vuelo debe ser menor a los 25 seg que permanece inmóvil el tanque, de lo contrario fallaremos en el intento de destruirlo.

La vida de los soldados en combate dependen de usted!!



Respuesta.
Para una distancia d=378 mts el ángulo (θ) = 30



Solución






                                         



                                         Programa

// Programa elaborado por Carlos Ferrer
// Abril - 2022
// Aplicaciones de la física Ejercicio Carro Bomba


#include <iostream>
#include <math.h>
using namespace std;
int main()

{

double  Q1=0,Q2=0,X; 
// Q1 y Q2 = los dos ángulos que permiten el mismo alcance horizontal 
// X = posición del tanque en momento que detiene su marcha (información del radar) 

 
double tv1=0, tv2=0, tvf=0;
 
    // tv1= tiempo de vuelo para Q1
    // tv2= tiempo de vuelo para Q2
    // tvf= tiempo de vuelo final (el menor de los dos)

double g=9.8, Yo=600, Vo=50; 
 
//g=gravedad Yo=altura de la montaña Vo= Velocidad inicial carro bomba
    
double a=0,b=0,c=0; 
//a,b,c = términos de la ecuación de 2do grado        
double t1=0,t2=0; 
//Resultados de la resolvente       

system("cls");
//para limpiar la pantalla negra (Consola)
 
cout<<"Ingrese distancia del tanque segun radar (mts) = ";
cin>>X;
cout <<endl;

a= -g*pow(X,2)/(2*pow(Vo,2)); 
b= X;
c= Yo-g*pow(X,2)/(2*pow(Vo,2));
    
t1=(-b+sqrt(pow(b,2)-4*a*c))/(2*a);
t2=(-b-sqrt(pow(b,2)-4*a*c))/(2*a);
 
Q1=atan(t1);
Q2=atan(t2);
 
 
tv1= X/(50*cos(Q1));
tv2= X/(50*cos(Q2));
 
Q1=Q1*180/M_PI;
Q2=Q2*180/M_PI;
 
/*Evaluamos el resultado e informamos al soldado que posicionara la rampa y soltara el carro. La función isnan chequea que el dato sea del tipo nan en ese caso el carro esta fuera de alcance*/

if ((isnan(Q1)) or (isnan(Q2))) 
{
tvf=100;
goto final;
}
else
{
cout <<"Para la distancia de "<<X<<" mts. existen dos angulos que nos permiten impactar el tanque"<<endl;
cout <<"cada uno de los angulos genera un tiempo de vuelo diferente:"<<endl<<endl;
cout <<"Angulo Nro1 = "<<Q1<<" deg => Tiempo de vuelo Nro1 = "<<tv1<<" seg"<<endl;
cout <<"Angulo Nro2 = "<<Q2<<" deg => Tiempo de vuelo Nro2 = "<<tv2<<" seg"<<endl<<endl;
cout <<"En consecuencia debemos posicionar la rampa en un angulo de ";
}

if (tv1<=tv2)
  {
   cout<<Q1<<" deg"<<endl;
  cout<<"con lo cual impactariamos el tanque a los "<<tv1+10<<" seg ("<<tv1<<" seg + 10 seg)"<<endl<<endl;
  tvf=tv1;
  }
else
    {
   cout<<Q2<<" deg"<<endl;
  cout<<"con lo cual impactariamos el tanque a los "<<tv2+10<<" seg ("<<tv2<<" seg + 10 seg)"<<endl<<endl;
  tvf=tv2;
  }
cout<<"Este angulo nos permite atacar el tanque lo mas rapido posible antes de que cambie de posicion"<<endl<<endl;

// posicionar la rampa y soltar el carro tarda 10 seg y el tanque solo queda fijo por 25 seg
final:
 if (tvf+10<25)
  {
  cout<<"Posicione rampa y suelte el carro de inmediato!!!"<<endl; 
  }
else
  {
  cout <<endl<<"Espere tanque en movimiento o fuera de nuestro alcance (Alcance maximo de 609.2614 mts)"<<endl; 
  }
 
cout<<""<<endl<<endl;
system("pause");

}

02d.- Programación II - Ejercicio a desarrollar 22 de abril de 2026 (Semestre 2026 - II)

 Nuestro ejército se encuentra diezmado por la acción de un tanque enemigo, nuestro capitán en una acción desesperada planea arrojar un vehículo cargado de explosivos desde una rampa ubicada en la cima de una montaña de 600 mts de alto.






El enemigo no espera un ataque aéreo, nuestra base dispone de un radar lo suficientemente preciso para indicarnos la distancia existente entre la montaña y el tanque enemigo.

El vehículo se modificará para que trabaje a una velocidad de 180 km/hr o lo que es lo mismo 50 m/s. La modificación consiste en trabar la dirección y el acelerador para no requerir ningún conductor abordo.

El capitán conoce sus habilidades en programación y lo ha asignado a usted para que elabore un programa que permita determinar el ángulo (θ) de forma de que el carro bomba impacte al tanque.

La supervivencia del batallón depende de usted. Solo  contamos con un vehículo con explosivos. La base informará el momento en que el tanque se detiene a disparar, esto dura alrededor de 25 seg. por lo tanto es necesario que actuemos de la forma lo mas rápida y precisa que nos sea posible.

El vehículo tarda 10 seg en salir de la rampa. Este tiempo corresponde al tiempo de posicionamiento de la rampa en el ángulo correcto + el tiempo de recorrido del vehículo sobre la rampa.

El tiempo de 10 seg sumado al tiempo de vuelo debe ser menor a los 25 seg que permanece inmóvil el tanque, de lo contrario fallaremos en el intento de destruirlo.

Usted ingresará al programa la distancia en la cual el tanque se encuentra de la montaña (información del radar) el programa deberá calcular el ángulo de la rampa para esa distancia, recuerde el tanque se detiene solo por 25 seg.

La vida de los soldados en combate dependen de usted!!