lunes, 11 de mayo de 2026

02l.- Programación II - Ejercicio tipo Parcial Nro. 2 (3er Ejemplo)

Parcial Nro.2

El ejercito Ucraniano recurre a usted, su misión es programar un dron para bombardear un tren ruso. La inteligencia Ucraniana informó que el general mas sanguinario del ejercito ruso viajará en el tercer vagón del tren. Los espías ubicados en la ciudad de "Jersón" informarán el momento exacto en que el tren comience a moverse. Se desconoce la velocidad del tren, sin embargo sabemos que es constante a lo largo del recorrido. El conductor del tren fija la velocidad en un rango entre  80 y 150 km/hr. En el momento que inicie movimiento el tren usted arrancará un dron con explosivo C4. El dron vuela a velocidad constante de 15 mts/seg. Usted puede programar el dron para que vuele a una altura entre 20 y 80 mts. de forma de que no sea detectado por las defensas rusas. El dron dispone de un radar que detectará la punta del tren cuando se encuentre a 500 mts. de distancia horizontal del dron.


Usted deberá elaborar un programa que determine a partir del momento en que el dron detecta el tren:

1.- Distancia en metros para soltar el explosivo.
2.- Tiempo en segundos para soltar el explosivo.

Es importante que el programa considere que el general ruso viaja en el centro del tercer vagón y el vagón tiene una altura de 2.5 metros, cada vagón mide 10 metros. Se desea minimizar daños colaterales.



Los únicos datos de entrada del programa corresponderán a:

Altura del Dron en Metros.
Velocidad del Tren en Km/hr.

Nota: Utilice gravedad de 9.8 mts/seg2

02k.- Programación II - Ejercicio tipo Parcial Nro. 2 (2do Ejemplo)

Usted trabaja para constructora Sambil. La semana pasada el capataz y los obreros rompieron la guaya de la torre grúa, ellos informan que colocaron una carga de 1500 kg y que la información técnica de la guaya anterior indicaba que la guaya soportaba 1700 kg en equilibrio, sin embargo, la guaya se rompió en el preciso instante que levantaban la carga. Ellos no se explican cuál fue el motivo de este accidente.

Su jefe quiere adquirir una nueva guaya, los suplidores le indican que disponen de guayas que soportan como máximo desde: 1530 kg hasta 2550 kg. Los suplidores indican que ellos prueban un pedazo de la guaya a suministrar en sus almacenes, fijando la guaya al techo y colocándole carga hasta que se rompe.


La grúa puede movilizar la carga en rangos de aceleración desde 1 mts/seghasta los 2.5 mts/seg2.

Su jefe no quiere volver a invertir en otra guaya, en consecuencia, él le solicita a usted que elabore un programa que determine, la cantidad máxima de material que puede subir la grúa y la cantidad máxima de material que puede bajar.

Pista: Recuerde cuando la carga asciende en aceleración constante, la carga se hace más pesada y cuando desciende en el mismo escenario es menos pesada.

Los únicos datos que se ingresarán al programa corresponderán a

a.- La cantidad de masa en Kg. que soporta la guaya adquirida según lo indicado por el fabricante.

b.- Aceleración de subida/bajada de la grúa.

El programa deberá indicar:

a.- Cantidad máxima de material que puede subir la grúa (kg)

b.- Cantidad máxima de material que puede bajar la grúa (kg)

Nota: para todo cálculo requerido use gravedad de 9.8 mts/seg2.

02j.- Programación II - Ejercicio tipo Parcial Nro. 2 (1er Ejemplo)

1.- Usted ha sido contratado como mercenario por la OTAN (Organización del Tratado del Atlántico Norte) para dar apoyo al ejercito Ucraniano. Ellos desean que usted programe un lanzamisiles para que opere sin la presencia de personal, la idea es destruir un sistema ferroviario tomado por ejercito ruso que funciona entre la ciudad de Dnipró y Mariúpol. Esa vía ferroviaria es usada para mover: 

  • Abastecimientos
  • Armamento
  • Militares
La ruta dispone de dos (2) vías ferroviarias paralelas. El ejercito ruso dispone de (2) dos trenes que viajan simultáneamente entre las dos (2) ciudades y por razones logísticas un tren sale de Dnipró y otro de Mariúpol a la misma hora todos los días. 

Un satélite de la OTAN nos puede informar la velocidad de cada tren la cual es constante a lo largo del recorrido. La idea es que usted programe el posicionamiento y disparo de un lanzamisiles con velocidad inicial Vo=1700 mts/seg ubicado a 200km en línea perpendicular sobre la mitad de la línea ferroviaria.

Se requiere destruir ambos trenes en el preciso momento en que se cruzan, debido a que solo se dispone de un disparo dado que los satélites soviéticos reportaran rápidamente la ubicación del lanzamisiles y el mismo será destruido por las defensas rusas.

Usted debe elaborar un programa que determine basado en la velocidad de los trenes (Datos suministrados por el satélite de la OTAN):
  • El punto donde se cruzaran los trenes (tomando como referencia Dnipró) 
  • Angulo de rotación del lanzamisiles, hacia Mariúpol o hacia Dnipró 
  • Angulo de elevación del lanzamisiles 
  • Momento exacto (Segundos) en que usted disparará el lanzamisiles a partir del instante en que salen los trenes. 
Recuerde el único dato de entrada serán las velocidades de los (2) dos trenes.



Use Gravedad de 9.81 mts/seg2

Para una velocidad del tren A de 40 mts/seg y del tren B de 30 mts/seg el programa debería reportar:

a.- Los trenes se cruzan a 228571.43 mts. de Dinipró.
b.- El ángulo de rotación del Lanzamisiles es de θ = 0.141897 radianes / 8.13 deg. hacia Mariúpol.
c.- El ángulo de elevación del lanzamisiles es de β =0.3778 rad / β =21.64 deg.
d.- Debemos disparar el misil a los 5586.43 seg. desde que los trenes salieron de las ciudades.

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.