miércoles, 1 de octubre de 2025

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

   





Programa Nro. 1 (Pitágoras) en C++

/* programa para determinar la longitud máxima de la cabilla para poder pasar
entre dos pasillos de diferente ancho en "L" - Modelo 2 Parcial Nro. 1 
Semestre 2023-II - Basado en Teorema de Pitágoras.

Elaborado por el profesor Carlos Ferrer - Oct 2024
Rev. 0
*/

// Bibliotecas requeridas


#include<iostream>
#include<math.h>
#include<locale.h>

using namespace std;

main()


{

 double a,b; // Lados desconocidos de los dos triángulos de la solución
 double Q; // Angulo de los triángulos
 double L; //Longitud de la cabilla
 double L1,L2; //Segmentos de la cabilla
 double P1=0,P2=0; //Ancho de los pasillos 1 y 2 
  
setlocale(LC_ALL,"spanish"); 


while (P1<6 or P1>12)
     {
     cout<<"Ingrese ancho del pasillo Nro. 1 (mts) = ";
     cin>>P1;
     }

while (P2<6 or P2>12)
     {
     cout<<"Ingrese ancho del pasillo Nro. 2 (mts) = ";
     cin>>P2;
     }


 // Determinamos la distancia a del triangulo

a= cbrt (P1*pow(P2,2));

 // Determinamos L2

L2=sqrt(pow(P2,2)+pow(a,2));

//Determinamos L1

L1=P1*L2/a;

// Determinamos theta

Q=asin(a/L2);


// PRESENTAMOS LOS RESULTADOS

 cout<<endl<<"La longitud máxima de la cabilla en (mts) = "<<L1+L2<<endl;
 cout<<endl<<"El angulo Theta en radianes = "<<Q<<endl;
 cout<<"El angulo Theta en grados (Degree) = "<<Q*180/M_PI<<endl<<endl;

 cout<<"CON ESTAS CANTIDADES SE OBTIENE LA CABILLA DE MAXIMA LONGITUD QUE PUEDE"<<endl; 
 cout<<"PASAR POR LOS PASILLOS SIN AFECTAR LAS PAREDES!!!"<<endl<<endl;

 system("pause");

}


Programa Nro. 1 (Pitágoras) en Python

# programa para determinar la longitud máxima de la cabilla para poder pasar
# entre dos pasillos de diferente ancho en "L" - Modelo 2 Parcial Nro. 1
# Semestre 2023-II - Basado en Teorema de Pitágoras.

#Elaborado por el profesor Carlos Ferrer - Oct 2024
#Rev. 0

# Bibliotecas requeridas

import math

# Lados desconocidos de los dos triángulos de la solución
a, b = 0, 0
# Angulo de los triángulos
Q = 0
# Longitud de la cabilla
L = 0
# Segmentos de la cabilla
L1, L2 = 0, 0
# Ancho de los pasillos 1 y 2
P1, P2 = 0, 0

while P1 < 6 or P1 > 12:
    P1 = float(input("Ingrese ancho del pasillo Nro. 1 (mts) = "))

while P2 < 6 or P2 > 12:
    P2 = float(input("Ingrese ancho del pasillo Nro. 2 (mts) = "))

# Determinamos la distancia a del triangulo
a = (P1 * P2 ** 2) ** (1/3)
# Determinamos L2
L2 = math.sqrt(P2 ** 2 + a ** 2)
# Determinamos L1
L1 = P1 * L2 / a
# Determinamos Theta
Q = math.asin(a / L2)

# PRESENTAMOS LOS RESULTADOS
print(f"\nLa longitud máxima de la cabilla en (mts) = {L1 + L2}")
print(f"\nEl angulo Theta en radianes = {Q}")
print(f"El angulo Theta en grados (Degree) = {Q * 180 / math.pi}\n\n")

print("CON ESTAS CANTIDADES SE OBTIENE LA CABILLA DE MAXIMA LONGITUD QUE PUEDE")
print("PASAR POR LOS PASILLOS SIN AFECTAR LAS PAREDES!!!\n\n")

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



