jueves, 1 de octubre de 2026

02b.- Programación II - Actividad a desarrollar clase 01 de Oct 2026 - Solución del Profesor

Video Explicativo


La Gobernación de Miranda desea instalar semáforos dentro de los túneles del edo. Miranda de forma de alertar accidentes o trabajos dentro de los mismo, los semáforos tienen una masa 12.2 kg aproximadamente. Estos semáforos se fijaran al techo de la entrada de los túneles con un sistema de soporte como se muestra en la figura:



Para fijar la estructura al techo se empleara dos segmentos independiente de guaya sobrante de otros proyectos. Cada segmento de guaya solo soporta 10 kg de masa. Elabore un programa que determine cual rango puedo reducir o aumentar el segmento X sin que las guayas terminen rompiéndose. Adicionalmente informe los valores de los ángulos Alfa y Beta para esas longitudes límites. 

Nota la cadena soporta masas de hasta 50 kg.

Solución

Analizamos los diagramas de cuerpo libre, se puede establecer lo siguiente considerando que el sistema esta en equilibrio:


El sistema es representado por dos (2) ecuaciones de cuatro (4) incógnitas (T1, T2, α y β). 

Del triangulo que conforma las dos (2) cuerdas y el techo conocemos dos (2) segmentos: el techo = 2 mts y la cuerda que absorbe la tensión T2 = 1.5 mts. Se puede desarrollar un programa en el cual se ingrese la dimensión de la cuerda que soporta la tensión T1 (segmento X) y así obtener los ángulos α y β usando la ley del coseno, por lo tanto podemos establecer:

X2 = (1.5)2 + (2)2 – 2(1.5)(2) cos β => 

β=arccos[(X2 - (1.5)2 - (2)2)/( – 2(1.5)(2))]

(1.5)2 = X2+ (2)2 – 2(X)(2) cos α => 

α =arccos[((1.5)2 - X2 - (2)2)/( – 2(X)(2))]

Al conocer α y β podemos determinar las tensiones T1 y T2 resolviendo el sistema de ecuaciones de dos incógnitas:

T2 cos β = T1 cos α => T2 = T1 (cos α / cos β) en consecuencia podemos sustituir T2 en la otra ecuación:

T1 seno α + T2 seno β = 122 newton => 

T1 seno α + T1 (seno β x cos α / cos β) = 122 newtons =>

