miércoles, 2 de julio de 2025

04.- Programación II - Calificaciones 4to corte - Calificaciones Acumuladas

 



04.- Programación II - Parcial Nro. 4 - Solución del Profesor

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 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 (Máximo Volumen)


2.- Dado el siguiente programa:

#include<iostream>
double auxd=0,aux,resta=0,i;
int num=0; //Valor de Entrada al programa
int auxi=0,j;
int b[7]={0,0,0,0,0,0,0}, e[7]={0,0,0,0,0,0,0}; //Vectores de Salida del programa
using namespace std;
int main()
{


cout <<"Elaborado por Wilmer Duque - Catedra Programacion - USM"<<endl;
cout <<"Semestre 2019-II"<<endl;
inicio:


while (num<2 or num>2500)
{
cout <<"Ingrese numero (2-2500)="<<endl;
cin >>num;
aux=num; 
}


for (i=2;i<=aux;i=i+1) //Determinamos si cumple con la condición requerida
{
  auxi=aux/i;
  auxd=aux/i;
  resta= auxd -auxi;


  if (resta== 0) // Guardamos cada elemento donde corresponde
  {
   for (j=1;j<9;j=j+1)
   {
       if (b[j]==i) 
    {
        e[j]=e[j]+1;
        auxi=0;
        auxd=0;
    }
    if (b[j]==0) 
    {
     b[j]=i;
     e[j]=1;
     auxi=0;
     auxd=0;
    }
    if (auxi==0)
    {
    j=100; 
    }
   }
   aux=aux/i; 
  i=1;        
  
  }
 
}

system("cls");

auxd=0;
while (auxd!=1 and auxd!=2)
{
cout <<"Ingrese (1) para terminar o (2) para ingresar otro numero "<<endl;
cin >>auxd;
}

if (auxd==2)
{
  num=0;
  for (j=1;j<=6;j=j+1) 
     {
b[j]=0;
     e[j]=0;
     }
}
 system("cls");
 goto inicio;
}

Indique en sus propias palabras:

a.- Que hace el programa? 
b.- Cual es el objetivo del vector "e[7]"?
c.- Cual es el objetivo del vector "b[7]"?


Solución

Pregunta Nro1.






Programa

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

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

semestre 2022-I

Elaborado por Carlos Ferrer

Fecha: 30 de Oct 2021

*/


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

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


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; //Área del rectángulo y Área del trapecio

double Q; //Ángulo de elevación del lateral del trapecio

double volumen; //Volumen para cada ángulo


/*Area total de la base de madera en donde se obtiene el máximo volumen 

(Area del rectángulo + Area del trapecio)*/

double area_tot; 

double volumen_final=0; //Volumen máximo del bebedero

double Q_final; //Angulo donde se obtiene el máximo volumen 

//Área del rectángulo y Área del trapecio que juntos dan el área máxima de la base

double area_rec_optimo,area_trap_optimo; 

double x_optimo; //Valor de x donde se obtiene el máximo volumen 



using namespace std;

main()


{

//Elaboramos un ciclo que determine el ángulo donde se da el volumen máximo


while(ancho<1.5 or ancho>2.5)

{

cout <<"Ingrese el ancho de la lamina.  (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;

}

}



for (Q=0;Q<=90;Q=Q+0.01)

{


base1=ancho/5;

x= ancho/5*cos(Q*M_PI/180);

base2=base1+2*x;

h= ancho/5*sin(Q*M_PI/180);

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

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

area_tot=area_rec+area_trap;

volumen=area_tot*3*1000;

if (volumen>volumen_final)

{

volumen_final=volumen;

        Q_final=Q;

area_rec_optimo=area_rec;

area_trap_optimo=area_trap;

x_optimo=x;

}

}


//Presentamos el resultado

system("cls");

cout <<"Para una lamina 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_final<<" grados"<<endl;

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

cout <<"El area total de la base es igual = "<< area_rec_optimo+area_trap_optimo<<" mts2"<<endl;

cout <<"(Area del Rectangulo = "<<area_rec_optimo<<" mts2 + Area del Trapecio = "<<area_trap_optimo<<" mts2)"<<endl<<endl;


cout <<"EL VOLUMEN MAXIMO DEL BEBEDERO ES DE "<<volumen_final;

cout << " LITROS PARA UNA LAMINA DE "<<ancho<<" MTS DE ANCHO"<<endl<<endl;


cout <<"MUCHO EXITO PARA TODOS!!!!"<<endl<<endl;

system ("pause");

}