Programa Nro. 2 (Trigonometría)

/* programa para determinar la longitud máxima de la cabilla para poder pasar
entre dos pasillos de diferente ancho en "L" - Modelo 2 Parcial Nro. 1 
Semestre 2023-II - Basado en Teorema de trigonometría.

Elaborado por el profesor Carlos Ferrer - Oct 2024
Rev. 0
*/

// Bibliotecas requeridas

#include<iostream>
#include<math.h>
#include<locale.h>
using namespace std;

main()


{

 double Q; // Angulo de los triángulos
 double L; //Longitud de la cabilla
 double P1=0,P2=0; //Ancho de los pasillos 1 y 2 
  
 setlocale(LC_ALL,"spanish"); 


while (P1<=6 or P1>12)
  {
  cout<<"Ingrese ancho del pasillo Nro. 1 (mts) = ";
  cin>>P1;
  }

while (P2<=6 or P2>12)
  {
  cout<<"Ingrese ancho del pasillo Nro. 2 (mts) = ";
  cin>>P2;
  }

// Determinamos theta

Q=atan(cbrt(P1/P2));


 // Determinamos L

L=P1/sin(Q)+P2/cos(Q);


// PRESENTAMOS LOS RESULTADOS

 cout<<endl<<"La longitud máxima de la cabilla en (mts) = "<<L<<endl;
 cout<<endl<<"El angulo Theta en radianes = "<<Q<<endl;
 cout<<"El angulo Theta en grados (Degree) = "<<Q*180/M_PI<<endl<<endl;

 cout<<"CON ESTAS CANTIDADES SE OBTIENE LA CABILLA DE MAXIMA LONGITUD QUE PUEDE"<<endl; 
 cout<<"PASAR POR LOS PASILLOS SIN AFECTAR LAS PAREDES!!!"<<endl<<endl;

 system("pause");

}

Programa Nro. 2 (Trigonometría) en Python

# Programa para determinar la longitud máxima de la cabilla para poder pasar
# entre dos pasillos de diferente ancho en "L" - Modelo 2 Parcial Nro. 1
# Semestre 2023-II - Basado en Teorema de trigonometría.

# Elaborado por el profesor Carlos Ferrer - Oct 2024
# Rev. 0


# Bibliotecas requeridas

import math

# Angulo de los triángulos
Q = 0
#Longitud de la cabilla
L = 0
#Ancho de los pasillos 1 y 2
P1 = 0
P2 = 0

while P1 <= 6 or P1 > 12:
    P1 = float(input("Ingrese ancho del pasillo Nro. 1 (mts) = "))

while P2 <= 6 or P2 > 12:
    P2 = float(input("Ingrese ancho del pasillo Nro. 2 (mts) = "))

# Determinamos theta
Q = math.atan(P1**(1/3) / P2**(1/3))
# Determinamos L
L = P1/math.sin(Q) + P2/math.cos(Q)


# Presentamos resultados
print(f"\nLa longitud máxima de la cabilla en (mts) = {L}")
print(f"\nEl angulo Theta en radianes = {Q}")
print(f"El angulo Theta en grados (Degree) = {Q*180/math.pi}\n\n")

print("CON ESTAS CANTIDADES SE OBTIENE LA CABILLA DE MAXIMA LONGITUD QUE PUEDE")
print("PASAR POR LOS PASILLOS SIN AFECTAR LAS PAREDES!!!\n\n")

input("Presione Enter para continuar..")


Programa Nro. 3 (Iteración del ángulo θ)

/* programa para determinar la longitud máxima de la cabilla para poder pasar
entre dos pasillos de diferente ancho en "L" - Modelo 2 Parcial Nro. 1 
Semestre 2023-II - Basado en Iteración del angulo

Elaborado por el profesor Carlos Ferrer - Oct 2024
Rev. 0
*/

// Bibliotecas requeridas

#include<iostream>
#include<math.h>
#include<locale.h>
using namespace std;

main()