T1 = [122 newton/( seno α + (seno β x cos α / cos β)]

Al obtener T1 determinamos también T2 y evaluamos si alguna de las dos NO soporta 10 kg x 10 mt/seg2 o lo que es lo mismo 100 newtons.

A partir de allí podemos iterar hasta obtener las medidas limites del segmento X. 


Programa (C++)

/* Programa para determinar los rangos limites del segmento

X en cual la estructura soportará el peso del semáforo según

la figura.

Elaborado por Carlos Ferrer

Rev. Oct 2024

*/

#include<iostream>

#include<math.h>

using namespace std;

main()

{

double beta=0,alfa=0; //Ángulos

double x,t1=0,t2=0; //Segmento X y tensiones t1 y t2

double x_menor,x_mayor; //limites mayor y menor del segmento X

double beta_mayor,beta_menor; //limites mayor y menor del ángulo beta

double alfa_mayor,alfa_menor; //limites mayor y menor del ángulo alfa


/*iteramos y calculamos los ángulos y las tensiones al 

ampliar el segmento x*/

x=1.5; //longitud inicial

while (t2<100)

{

x=x+0.001;

beta=acos((pow(2,2)+pow(1.5,2)-pow(x,2))/(2*1.5*2));

alfa=acos((pow(2,2)+pow(x,2)-pow(1.5,2))/(2*x*2));

t1= 122/(sin(alfa)+sin(beta)*cos(alfa)/cos(beta));

t2=t1*cos(alfa)/cos(beta);

}

x_mayor=x;

beta_mayor=beta*180/M_PI;

alfa_mayor=alfa*180/M_PI;


/*iteramos y calculamos los ángulos y las tensiones al 

reducir el segmento x*/

x=1.5;

while(t1<100)

{

x=x-0.001;

beta=acos((pow(2,2)+pow(1.5,2)-pow(x,2))/(2*1.5*2));

alfa=acos((pow(2,2)+pow(x,2)-pow(1.5,2))/(2*x*2));

t1= 122/(sin(alfa)+sin(beta)*cos(alfa)/cos(beta));

t2=t1*cos(alfa)/cos(beta);

}

x_menor=x;

beta_menor=beta*180/M_PI;

alfa_menor=alfa*180/M_PI;

//presentamos los resultados

cout <<"La longitud minima que puede disminuir la guaya X corresponde a = "<<x_menor<<" mts"<<endl; 

cout <<"lo cual ocurre cuando alfa = "<<alfa_menor<<" deg y beta = "<<beta_menor<<endl<<endl; 

cout <<"La longitud maxima que puede aumentar la guaya X corresponde a = "<<x_mayor<<" mts"<<endl; 

cout <<"lo cual ocurre cuando alfa = "<<alfa_mayor<<" deg y beta = "<<beta_mayor<<endl<<endl; 

system ("pause");

}


Programa (Python)


# Programa para determinar los rangos limites del segmento # X en cual la estructura soportará el peso del semáforo según # la figura. # Elaborado por Carlos Ferrer # Rev. Oct 2024

import math
import os
os.system("cls")
beta = 0  # Ángulo
alfa = 0  # Ángulo
x = 1.5  # longitud inicial
t1 = 0
t2 = 0  # tensiones t1 y t2

# Iteramos y calculamos los ángulos y las tensiones al ampliar el segmento x
while t2 < 100:
    x += 0.001
    beta = math.acos((2**2 + 1.5**2 - x**2) / (2 * 1.5 * 2))
    alfa = math.acos((2**2 + x**2 - 1.5**2) / (2 * x * 2))
    t1 = 122 / (math.sin(alfa) + math.sin(beta) * math.cos(alfa) / math.cos(beta))
    t2 = t1 * math.cos(alfa) / math.cos(beta)

x_mayor = x
beta_mayor = beta * 180 / math.pi
alfa_mayor = alfa * 180 / math.pi

# Iteramos y calculamos los ángulos y las tensiones al reducir el segmento x
x = 1.5
while t1 < 100:
    x -= 0.001
    beta = math.acos((2**2 + 1.5**2 - x**2) / (2 * 1.5 * 2))
    alfa = math.acos((2**2 + x**2 - 1.5**2) / (2 * x * 2))
    t1 = 122 / (math.sin(alfa) + math.sin(beta) * math.cos(alfa) / math.cos(beta))
    t2 = t1 * math.cos(alfa) / math.cos(beta)

x_menor = x
beta_menor = beta * 180 / math.pi
alfa_menor = alfa * 180 / math.pi

# Presentamos los resultados
print(f"La longitud minima que puede disminuir la guaya X corresponde a = {x_menor} mts")
print(f"lo cual ocurre cuando alfa = {alfa_menor} deg y beta = {beta_menor} deg\n")
print(f"La longitud maxima que puede aumentar la guaya X corresponde a = {x_mayor} mts")
print(f"lo cual ocurre cuando alfa = {alfa_mayor} deg y beta = {beta_mayor} deg\n")




02a.- Programación II - Actividad a desarrollar clase 01 de Oct 2026

La Gobernación de Miranda desea instalar semáforos dentro de los túneles del edo. Miranda de forma de alertar accidentes o trabajos dentro de los mismo, los semáforos tienen una masa 12.2 kg aproximadamente. Estos semáforos se fijaran al techo de la entrada de los túneles con un sistema de soporte como se muestra en la figura:



Para fijar la estructura al techo se empleara dos segmentos independiente de guaya sobrante de otros proyectos. Cada segmento de guaya solo soporta 10 kg de masa. Elabore un programa que determine cual rango puedo reducir o aumentar el segmento X sin que las guayas terminen rompiéndose. Adicionalmente informe los valores de los ángulos Alfa y Beta para esas longitudes límites. 

Nota la cadena soporta masas de hasta 50 kg.

jueves, 24 de septiembre de 2026

01f.- Programación II - Actividad a trabajar en clase 24 de Sep 2026

Usted trabaja para una empresa que construye tanques.


Una importante distribuidora de Diésel construirá una nueva planta en la zona de Maracay y le indicó que requerirá en principio tanques de: 5, 8 ,10 y 12 metros cúbicos (Primera Fase). Al cliente no le importa la forma del tanque.

El proyecto en su segunda fase requerirá tanques de capacidades distintas a los de lo de la primera fase (Por definir).

Usted desea suministrar los tanques, pero usando la menor superficie de material posible para ahorrar costos.

El jefe de departamento de ingeniería para la cual usted trabaja considera que la mejor opción es construir tanques cilíndricos de la forma similar a la figura siguiente (tipo salchicha):


El dueño de la empresa para la cual usted trabaja no esta seguro de que un tanque en forma de salchicha sea la opción que le permita gastar menos material. En consecuencia, dado que usted es ingeniero, él lo seleccionó para que elabore un programa que determine el radio y el largo del tanque a construir de manera de parametrizar la máquina moldeadora y así obtener los tanques con la menor superficie posible.

Elabore un programa que determine el radio y el largo del tanque. Adicionalmente el programa deberá indicar la superficie en metros cuadrados.

miércoles, 23 de septiembre de 2026

01g.- Programación II - Actividad a entregar Bebedero de Agua con Máximo Volumen - Solución del Profesor

1.- La empresa para la cual usted trabaja está adquiriendo un lote de láminas metálicas de forma rectangular de ancho variable y de 3 mts de largo. Se desea construir con ellas bebederos para animales procediendo a doblar la chapa como se indica en la siguiente figura:





Los bebederos se sellarán con una pieza de madera dura en los topes de forma de completar toda la estructura. Estas piezas de madera formarán el frente y el fondo del bebedero. 


La empresa que comprará los bebederos exige que los mismos tenga la forma indicada en la figura anterior de lo contrario no procesarán la compra.


Los topes presentarán la forma de un Trapecio + Rectángulo tal como lo indica la siguiente figura:





Inicialmente el suplidor de las láminas nos indicó que el primer lote tendrá un ancho de 1.5 mts.

Nota: Los lotes siguientes pueden tener un ancho distinto, ese rango oscilara entre 1.5mts y 2.5 mts. El suplidor nos confirma que el largo siempre es el mismo 3mts.

El Gerente de ingeniería de la empresa recibió una carta de recomendación de parte de su profesor de Programación II de la USM, en donde se indica que usted dispone de capacidades sobresaliente en distintas áreas de la ingeniería.

En consecuencia, el gerente de Ingeniería lo ha designado a usted para elaborar un programa que determine: 
  • La capacidad en litros del bebedero (Máxima)
  • La área total del tope de madera (mts2)

De forma de obtener el Bebedero de máxima capacidad posible según las dimensiones de la lamina a trabajar (1.5 mts a 2.5 mts de ancho x 3 mts de largo)

La actividad es grupal y deberá ser defendida por uno de los estudiantes del grupo. Alumnos que trabajen de forma individual no serán considerados para calificación. Los mejores trabajos recibirán puntos positivos para el primer parcial. La cantidad de puntos será decidida al final de clase por el profesor dependiendo de la calidad del trabajo.

Los alumnos seleccionados deberán defender la idea de como hicieron el programa y estar en la capacidad de modificarlo al instante. 


Solución

Programa en C++

/* Programa que determina el bebedero de máximo volumen según

los especificado en el Parcial nro. 1 de programación II - USM

semestre 2024-I

Elaborado por Carlos Ferrer

Fecha: 27 de Sep 2023

*/



#include<iostream> //biblioteca para ingresar el valor del ancho de la lamina

#include<math.h> //biblioteca matemática

#include<locale.h> //biblioteca de idiomas

double ancho; //Ancho de la lamina

double base1,base2,x; //bases del trapecio y valor de x que forma parte de la base2

double h; //Altura del trapecio

double area_rec,area_trap, area_tapa; //Área del rectángulo y Área del trapecio

double Q,Q_rad; //Ángulo de elevación del lateral del trapecio en grado y radianes

double volumen; //Volumen del bebedero en metros cúbicos

double litros; //Capacidad del bebedero en Litros

double funcion_optimizada=100; //derivada igualada a cero del análisis matemático

using namespace std;

main()



{




setlocale(LC_ALL,"spanish");  //seteamos el lenguaje en español

cout <<"Ingrese el ancho de la lámina.  (1.5 a 2.5 mts) = ";

cin >>ancho;

if(ancho<1.5 or ancho>2.5)

{

system ("cls");

cout <<"Ancho ingresado fuera de rango "<<endl<<endl;

}


/*Elaboramos un ciclo que determine el ángulo donde la ecuación de optimización se 
hace cero en el rango de 0.001 a 90 grados*/

while (funcion_optimizada<-0.001 or funcion_optimizada>0.001)
{
Q=Q+0.01;
Q_rad=Q*M_PI/180;
funcion_optimizada=cos(Q_rad)+pow(cos(Q_rad),2)-pow(sin(Q_rad),2)-2*sin(Q_rad);
}


//determinamos X

x= ancho/5*cos(Q_rad);


//determinamos Área del trapecio

base1=ancho/5;

x= ancho/5*cos(Q_rad);

base2=base1+2*x;

h= ancho/5*sin(Q_rad);

area_trap=(base1+base2)*h/2;

//determinamos Área del Rectángulo

area_rec=(ancho/5+2*x)*ancho/5;

// determinamos el área de la tapa de madera

area_tapa=area_rec+area_trap;

// determinamos el volumen del bebedero en metros cúbicos

volumen=area_tapa*3;

// determinamos la capacidad del bebedero en litros

litros = volumen*1000;


//presentamos los resultados

system("cls");

cout <<"Para una lámina de un ancho de "<<ancho<<" mts y un largo de 3 metros.";

cout <<" Los resultados son los siguientes: "<<endl<<endl;

cout <<"El angulo thetha (Q) en donde se obtiene la maxima area es = "<<Q<<" grados ("<<Q_rad<<" radianes)"<<endl;

cout <<"El valor de X asociado a este angulo corresponde a = "<<x<<" mts"<<endl<<endl;

cout <<"El valor de h asociado a la altura del trapecio corresponde a = "<<h<<" mts"<<endl<<endl;

cout <<"El area total de la base es igual = "<<area_tapa<<" mts2"<<endl;

cout <<"(Area del Rectangulo = "<<area_rec<<" mts2 + Area del Trapecio = "<<area_trap<<" mts2)"<<endl<<endl;



cout <<"EL VOLUMEN MAXIMO DEL BEBEDERO ES DE "<<volumen<<" mts cúbicos"<<endl;

cout << "CON CAPACIDAD DE "<<litros<<" LITROS DE AGUA. PARA UNA LAMINA DE "<<ancho<<" MTS DE ANCHO"<<endl<<endl;



cout <<"ÉXITO!!!!"<<endl<<endl;

system ("pause");


}


Programa en Python


# Programa que determina el bebedero de máximo volumen según
# los especificados en el Parcial Nro. 1 de Programación II - USM
# semestre 2024-I
# Elaborado por Carlos Ferrer
# Fecha: 27 de Sep. 2023

import math
import os

ancho = 0.0  # Ancho de la lamina
base1 = 0.0
base2 = 0.0
x = 0.0  # bases del trapecio y valor de x que forma parte de la base2
h = 0.0  # Altura del trapecio
area_rec = 0.0
area_trap = 0.0
area_tapa = 0.0  # Área del rectángulo y Área del trapecio
Q = 0.0
Q_rad = 0.0  # Ángulo de elevación del lateral del trapecio en grado y radianes
volumen = 0.0  # Volumen del bebedero en metros cúbicos
litros = 0.0  # Capacidad del bebedero en Litros
funcion_optimizada = 100.0  # derivada igualada a cero del análisis matemático

# Setear el lenguaje en español (no aplicable en Python)

ancho = float(input("Ingrese el ancho de la lámina.  (1.5 a 2.5 mts) = "))

if ancho < 1.5 or ancho > 2.5:
    os.system("cls" if os.name == "nt" else "clear")
    print("Ancho ingresado fuera de rango\n")

# Elaboramos un ciclo que determine el ángulo donde la ecuación de optimización se hace cero en el rango de 0.001 a 90 grados
while funcion_optimizada < -0.001 or funcion_optimizada > 0.001:
    Q += 0.01
    Q_rad = Q * math.pi / 180
    funcion_optimizada = math.cos(Q_rad) + math.pow(math.cos(Q_rad), 2) - math.pow(math.sin(Q_rad), 2) - 2 * math.sin(Q_rad)

# determinamos X
x = ancho / 5 * math.cos(Q_rad)

# determinamos Área del trapecio
base1 = ancho / 5
base2 = base1 + 2 * x
h = ancho / 5 * math.sin(Q_rad)
area_trap = (base1 + base2) * h / 2

# determinamos Área del Rectángulo
area_rec = (ancho / 5 + 2 * x) * ancho / 5

# determinamos el área de la tapa de madera
area_tapa = area_rec + area_trap

# determinamos el volumen del bebedero en metros cúbicos
volumen = area_tapa * 3

# determinamos la capacidad del bebedero en litros
litros = volumen * 1000

# presentamos los resultados
os.system("cls")
print(f"Para una lámina de un ancho de {ancho} mts y un largo de 3 metros.")
print("Los resultados son los siguientes:\n")
print(f"El angulo thetha (Q) en donde se obtiene la maxima area es = {Q} grados ({Q_rad} radianes)")
print(f"El valor de X asociado a este angulo corresponde a = {x} mts\n")
print(f"El valor de h asociado a la altura del trapecio corresponde a = {h} mts\n")
print(f"El area total de la base es igual = {area_tapa} mts2")
print(f"(Area del Rectangulo = {area_rec} mts2 + Area del Trapecio = {area_trap} mts2)\n")
print(f"EL VOLUMEN MAXIMO DEL BEBEDERO ES DE {volumen} mts cúbicos")
print(f"CON CAPACIDAD DE {litros} LITROS DE AGUA. PARA UNA LAMINA DE {ancho} MTS DE ANCHO\n")
print("ÉXITO!!!!\n")

input("Presione Enter para continuar...")


01f.- Programación II - Bebedero de máxima capacidad (Semestre 2027-I) - Laboratorio 23 de Sep de 2026

La empresa para la cual usted trabaja está adquiriendo un lote de láminas metálicas de forma rectangular de ancho variable y de 3 mts de largo. Se desea construir con ellas bebederos para animales procediendo a doblar la chapa como se indica en la siguiente figura:





Los bebederos se sellarán con una pieza de madera dura en los topes de forma de completar toda la estructura. Estas piezas de madera formarán los laterales del bebedero. 


La empresa que comprará los bebederos exige que los mismos tenga la forma indicada en la figura anterior de lo contrario no procesarán la compra.


Los topes presentarán la forma de un Trapecio + Rectángulo tal como lo indica la siguiente figura:





Inicialmente el suplidor de las láminas nos indicó que el primer lote tendrá un ancho de 1.5 mts.

Nota: Los lotes siguientes pueden tener un ancho distinto, ese rango oscilara entre 1.5mts y 2.5 mts. El suplidor nos confirma que el largo siempre es el mismo 3mts.

El Gerente de ingeniería de la empresa recibió una carta de recomendación de parte de su profesor de Programación II de la USM, en donde se indica que usted dispone de capacidades sobresalientes en distintas áreas de la ingeniería.

En consecuencia, el gerente de Ingeniería lo ha designado a usted para elaborar un programa que determine: 
  • Determine el ángulo θ en donde el volumen se hace máximo 
  • La capacidad en litros del bebedero (Máxima)
  • La área total del tope de madera (mts2)
De forma de obtener el Bebedero de capacidad máxima (Máximo Volumen)

viernes, 18 de septiembre de 2026

01e.- Programación II - Programa de Manejo de Costos - Calculo de Cables de Fibra Óptica + SOLUCION DEL PROFESOR (2027- I)

Se va a tender un cable desde el punto A ubicado en la Costa Occidental del Lago de Maracaibo hasta un punto B ubicado en la Costa Oriental.

La ubicación A se encuentra 20 Km Lago arriba de un punto C esta 14 km en línea recta del punto B y adicionalmente  forma un angulo de 90 grados con la ruta de A hasta C. (Ver figuras)

Escenario Nro. 1



Escenario Nro. 2


Escenario Nro. 3


El costo de tender el cable por debajo de agua actualmente es 5000$ y el costo de tenderlo en tierra es de 3000$. Estos precios son volátiles y cambian día a día.

Existen tres (3) escenarios:

1.- Tender un cable por debajo del agua directamente entre los puntos A y B.
2.- Tender un cable en tierra entre los puntos A y C y posteriormente tender un cable por debajo del agua entre los puntos C y B.
3.- Determinar un punto X entre A y C, luego tender un cable sobre tierra entre A y X y posteriormente tender un cable por debajo del agua entre los puntos X y B. 

Indique:

a.- Cual es la opción más económica que usted recomendaría aplicar.
b.- Elabore un programa que determine la cantidad de material que se requiere adquirir basado en los costos de la materia prima ese día y en base al escenario determinado en el punto a. 

Solución 



Se desecha la respuesta de 30.5 km porque no esta en el rango de 1 a 20 km.

En consecuencia para los costos de:

3000$ en Cable Terrestre
5000$ en Cable Marino

debemos comprar 9.5 km de Cable Terrestre y 17.5 km cable marino.

Para el cálculo de X en nuestro programa debemos usar la formula de X1 dado que nos presentaría valores entre 0 y 20Km.

NOTA1: RECUERDE, SI EL CABLE MARITIMO CUESTA LO MISMO O ES MAS BARATO QUE EL CABLE TERRESTRE LA OPCIÓN MAS ECONOMICA ES LANZAR UN CABLE MARITIMO DIRECTAMENTE ENTRE A Y B 

Programa Nro1 en C++

// Programa Nro1  para la estimación del cable de Fibra óptica (Terrestre y Marítimo)
// La idea es determinar el punto intermedio entre A y C en donde finaliza
// el tendido del cable terrestre y comienza el tendido del cable marítimo

// Elaborado por CARLOS FERRER 

// Rev Septiembre 2024

// Librerías requeridas


#include<iostream>

#include<math.h>

using namespace std;

main()


{

 double CM=-1,CT=-1,W=0; //CM=Costo Cable Marítimo CT=Costo Cable terrestre W=CM*CM/(CT*CT)
 double a,b,c; // elemento de la ecuación de 2do grado
 double X; //Cantidad de Metros de Cable Terrestre
 double BD;//Cantidad de Cable Marítimo
 double Costo; //Costo minino del tendido del cableado
 double distancia_directa; //distancia directa entre a y b


 // Ingresamos los costos de los cables terrestres y marítimos

while (CM<0)
 {
 cout<<"Ingrese el costo en ($) del tendido de (KM) de Cable maritimo = ";
 cin>>CM;
 }

while (CT<0)
 {
 cout<<"Ingrese el costo en ($) del tendido de (KM) de Cable Terrestre = ";
 cin>>CT;
 }


 // Evaluamos el escenario en el cual no conviene hacer ningún calculo
 if (CM<=CT)
 {
 distancia_directa= sqrt(pow(14,2)+pow(20,2));
 cout <<endl<<"Cuando el costo del cable Maritimo ("<<CM<<"$) es menor "<<endl;
 cout <<"o igual al costo del cable Terrestre ("<<CT<<"$)"<<endl;
 cout <<"La mejor opcion es solo usar UNICAMENTE cable Maritimo desde A a B"<<endl<<endl;
 cout <<"En este caso solo se requiere 24.4131112314674 km de Cable Maritimo"<<endl;
  cout <<"y 0 km de Cable Terrestre"<<endl<<endl;
 cout <<"El costo optimo en este caso seria = "<< CM*distancia_directa<<" $"<<endl;
 cout <<"CON ESTAS CANTIDADES SE OBTIENE EL MINIMO COSTO POSIBLE!!!"<<endl<<endl;
goto fin; 
 }



 // Se determina la distancia X en donde el costo del cableado se hace mínimo

W=pow(CT,2)/pow(CM,2);
a=1-W;
b=40*(W-1);
c=400-596*W;

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


// Determinamos la cantidad de cable maritimo
BD=sqrt(596-40*X+pow(X,2));

//Determinamos el costo del tendido del cable

Costo=X*CT+BD*CM;


// presentamos los resultados
 cout<<endl<<"La cantidad de cable Marítimo requerido es (KM) ="<<BD<<endl;
 cout<<"La cantidad de cable Terrestre requerido es (KM) ="<<X<<endl;
 cout<<"El Costo del tendido es ="<<Costo<<" $"<<endl;
 cout<<"CON ESTAS CANTIDADES SE OBTIENE EL MINIMO COSTO POSIBLE!!!"<<endl;

fin:
  system("pause");

}


Programa Nro1 en Python


# Programa Nro1  para la estimación del cable de Fibra óptica (Terrestre y Marítimo)
# La idea es determinar el punto intermedio entre A y C en donde finaliza
# el tendido del cable terrestre y comienza el tendido del cable marítimo

# Elaborado por CARLOS FERRER

# Rev Septiembre 2024

# Biblioteca requerida
import math
import os

os.system("cls")

# Costo Cable Maritimo
CM = -1
# Costo Cable Terrestre
CT = -1
# W=CM^2/CT^2
W = 0

 # Ingresamos los costos de los cables terrestres y marítimos

while CM < 0:
    CM = float(input("Ingrese el costo del cable maritimo ($/km) = "))

while CT < 0:
    CT = float(input("Ingrese el costo del cable Terrestre ($/km) = "))
 
 # Evaluamos el escenario en el cual no conviene hacer ningún calculo
if CM <= CT:
    distance_direct = math.sqrt(14**2 + 20**2)
# Presentamos resultados de este escenario  
    print(f"\nCuando el costo del camble maritimo (${CM}) es menor o igual que el costo del cable terestre (${CT})")
    print("La mejor opción es usar solamente cable maritimo de A a B")
    print(f"En este caso, solamente 24.4131112314674 km de cable maritimo es requerido")
    print("and 0 km of Terrestrial cable")
    print(f"El costo optimo en este caso correspondería = {CM*distance_direct} $")
    print("CON ESTAS CANTIDADES, OBTENDRIAMOS EL MÍNIMO COSTO!!!")
else:
    W = (CT/CM)**2
    a = 1 - W
    b = 40 * (W - 1)
    c = 400 - 596 * W
    X = (-b - math.sqrt(b**2 - 4*a*c)) / (2*a)
    BD = math.sqrt(596 - 40*X + X**2)
    cost = X*CT + BD*CM
 
 # Presentamos resultados de este escenario
    print(f"\nLa cantidad de cable maritimo requerido es (KM) = {BD}")
    print(f"La cantidad de cable maritimo requerido es (KM) = {X}")
    print(f"El costo correspondería = {cost} $")
    print("CON ESTAS CANTIDADES, OBTENDRIAMOS EL MÍNIMO COSTO!!!")



NOTA2: Existe otra forma de resolver este problema usando mínima matemática. 


Basta con barrer tota la longitud de la distancia terrestre (0-20km), en pocas palabras ir moviendo X por ejemplo de 0.01 en 0.01, calculando de forma simultanea todas las distancias de X a B, para que con esos datos se evaluaran todos los costos posibles y así determinar la opción más económica. Para esto la única ecuación que hacia falta era la distancia de X a B en función de X y eso ya lo sabíamos por el teorema de Pitágoras (distancia de X a B = √[(20-x) 2 + 142] ). 


Programa Nro2 en C++

// Programa Nro2 para la estimación del cable de Fibra óptica (Terrestre y Marítimo)
// La idea es determinar el punto intermedio entre A y C en donde finaliza
// el tendido del cable terrestre y comienza el tendido del cable marítimo

// Elaborado por CARLOS FERRER - Septiembre 2024

// Librerías requeridas


#include<iostream>

#include<math.h>

using namespace std;

main()


{

 double CM=-1,CT=-1; //CM=Costo Cable Marítimo CT=Costo Cable terrestre W=CM*CM/(CT*CT)
 double X,X_aux; //Cantidad de Metros de Cable Terrestre
 double BD, BD_aux;//Cantidad de Cable Marítimo
 double Costo,Costo_aux; //Costo minino del tendido del cableado
 

 // Ingresamos los costos de los cables terrestres y marítimos


while (CM<0)
 {
 cout<<"Ingrese el costo en ($) del tendido de (KM) de Cable maritimo = ";
 cin>>CM;
 }

while (CT<0)
 {
 cout<<"Ingrese el costo en ($) del tendido de (KM) de Cable Terrestre = ";
 cin>>CT;
 }


 // Determinamos el costo de irnos directo de A a B
  
 X=0;
 BD=sqrt(pow(20,2)+pow(14,2));
 Costo=CT*X+CM*BD;

/* Revisamos todas las posibilidades de la distancia terreste de forma de 
determinar si hay un costo menor*/
 X_aux=0.01;
 while  (X_aux<20)
  {
  BD_aux=sqrt(pow(20-X_aux,2)+pow(14,2));
  Costo_aux=CT*X_aux+CM*BD_aux;
  if(Costo_aux<Costo)
  {
  Costo=Costo_aux;
  X=X_aux;
  BD=BD_aux;
}
X_aux=X_aux+0.01;  
  }
 
 // Determinamos el costo de irnos directo de A a C y luego a B

Costo_aux=CT*20+CM*14;
if(Costo_aux<Costo)
  {
  Costo=Costo_aux;
  X=20;
  BD=14;
} 
 
// Presentamos los resultados
 cout<<endl<<"La cantidad de cable Marítimo requerido es (KM) ="<<BD<<endl;
 cout<<"La cantidad de cable Terrestre requerido es (KM) = "<<X<<endl;
 cout<<"El Costo del tendido es = "<<Costo<<" $"<<endl;
 cout<<"CON ESTAS CANTIDADES SE OBTIENE EL MINIMO COSTO POSIBLE!!!"<<endl;


  system("pause");

}


Programa Nro2 en Python


#Programa Nro2 para la estimación del cable de Fibra óptica (Terrestre y Marítimo)
# La idea es determinar el punto intermedio entre A y C en donde finaliza
# el tendido del cable terrestre y comienza el tendido del cable marítimo

# Elaborado por CARLOS FERRER - Septiembre 2024

# Librerías requeridas

import math
import os

os.system("cls")

CM = -1  # Costo del cable marítimo
CT = -1 # Costo del cable terrestre
X = 0 # Distancia X que vamos a ir verificando
X_aux = 0.01

 # Ingresamos los costos de los cables terrestres y marítimos
while CM < 0:
    CM = float(input("Ingrese el costo en ($) del tendido de (KM) de Cable maritimo = "))

while CT < 0:
    CT = float(input("Ingrese el costo en ($) del tendido de (KM) de Cable Terrestre = "))


# Calculamos el costo para x=0.01
BD = math.sqrt(20**2 + 14**2)
BD_aux = 0
Costo = CT*X + CM*BD
Costo_aux = 0


# Iteramos hasta conseguir costo mínimo

while X_aux < 20:
    BD_aux = math.sqrt((20-X_aux)**2 + 14**2)
    Costo_aux = CT*X_aux + CM*BD_aux
    if Costo_aux < Costo:
        Costo = Costo_aux
        X = X_aux
        BD = BD_aux
    X_aux = X_aux + 0.01

Costo_aux = CT*20 + CM*14
if Costo_aux < Costo:
    Costo = Costo_aux
    X = 20
    BD = 14


# Presentamos Resultados

print(f"\nLa cantidad de cable Marítimo requerido es (KM) = {BD:.2f}")
print(f"La cantidad de cable Terrestre requerido es (KM) = {X:.2f}")
print(f"El Costo del tendido es = {Costo:.2f} $")
print("CON ESTAS CANTIDADES SE OBTIENE EL MINIMO COSTO POSIBLE!!!")