jueves, 26 de marzo de 2026

01t.- Programación II - Prueba Corta 2026 - II (Solución del Profesor)

 El transportador



El transportador desea colocar bombas en una bodega de almacenamiento de vino donde se reunirá una banda de narcotraficantes Albaneses, las bodegas varían en sus tamaños: 5 a 10 m de largo, 4 a 6 m de ancho y 3 a 5 m de alto.

La dimensión de la bodega en donde se reunirán los Albaneses le será informado por un espía media hora antes de la reunión.

El plan del transportador es instalar un interruptor en una esquina a 80 cm de alto del piso y luego colocar una bomba en el techo justo en la esquina opuesta, ¿El transportador debe cargar todo el material para montar la trampa y requiere transportar la menor cantidad de cable posible, por lo tanto, recurre a usted para elabore un programa que determine la trayectoria sobre las paredes de la bodega que se debe seguir para ahorrar la mayor cantidad de cable eléctrico. 


Por lo tanto, en función de las medidas de la bodega su programa deberá determinar: 

  • La cantidad de cable requerido.
  • La distancia X en metros.

A usted no le conviene tener problemas con el transportador.

Solución de referencia: Para un largo de 5 mts, un ancho de 4 mts y un alto de 3 mts, la distancia X corresponde a 11/9 mts y la cantidad de cable requerido es de 9.2649 mts aproximadamente.


SOLUCIONES



Existen varias soluciones para este ejercicio yo voy a plantear dos

1ra Solución aplicando la derivada (Dificultad alta)

Sea P el punto en la esquina que forman los lados de longitud   L m y A m. Denotemos por x la altura en metros, a partir de los 0.8 m.

 

Sea d1 la distancia del contacto al punto P y sea d2 la distancia del punto P a la bomba. La distancia que nos interesa minimizar es 


d=d1+d2


Usando el Teorema de Pitágoras en los triángulos rectángulos apropiados tenemos que

d1=(L2+x2)   y d2= (A2+(H-0.8-x)2) 

para simplificar la nomenclatura llamemos R=H-0.8, por lo tanto

d2= (A2+(R-x)2)  

Puesto que la altura de la bodega es de H m, entonces 0 ≤ x ≤ H-0.8. Así, la función a minimizar está dada por:

d = (L2+x2)+ (A2+(R-x)2) 

recuerden L y A son datos de entrada al programa, la única variable es x, por lo tanto, si derivamos la función y la igualamos a cero, para posteriormente despejar x, ese valor sería donde la ecuación original se hace mínima, procedemos

d(d)/dx = 0 =>

   2x(-1)/(2(L2+x2)) +  (2)(R-x)(-1)(-1)/(2(A2+(R-x)2))  = 0 =>

 - x/(L2+x2)   +  (R-x)/(A2+(R-x)2)=0 =>

 (R-x)/(A2+(R-x)2) = x/(L2+x2)   =>

(R-x)( L2+x2) = x (A2+(R-x)2)

Elevamos al cuadrado en ambos lados:

(R-x)2( L2+x2)= x2 (A2+(R-x)2) =>

(R2-2Rx+x2)( L2+x2)= x2 (A2 + R2-2Rx+x2) =>

R2L2+R2x2-2L2Rx-2Rx3+L2x2+x4= A2x2+R2x2-2Rx3+x4 =>

(L2-A2)x2 - 2L2Rx +R2L2 = 0

Bastaría resolver la ecuación de 2do grado donde

a = L2-A2  

b= -2L2(H-0.8)

c= (H-0.8)2L2

Veamos el ejemplo L=5, A=4 y H=3

a= 25-16 => a = 9

b=-50 (2.2)=> b= -110

c= -(2.2)2 25 => c= 121

Aplicando la resolvente quedaría:

x1= [110+ ((110)2-4(9)(121))]/(2(9))

x2= [110- ((110)2-4(9)(121))]/(2(9))

por lo tanto

x1=11 y x2=1,22 por lo tanto el resultando correcto es

x=1,22 dado que el otro es un valor fuera del rango de (0,2.2)


