Enviado em 06/09/2019 - 15:39h
O programa sempre apresenta um erro na hora de executar. Estou com dúvida ainda sobre estruturas e classe. Gostaria que alguém me ajudasse a resolver esse problema. Não entendo porque o programa ainda não executa.#ifndef SECAOEML_H
#define SECAOEML_H
// struct define novos tipos agregando campos de
// tipos não necessariamente iguais. Aqui defini-
//mos o tipo SecaoL que agrega dois campos do ti-
//po double.
struct SecaoL
{
double a; //aba da seção em L
double t; //espessura da seção em L
};
// struct define novos tipos apregando campos de
// tipos não necessariamente iguais. Aqui defini-
// mos o tipo Momentos que agrega quatro campos do
// tipo double.
struct Momentos
{
double JAA, JBB, JCC, JDD; //quatro momentos
};
void leValores(SecaoL &, double a, double t);
double calculaB(SecaoL s);
double quadrado(double x);
double calculaX(SecaoL s);
double cubo(double x);
double calculaJAA(SecaoL s);
double calculaJBB(SecaoL s);
double quarta(double x);
double calculaJCC(SecaoL s);
double calculaJDD(SecaoL s);
double calculaAreaA(SecaoL s);
double K(SecaoL s, double J);
Momentos calculaMomentos(SecaoL s);
void calculaMomentos(SecaoL s, Momentos &J);
typedef double VetMomentos[4];
void calculaMomentos(SecaoL s, VetMomentos &J);
bool validaAbaEsp(double &a, double &t);
#endif
#include <cmath>
#include "SecaoEmL.h"
void leValores(SecaoL &s, double a, double t)
{
s.a = a;
s.t = t;
}
double calculaB(SecaoL s)
{
return s.a - s.t;
}
double quadrado(double x)
{
return x * x;
}
double calculaX(SecaoL s)
{
double b = calculaB(s); // Chamada.
return (quadrado(s.a) + b * s.t) /
(2.0 * (s.a + b));
}
double cubo(double x)
{
return quadrado(x) * x;
}
double calculaJAA(SecaoL s)
{
double x = calculaX(s); // Chamada.
return (s.t * cubo(s.a - x) + s.a * cubo(x) - s.a *
cubo (x - s.t)) / 3.0;
}
double calculaJBB(SecaoL s)
{
return calculaJAA(s); //Chamada.
}
double quarta(double x)
{
return quadrado(quadrado (x)); // Chamada.
}
double calculaJCC(SecaoL s)
{
double b = calculaB(s); // Chamada.
return (b * cubo(s.t) + cubo(b) * s.t + 3.0 *
quadrado(s.a) * b * s.t + quarta(s.t)) / 12.0;
}
double calculaJDD(SecaoL s)
{
double b = calculaB(s); //Chamada.
double x = calculaX(s); //Chamada
return (b * cubo(s.t) + cubo(b) * s.t + 3.0 *
b * s.t * quadrado(s.a - 4.0 * x + 2.0 *
s.t) + quarta(s.t) + 6.0 * quadrado(s.t) *
quadrado(2.0 * x - s.t)) / 12.0;
}
double calculaArea(SecaoL s)
{
double b = calculaB(s); // Chamada.
return s.t * (s.a + b);
}
double k(SecaoL s, double J)
{
double A = calculaArea(s); // Chamada.
return sqrt(J / A);
}
Momentos calculaMomentos(SecaoL s)
{
Momentos J;
double b = calculaB(s); // Chamada.
double x = calculaX(s); // Chamada.
J.JBB = J.JAA = (s.t * cubo(s.a - x) + s.a *
cubo (x) - s.a * cubo(x - s.t)) / 3.0;
J.JCC = (b * cubo(s.t) + cubo(b) * s.t + 3.0 *
quadrado(s.a) * b * s.t + quarta(s.t)) / 12.0;
J.JDD = (b * cubo(s.t) + cubo(b) * s.t + 3.0 *
b * s.t * quadrado(s.a - 4.0 * x + 2.0 *
s.t) + quarta(s.t) + 6.0 * quadrado(s.t) *
quadrado(2.0 * x - s.t)) / 12.0;
return J;
}
void calculaMomentos(SecaoL s, Momentos &J)
{
double b = calculaB(s); // Chamada.
double x = calculaX(s); // Chamada.
J.JBB = J.JAA = (s.t * cubo(s.a - x) + s.a *
cubo(x) - s.a * cubo(x - s.t)) / 3.0;
J.JCC = (b * cubo(s.t) + cubo(b) * s.t + 3.0 *
quadrado(s.a) * b * s.t + quarta(s.t)) / 12.0;
J.JDD = (b * cubo(s.t) + cubo(b) * s.t + 3.0 * b *
s.t * quadrado(s.a - 4.0 * x + 2.0 * s.t) +
quarta(s.t) + 6.0 * quadrado(s.t) *
quadrado(2.0 * x - s.t)) / 12.0;
}
void calculaMomentos(SecaoL s, VetMomentos &J)
{
double b = calculaB(s); // Chamada.
double x = calculaX(s); //Chamada.
J[1] = J[0] = (s.t * cubo(s.a - x) + s.a * cubo(x) -
s.a * cubo(x - s.t)) / 3.0;
J[2] = (b * cubo(s.t) + cubo(b) * s.t + 3.0 *
quadrado(s.a) * b * s.t + quarta(s.t)) / 12.0;
J[3] = (b * cubo(s.t) + cubo(b) * s.t + 3.0 * b *
s.t * quadrado(s.a - 4.0 * x + 2.0 * s.t) +
quarta(s.t) + 6.0 * quadrado(s.t) *
quadrado(2.0 * x - s.t)) / 12.0;
}
bool validaAbaEsp(double &a, double &t)
{
if(a <= 0.0)
{
a = 10.0;
validaAbaEsp(a,t);
return false;
}
if(t <= 0.0)
{
t = 2.0;
validaAbaEsp(a,t);
return false;
}
if(a < t)
{
a = t;
return false;
}
return true;
}
#include <iostream>
#include "SecaoEmL.h"
using namespace std;
int main (int argc, char *argv[]){
cout << endl;
cout << "Programa para calcular e exibir as medidas da Seção L usando estruturas e classes" << endl;
cout << endl;
SecaoL s1;
cout << "Aba (a) da secao s1 (em cm)?...";
cin >> s1.a;
cout << "Espessura (t) da secao s1 (em cm)?...";
cin >> s1.t;
cout << calculaB(s1) << " cm" << endl;
cout << calculaX(s1) << " cm" << endl;
cout << calculaJAA(s1) << " cm⁴" << endl;
cout << calculaJBB(s1) << " cm⁴" << endl;
cout << calculaJCC(s1) << " cm⁴" << endl;
cout << calculaJDD(s1) << " cm⁴" << endl;
cout << calculaAreaA(s1) << " cm²" << endl;
cout << K(s1, s1.JBB) << " cm" << endl;
SecaoL s2;
leValores(s2, 10.0, 2.0);
Momentos M = calculaMomentos(s2);
cout << M.JAA << " cm⁴" << endl;
cout << M.JBB << " cm⁴" << endl;
cout << M.JCC << " cm⁴" << endl;
cout << M.JDD << " cm⁴" << endl;
SecaoL s3;
s3.a = -4.0;
s3.t = 2.0;
if(validaAbaEsp(s3.a, s3.t))
cout << "Valores validos!" << endl;
else cout << "Valores invalidos. Alterados!" << endl;
return 0;
}
Aprenda a Gerenciar Permissões de Arquivos no Linux
Como transformar um áudio em vídeo com efeito de forma de onda (wave form)
Como aprovar Pull Requests em seu repositório Github via linha de comando
Mantenha seu Sistema Leve e Rápido com a Limpeza do APT!
Procurando vídeos de YouTube pelo terminal e assistindo via mpv (2025)
Gravação de tela com temporizador
como instalo panfrost-dri e o driver panfrost fork , ou panfrost (16)
problema no debian que poderia ser corrigido por comando? (12)
Usar uma VM dentro do meu notebook como firewall para um dispositivo e... (0)
Eu tive esse erro aqui depois de de baixar o HyprLand Ubuntu na versão... (1)