1) Es
necesario elaborar un programa que permita determinar el corte de láminas de cartón
rectangular de forma de elaborar cajas con el mayor volumen posible:
Las láminas rectangulares deben cortarse en sus esquinas de forma de poder doblarlas para construir las cajas, similar a las cajas de una torta de cumpleaños (Sin la tapa superior), el siguiente diagrama indica como se cortará y doblará la caja:
El programa a elaborar deberá permitir ingresar el largo y el ancho de la lámina de cartón (mts), El programa deberá indicar
Cuál será la medida "x"
Cuál
es el volumen de la caja en mts. cúbicos
Solución
Las laminas rectangulares deben cortarse en sus esquinas de forma de poder doblarlas para construir las cajas, similar a las cajas de una torta de cumpleaños.
Como queremos el mayor volumen posible, necesitamos determinar cuanto será el corte X que nos dará la altura requerida para el máximo volumen, en consecuencia necesitamos una ecuación de volumen en función de X.
Luego para determinar el Volumen máximo, derivamos la ecuación de volumen y la igualamos a cero. De esta forma podremos encontrar el valor de X en el cual es volumen se hace máximo.
Llamemos V=Volumen,
La ecuación de Volumen de la caja correspondería a:
Volumen (V) = Largo * Ancho * Altura
o lo que es lo mismo
V= (Z-2X) (Y-2X) X
al desarrollar la formula nos queda
V=4*X3-2(Z+Y)X2+ZYX
al derivar la ecuación con respecto a X e igualarla a cero (0) nos queda:
dV/dx=0
12X3+4(-Z-Y)X+ZY= 0, para hallar el valor de X resolvemos la ecuación de 2do Grado,
X1,2= [-b± √ (b2-4ac)]/2a
a=12
b=4*(-Z-Y)
c=ZY
Usando los valores de nuestro ejemplo ejemplo,
a=12
b=4*(-15-10) =-100
c=15*10=150
Las soluciones corresponden a X1= 6,37146 y X2=1,96187,
6,37146 se descarta porque no puedo cortar más allá de la mitad del ancho o sea 5 mts, la respuesta correcta es 1,96187mts, por lo tanto, el volumen máximo es:
V= (15-2(1.96187))(10-2(1.96187))1.96187=132.038237 mts3
Conociendo esto, hacer el programa para el calculo del corte requerido para fabricar cajas de máximo volumen a partir de laminas rectangulares resulta muy sencillo para los estudiantes de la USM...
Programa Nro. 1
/*
Programa para calculo de cajas de máximo volumen universidad Santa
María
Cátedra: Programación II
Profesor Carlos Ferrer
*/
#include <iostream> // *************** LIBRERIA O BIBLIOTECA PARA LEER Y ESCRIBIR EN PANTALLA *************************
#include <math.h> //******** LIBRERIA O BIBLIOTECA PARA OPERACIONES MATEMATICAS*********
using namespace std;
int main()
{
double z=-1,y=-1; // Largo y ancho original de la lamina
double X1=0, X2=0; // Resultados de la ecuación de 2do grado (raíces)
double Volumen; //Volumen máximo definitivo
double Xfinal; //Corte de la lamina para hacer la caja de máximo volumen
double a,b,c; //Elementos de la ecuación de 2do grado
// Ingresamos datos iniciales
while (z<=0) // el largo debe ser mayor que cero
{
cout <<"Ingrese largo de la lamina (mts))= "<<endl;
cin >>z;
}
while (y<=0 or y>z) // el ancho debe ser mayor que cero y menor que el largo
{
cout <<"Ingrese ancho de la lamina (mts))= "<<endl;
cin >>y;
}
//calculamos los valores de la ecuación de 2do grado
a=12;
b=-4*(z+y);
c=z*y;
//Calculamos las raíces
X1= (-b-sqrt(pow(b,2)-4*a*c))/(2*a);
X2= (-b+sqrt(pow(b,2)-4*a*c))/(2*a);
// Verificamos las raíces si están en el rango y asignamos la respuesta
if(X1>=0 and X1<=y/2)
{
Xfinal=X1;
}
if(X2>=0 and X2<=y/2)
{
Xfinal=X2;
}
// Determinamos el volumen máximo
Volumen=(z-2*Xfinal)*(y-2*Xfinal)*Xfinal;
//Presentamos los resultados
cout <<"El corte requerido es (mts) = "<< Xfinal<<endl;
cout <<"El volumen maximo de la caja es (mts cubicos) = "<< Volumen<<endl;
system ("pause");
}
Otra manera es iterar el valor de X desde un valor mínimo hasta la mitad del ancho, el momento que se detecte el máximo volumen se presenta el valor de X y el Volumen.
Programa Nro. 2
/*
Programa Nro. 2 para calculo de cajas de máximo volumen universidad Santa María
Cátedra: Programación II
Profesor Carlos Ferrer
*/
#include <iostream> // *************** LIBRERIA O BIBLIOTECA PARA LEER Y ESCRIBIR EN PANTALLA *************************
#include <math.h> //******** LIBRERIA O BIBLIOTECA PARA OPERACIONES MATEMATICAS*********
using namespace std;
int main()
{
double z=-1,y=-1; // Largo y ancho original de la lamina
double Volumen; //Volumen máximo definitivo
double X; //Corte de la lamina para hacer la caja de máximo volumen
double Volumen_aux; //Volumen auxiliar
// Ingresamos datos iniciales
while (z<=0) // el largo debe ser mayor que cero
{
cout <<"Ingrese largo de la lamina (mts))= "<<endl;
cin >>z;
}
while (y<=0 or y>z) // el ancho debe ser mayor que cero y menor que el largo
{
cout <<"Ingrese ancho de la lamina (mts))= "<<endl;
cin >>y;
}
// Determinamos el volumen auxiliar
X=0.001;
Volumen=(z-2*X)*(y-2*X)*X;
while (X<y/2)
{
X=X+0.001;
Volumen_aux=(z-2*X)*(y-2*X)*X;
if(Volumen_aux<Volumen)
{
break;
}
else
{
Volumen=Volumen_aux;
}
}
X=X-0.001;
//Presentamos los resultados
cout <<"El corte requerido es (mts) = "<< X<<endl;
cout <<"El volumen maximo de la caja es (mts cubicos) = "<< Volumen<<endl;
system ("pause");
}
No hay comentarios.:
Publicar un comentario