miércoles, 24 de septiembre de 2025

01.- Programación II - Ejercicio de Manejo de Costos - Tipo Parcial Nro 3 - Solución del Profesor

Dos vigas de 20 y 28 mts de Altura se encuentran a una distancia de (L) de metros entre ellas. Se han de sujetar con una Guaya fijada en un solo punto desde el suelo a los extremos superiores de las vigas. El día de hoy la distancia entre las dos vigas L es de 30 metros. El costo del metro lineal de Guaya es de 2.95$.





La idea es determinar el punto P en donde el costo de comprar las Guayas sea mínimo. 

Conociendo la distancia L usted debe elaborar un programa que determine:
  •  La ubicación del punto P 
  • El costo de la Guaya para el segmento Z (Costo mínimo)
  • El Costo de la Guaya para el segmento Y (Costo mínimo)


Los únicos dos (2) datos que se deben ingresar al programa son:
  • Costo del Metro Lineal de Guaya en $.
  • Distancia entre las dos Vigas (L) en metros.

Solución




Programa Nro. 1
Solución Matemática

/* Programa para determinar el punto P en donde el costo de comprar los
   segmentos de guaya se hace mínimo

   Elaborado por Carlos Ferrer

   Rev. Sep 2025*/


#include <iostream> // Agregue la biblioteca de manejo de consola 

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

using namespace std;

main()

{
double v1=0,v2=0; //dimensiones de las vigas en mts
double l=0; //distancia de las dos vigas en mts
double cg=-1; // costo del metro de guaya en $
double a,b,c; // coeficientes de la ecuación de 2do grado
double x1,x2; // resultados de la resolvente
double X; // distancia X según dibujo

do
{
cout <<"Ingrese la longitud de la viga de la izquierda (mts) = ";
cin >>v1;
}
while (v1<=0);

do
{
cout <<"Ingrese la longitud de la viga de la derecha (mts) = ";
cin >>v2;
}
while (v2<=0);

do
{
cout <<"Ingrese la distancia entre las dos vigas (mts) = ";
cin >>l;
}
while (l<=0);

do
{
cout <<"Ingrese el costo del mts de guaya ($) = ";
cin >>cg;
}
while (cg<0);

// determinamos los coeficientes

a=pow(v2,2)-pow(v1,2);
b=2*pow(v1,2)*l;
c=-pow(v1,2)*pow(l,2);

// obtenemos los resultados de la resolvente

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

//determínanos la solución que se encuentre entre 0 y l

if (x1>=0 and x1<=l)
{
X=x1;
}
else
{
X=x2;
}


//Determinamos la solución si el coeficiente a=0

if (a==0)
{
X=-c/b;
}

//Presentamos los resultados

cout <<endl<<"El punto P se encuentra a "<<X<<" metros de la base de la viga"<<endl;
cout <<"de la izquierda"<<endl<<endl;
cout <<"El segmento de guaya Y costara = "<< sqrt(pow(X,2)+pow(v1,2))*cg<<" $ "<<endl;
cout <<"El segmento de guaya Z costara = "<< sqrt(pow(l-X,2)+pow(v2,2))*cg<<" $ "<<endl<<endl;
system("pause");
}

 

Programa Nro. 2

por iteración

/* Programa para determinar el punto P en donde el costo de comprar los

   segmentos de guaya se hace mínimo


   Elaborado por Carlos Ferrer


   Rev. Sep 2025*/


#include <iostream> // Agregue la biblioteca de manejo de consola 

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

using namespace std;


main()


{

double v1=0,v2=0; //dimensiones de las vigas en mts

double l=0; //distancia de las dos vigas en mts

double cg=-1; // costo del metro de guaya en $

double costo_actual=0,costo_anterior=0; // costos de la iteración

double X=0; // distancia X según dibujo


do

{

cout <<"Ingrese la longitud de la viga de la izquierda (mts) = ";

cin >>v1;

}

while (v1<=0);


do

{

cout <<"Ingrese la longitud de la viga de la derecha (mts) = ";

cin >>v2;

}

while (v2<=0);


do

{

cout <<"Ingrese la distancia entre las dos vigas (mts) = ";

cin >>l;

}

while (l<=0);


do

{

cout <<"Ingrese el costo del mts de guaya ($) = ";

cin >>cg;

}

while (cg<0);


//Determinamos el costo en X=0


costo_anterior=sqrt(pow(X,2)+pow(v1,2))*cg+sqrt(pow(l-X,2)+pow(v2,2))*cg;


//Iteramos el valor de X hasta conseguir el costo mínimo


while (X<=l)

{

X=X+0.001;

costo_actual=sqrt(pow(X,2)+pow(v1,2))*cg+sqrt(pow(l-X,2)+pow(v2,2))*cg;

// Cuando el costo actual sea mayor que el anterior paro la iteración

if (costo_actual>costo_anterior) 

{

X=X-0.001;

break;

}

else

{

costo_anterior=costo_actual;

}

}


//Presentamos los resultados


cout <<endl<<"El punto P se encuentra a "<<X<<" metros de la base de la viga"<<endl;

cout <<"de la izquierda"<<endl<<endl;

cout <<"El segmento de guaya Y costara = "<< sqrt(pow(X,2)+pow(v1,2))*cg<<" $ "<<endl;

cout <<"El segmento de guaya Z costara = "<< sqrt(pow(l-X,2)+pow(v2,2))*cg<<" $ "<<endl<<endl;

system("pause");

}

No hay comentarios.:

Publicar un comentario