{

 double Q; // Angulo de los triángulos
 double L,L_Anterior; //Longitud de la cabilla y Longitud de la iteración anterior
 double P1=0; //ancho pasillo 1
 double P2=0; //ancho pasillo 2
   
 setlocale(LC_ALL,"spanish"); 


while (P1<=6 or P1>12)
  {
  cout<<"Ingrese ancho del pasillo Nro. 1 (mts) = ";
  cin>>P1;
  }

while (P2<=6 or P2>12)
  {
  cout<<"Ingrese ancho del pasillo Nro. 2 (mts) = ";
  cin>>P2;
  }

// Determinamos theta y L

Q=0.000001;
L_Anterior=P1/sin(Q)+P2/cos(Q);
while(Q<90)
{
Q=Q+0.000001;
L=P1/sin(Q)+P2/cos(Q);
if (L_Anterior<L)
{
L=L_Anterior;
break;
}
else
{
L_Anterior=L;
}
}

// PRESENTAMOS LOS RESULTADOS

 cout<<endl<<"La longitud máxima de la cabilla en (mts) = "<<L<<endl;
 cout<<endl<<"El angulo Theta en radianes = "<<Q<<endl;
 cout<<"El angulo Theta en grados (Degree) = "<<Q*180/M_PI<<endl<<endl;

 cout<<"CON ESTAS CANTIDADES SE OBTIENE LA CABILLA DE MAXIMA LONGITUD QUE PUEDE"<<endl; 
 cout<<"PASAR POR LOS PASILLOS SIN AFECTAR LAS PAREDES!!!"<<endl<<endl;

 system("pause");

}




Programa Nro. 3 (Iteración del ángulo θ) en Python

# programa para determinar la longitud máxima de la cabilla para poder pasar
# entre dos pasillos de diferente ancho en "L" - Modelo 2 Parcial Nro. 1
# Semestre 2023-II - Basado en Iteración del angulo
# Elaborado por el profesor Carlos Ferrer - Oct 2024
# Rev. 0

# Biblioteca requerida
import math

# Angulo de los triángulos
Q = 0.000001
# Longitud de la cabilla y Longitud de la iteración anterior
L_Anterior = 0
# ancho pasillo 1
P1 = 0
# ancho pasillo 2
P2 = 0

while P1 <= 6 or P1 > 12:
    P1 = float(input("Ingrese ancho del pasillo Nro. 1 (mts) = "))

while P2 <= 6 or P2 > 12:
    P2 = float(input("Ingrese ancho del pasillo Nro. 2 (mts) = "))

# Determinamos L para Q=0.000001
L_Anterior = P1 / math.sin(Q) + P2 / math.cos(Q)

# Determinamos theta y L  definitivas iterando
while Q < 90:
    Q =Q+0.000001
    L = P1 / math.sin(Q) + P2 / math.cos(Q)
    if L_Anterior < L:
        L = L_Anterior
        break
    else:
        L_Anterior = L

# PRESENTAMOS LOS RESULTADOS

print(f"\nLa longitud máxima de la cabilla en (mts) = {L}")
print(f"\nEl angulo Theta en radianes = {Q}")
print(f"El angulo Theta en grados (Degree) = {Q * 180 / math.pi}\n\n")

print("CON ESTAS CANTIDADES SE OBTIENE LA CABILLA DE MAXIMA LONGITUD QUE PUEDE")
print("PASAR POR LOS PASILLOS SIN AFECTAR LAS PAREDES!!!\n\n")

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



EXITOS!!

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.


01h.- Programación II - Bebedero de máxima capacidad (Semestre 2026-I) - 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)



Solución

Pregunta Nro1.





Aplicamos Iteración (tanteo) para determinar las medidas que arrojan máximo volumen

Programa

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

Elaborado por Carlos Ferrer

Rev sep 2025

*/


#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");

}



jueves, 25 de septiembre de 2025

01g.- Programación II - Bebedero de máxima capacidad (Semestre 2026-I)

 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)

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");

}

martes, 23 de septiembre de 2025

01f.- Programación II - Ejercicio de Manejo de Costos - Tipo Parcial Nro 3


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.