Veamos el programa.


Programa Nro.1 en C++

/*Programa para determinar el cableado mínimo

para ayudar al transportador a colocar una bomba usando el mínimo de 

cableado. APLICANDO DERIVADAS

Elaborador: Carlos Ferrer

Rev.: marzo de 2026

*/


#include <math.h>

#include <iostream>

#include <locale.h>

using namespace std;

main()

{

setlocale(LC_ALL,"spanish");

/* L=Largo, H=Alto, A=Ancho, d=distancia mínima, 

   X,d1 y d2 distancias según gráfica*/

double L,H,A,d,x,d1,d2; 


//Coeficientes de la resolvente de 2do grado

double a,b,c;


//Ingresamos datos

do

{

cout <<"Favor ingrese el largo del Almacen  (5 - 10 mts) = ";

cin >>L;

if(L<5 or L>10)

{

system("cls");

cout <<"Valor erroneo!!!"<<endl<<endl;

}

}

while (L<5 or L>10);


do

{

cout <<"Favor ingrese el ancho del Almacen  (4 - 6 mts) = ";

cin >>A;

if(A<4 or A>6)

{

system("cls");

cout <<"Valor erroneo!!!"<<endl<<endl;

}

}

while (A<4 or A>6);


do

{

cout <<"Favor ingrese el alto del Almacen  (3 - 5 mts) = ";

cin >>H;

if(H<3 or H>5)

{

system("cls");

cout <<"Valor erroneo!!!"<<endl<<endl;

}

}

while (H<3 or H>5);


// Hallamos X

a=pow(L,2)-pow(A,2);

b=-2*pow(L,2)*(H-0.8);

c=pow((H-0.8),2)*pow(L,2);


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

d1=sqrt(pow(L,2)+pow(x,2));

d2=sqrt(pow(A,2)+pow((H-0.8-x),2));


//Presentamos Resultados

cout <<endl<<"La distancia X en donde el cableado"<<endl;

cout <<"es mínimo, corresponde a X = "<<x<<" mts !!!!"<<endl<<endl;

cout <<endl<<"La distancia d1 (mts) = "<<d1<<endl;

cout <<endl<<"La distancia d2 (mts) = "<<d2<<endl;

cout <<endl<<"La distancia d mínima (mts) = "<<d1+d2<<endl;

}

Programa Nro.1 en Python

# Programa para determinar el cableado mínimo
# para ayudar al transportador a colocar una bomba usando el mínimo de # cableado. APLICANDO DERIVADAS # Elaborador: Carlos Ferrer # Rev.: marzo de 2026
import math
import os

print("--- Cálculo de Cableado Mínimo ---")

# Validación de Largo (L)
while True:
    l = float(input("Favor ingrese el largo del Almacén (5 - 10 mts) = "))
    if 5 <= l <= 10:
        break
    print("¡Valor erróneo!\n")
    print("Por favor, ingrese un número válido.")

# Validación de Ancho (A)
while True:
    a = float(input("Favor ingrese el ancho del Almacén (4 - 6 mts) = "))
    if 4 <= a <= 6:
        break
    print("¡Valor erróneo!\n")
    print("Por favor, ingrese un número válido.")

# Validación de Alto (H)
while True:
    h = float(input("Favor ingrese el alto del Almacén (3 - 5 mts) = "))
    if 3 <= h <= 5:
        break
    print("¡Valor erróneo!\n")
    print("Por favor, ingrese un número válido.")

# Hallamos X

a1=l**2-a**2

b=-2*l**2*(h-0.8)

c=(h-0.8)**2*l**2



x=(-b-math.sqrt(b**2-4*a1*c))/(2*a1)

d1=math.sqrt(l**2+x**2);

d2=math.sqrt(a**2+(h-0.8-x)**2);
d=d1+d2
             
# Presentación de resultados
print(f"\nLa distancia X en donde el cableado es mínimo corresponde a X = {x:.4f} mts !!!!")
print(f"\nLa distancia d1 (mts) = {d1:.4f}")
print(f"\nLa distancia d2 (mts) = {d2:.4f}")
print(f"\nLa distancia d mínima (mts) = {d:.4f}")


