jueves, 30 de abril de 2026

02i.- Programación II - Ejercicio a trabajar en clase 29 de abril de 2026 (Semestre 2026 - II) - Solución del Profesor

 

SOLUCIÓN

VIDEO EXPLICATIVO


Programa Nro. 1 Método de Iteración

/* Programa que calcula las soluciones para el ejercicio del

   dilema de la faraona, aplicando el método de la iteración

   revisión abril 2026

   elaborado por: Carlos Ferrer

*/   

#include<iostream>

#include<math.h>

#include<locale.h>

using namespace std;

main()

{

double R,g=9.81,m1,m2,p1,p2,Q,t,a; //Variables del ejercicio

double aux; //aceleración auxiliar

setlocale(LC_ALL,"spanish");

//ingresamos datos

cout <<endl<<"Ingrese masa de la caja Nro.1 en kg = "<<endl;

cin >>m1;

cout <<endl<<"Ingrese la aceleración del sistema en m/seg2 = "<<endl;

cin >>a;

cout <<endl<<"Ingrese la relación entre m1 y m2 (m2 = m1 x R) = "<<endl;

cin >>R;

m2=m1*R;

p1=m1*g;

p2=m2*g;

// calculamos tensión

t= m1*a+p1*sin(20*M_PI/180)+p1*cos(20*M_PI/180)*0.12;

// iteramos

while ((aux-a)<-0.0001 or (aux-a)>0.0001 )

{

Q=Q+0.001;

aux= (p2*sin(Q*M_PI/180)-p2*cos(Q*M_PI/180)*0.12-t)/m2;

//evaluamos el caso de no obtener solución

if (Q>90)

{

cout <<endl<<"No existe un ángulo Q que mueva el sistema en ese sentido"<<endl;

goto fin;

}

}

//presentamos resultados

cout <<endl<<"El angulo Q corresponde a = "<<Q<<" Grados"<<endl;

fin:

cout <<endl<<"La tensión de la cuerda es igual a = "<<t<<" Newtons"<<endl;

cout <<endl<<"La distancia BC en metros = "<<1500*sin(20*M_PI/180)/sin(Q*M_PI/180)<<" metros"<<endl;

if (t>600)

{

cout <<endl<<"La tensión es superior a la que soporta la cuerda (600 newtons) ";

cout <<endl<<"por favor no implemente el sistema!!!! "<<endl;

}

}

Programa Nro. 1 Método Matemático

/* Programa que calcula las soluciones para el ejercicio del

   dilema de la faraona, aplicando el método matemático

   revisión abril 2026

   elaborado por: Carlos Ferrer

*/   

#include<iostream>

#include<math.h>

#include<locale.h>

using namespace std;


main()

{

double R,g=9.81,m1,m2,p1,p2,Q=100,t,a,aux,x;

double Q1,Q2; //Ángulos a obtener por la resolvente

double a1,b1,c1; //Datos de la resolvente

setlocale(LC_ALL,"spanish");

// Ingresamos datos iniciales

cout <<endl<<"Ingrese masa de la caja Nro.1 en kg = "<<endl;

cin >>m1;

cout <<endl<<"Ingrese la aceleración del sistema en m/seg2 = "<<endl;

cin >>a;

cout <<endl<<"Ingrese la relación entre m1 y m2 (m2 = m1 x R) = "<<endl;

cin >>R;

m2=m1*R;

p1=m1*g;

p2=m2*g;


    // Calculamos tensión

t= m1*a+p1*sin(20*M_PI/180)+p1*cos(20*M_PI/180)*0.12;

x= t+m2*a;

// Determinamos las constantes de la resolvente

a1=pow(p2,2)*pow(0.12,2)+pow(p2,2);

b1=2*p2*0.12*x;

c1=pow(x,2)-pow(p2,2);

//Calculamos los dos ángulos posibles

Q1=(acos((-b1+sqrt(pow(b1,2)-4*a1*c1))/(2*a1)))*180/M_PI;

Q2=(acos((-b1-sqrt(pow(b1,2)-4*a1*c1))/(2*a1)))*180/M_PI;

//Determinamos el ángulo correcto

if(Q1>0 and Q1<90)

{

Q=Q1;

}

if(Q2>0 and Q2<90)

{

Q=Q2;

}

if(Q==100)

{

cout <<endl<<"No existe un angulo Q que mueva el sistema en ese sentido"<<endl;

goto fin;

}

//terminamos de presentar los resultados


cout <<endl<<"El angulo Q corresponde a = "<<Q<<" Grados"<<endl;

fin:

cout <<endl<<"La tensión de la cuerda es igual a = "<<t<<" Newtons"<<endl;

cout <<endl<<"La distancia BC en metros = "<<1500*sin(20*M_PI/180)/sin(Q*M_PI/180)<<" metros"<<endl;

if (t>600)

{

cout <<endl<<"La tensión es superior a la que soporta la cuerda (600 newtons) ";

cout <<endl<<"por favor no implemente el sistema!!!! "<<endl;

}

}







No hay comentarios.:

Publicar un comentario