2da Solución aplicando Iteración (Dificultad baja)

En este caso vamos a partir de la ecuación de distancia que determinamos arriba: 


d = (L2+x2)+ (A2+(H-0.8-x)2) 


Vamos a hacer un programa que itere el valor de x desde x=0 hasta x=H-0.8, utilizaremos un incremento pequeño de 0.0001, en el momento que detectemos un cambio de sentido de la variable d, o sea, que cambie de decrecimiento a crecimiento habremos conseguido el mínimo y procedemos a presentar los resultados.


Veamos el programa. 


Programa Nro.2 en C++

/*Programa para determinar el cableado mínimo

para ayudar al transportador a colocar una bomba usando el mínimo de 

cableado. APLICANDO ITERACION.

Elaborador: Carlos Ferrer

Rev.: marzo de 2026

*/


#include <math.h>

#include <iostream>

#include <locale.h>

using namespace std;

main()

{

setlocale(LC_ALL,"spanish");

/* L=Largo, H=Alto, A=Ancho, d=distancia mínima, 

   X,d1 y d2 distancias según gráfica*/

double L,H,A,d,x,d1,d2; 


//Coeficientes de la resolvente de 2do grado

double a,b,c;


//Distancia d para el valor de x anterior

double d_previa;

//Ingresamos datos

do

{

cout <<"Favor ingrese el largo del Almacen  (5 - 10 mts) = ";

cin >>L;

if(L<5 or L>10)

{

system("cls");

cout <<"Valor erroneo!!!"<<endl<<endl;

}

}

while (L<5 or L>10);


do

{

cout <<"Favor ingrese el ancho del Almacen  (4 - 6 mts) = ";

cin >>A;

if(A<4 or A>6)

{

system("cls");

cout <<"Valor erroneo!!!"<<endl<<endl;

}

}

while (A<4 or A>6);


do

{

cout <<"Favor ingrese el alto del Almacen  (3 - 5 mts) = ";

cin >>H;

if(H<3 or H>5)

{

system("cls");

cout <<"Valor erroneo!!!"<<endl<<endl;

}

}

while (H<3 or H>5);


// Hallamos X

x=0;

d_previa=sqrt(pow(L,2)+pow(x,2))+sqrt(pow(A,2)+pow((H-0.8-x),2));


//iteramos

while(x<=H-0.8)

{

x=x+0.0001;

d=sqrt(pow(L,2)+pow(x,2))+sqrt(pow(A,2)+pow((H-0.8-x),2));

if(d>d_previa)

{

x=x-0.0001;

d1=sqrt(pow(L,2)+pow(x,2));

d2=sqrt(pow(A,2)+pow((H-0.8-x),2));

d=d1+d2;

break;

}

d_previa=d;

}


//Presentamos Resultados

cout <<endl<<"La distancia X en donde el cableado"<<endl;

cout <<"es mínimo, corresponde a X = "<<x<<" mts !!!!"<<endl<<endl;

cout <<endl<<"La distancia d1 (mts) = "<<d1<<endl;

cout <<endl<<"La distancia d2 (mts) = "<<d2<<endl;

cout <<endl<<"La distancia d mínima (mts) = "<<d1+d2<<endl;

}

Programa Nro.2 en Python

# Programa para determinar el cableado mínimo

# para ayudar al transportador a colocar una bomba usando el mínimo de # cableado. APLICANDO ITERACIÓN # Elaborador: Carlos Ferrer # Rev.: marzo de 2026

import math
import os

print("--- Cálculo de Cableado Mínimo ---")

# Validación de Largo (L)
while True:
    l = float(input("Favor ingrese el largo del Almacén (5 - 10 mts) = "))
    if 5 <= l <= 10:
        break
    print("¡Valor erróneo!\n")
    print("Por favor, ingrese un número válido.")

# Validación de Ancho (A)
while True:
    a = float(input("Favor ingrese el ancho del Almacén (4 - 6 mts) = "))
    if 4 <= a <= 6:
        break
    print("¡Valor erróneo!\n")
    print("Por favor, ingrese un número válido.")

# Validación de Alto (H)
while True:
    h = float(input("Favor ingrese el alto del Almacén (3 - 5 mts) = "))
    if 3 <= h <= 5:
        break
    print("¡Valor erróneo!\n")
    print("Por favor, ingrese un número válido.")

# Inicialización de variables para la optimización
x = 0.0
limite_superior = h - 0.8
# d_previa inicial con x = 0
d_previa = math.sqrt(l**2 + x**2) + math.sqrt(a**2 + (limite_superior - x)**2)

# Iteración para hallar el mínimo (paso de 0.0001)
paso = 0.0001

while x <= limite_superior:
    x = x+paso
    d = math.sqrt(l**2 + x**2) + math.sqrt(a**2 + (limite_superior - x)**2)
       
    # Si la distancia empieza a aumentar, encontramos el mínimo previo
    if d > d_previa:
        x= x-paso
        d1 = math.sqrt(l**2 + x**2)
        d2 = math.sqrt(a**2 + (limite_superior - x)**2)
        d = d1 + d2
        break
    d_previa = d

# Presentación de resultados
print(f"\nLa distancia X en donde el cableado es mínimo corresponde a X = {x:.4f} mts !!!!")
print(f"\nLa distancia d1 (mts) = {d1:.4f}")
print(f"\nLa distancia d2 (mts) = {d2:.4f}")
print(f"\nLa distancia d mínima (mts) = {d:.4f}")





miércoles, 25 de marzo de 2026

01s.- Programación II - Prueba Corta 2026 - II

El transportador


El transportador desea colocar bombas en una bodega de almacenamiento de vino donde se reunirá una banda de narcotraficantes Albaneses, las bodegas varían en sus tamaños: 5 a 10 m de largo, 4 a 6 m de ancho y 3 a 5 m de alto.

La dimensión de la bodega en donde se reunirán los Albaneses le será informado por un espía media hora antes de la reunión.

El plan del transportador es instalar un interruptor en una esquina a 80 cm de alto del piso y luego colocar una bomba en el techo justo en la esquina opuesta, ¿El transportador debe cargar todo el material para montar la trampa y requiere transportar la menor cantidad de cable posible, por lo tanto, recurre a usted para elabore un programa que determine la trayectoria sobre las paredes de la bodega que se debe seguir para ahorrar la mayor cantidad de cable eléctrico. 


Por lo tanto, en función de las medidas de la bodega su programa deberá determinar: 

  • La cantidad de cable requerido.
  • La distancia X en metros.

A usted no le conviene tener problemas con el transportador.

Solución de referencia: Para un largo de 5 mts, un ancho de 4 mts y un alto de 3 mts, la distancia X corresponde a 11/9 mts y la cantidad de cable requerido es de 9.2649 mts aproximadamente.

lunes, 23 de marzo de 2026

01m.- Programación II - Actividad de Laboratorio 02 de Octubre de 2024

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.

03l.- Programación II - Prueba 27 de marzo 2025

Un empresario requiere elaborar unas cajas para envió de mercancía a partir de laminas de madera que miden entre 20 y 30 Mtsde superficie. La única condición que solicita el empresario es que se aproveche completamente todo el material y la caja a construir deberá tener al menos  una cara cuadrada. (Ver figura)

1) Elabore un programa que indique las dimensiones de la caja para obtener el máximo volumen con las laminas de material disponible. Las laminas son de distintos tamaños y varían entre 20 y 30 Mts2.

2) Analizando los resultados del programa, cual es la forma final de la caja para superficies de: 

  •  20 Mts2 
  •  25 Mts2 
  •  30 Mts2 

01k.- Programación II - Prueba Corta Nro. 1

 




01i.- Programación II - Parcial Nro. 1 - Actividad evaluada 01 de Octubre de 2025 (semestre 2026 - I)

   

Nota: Los trabajadores se colocan la cabilla en el hombro en el momento de transpórtalas al interior del almacén.