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;
}
Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
Instalar e Configurar o Slackware Linux em 2025
Como configurar os repositórios do apt no Debian 12 em 2025
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Configurando o Conky para iniciar corretamente no sistema
3 configurações básicas que podem melhorar muito a sua edição pelo editor nano
Como colorir os logs do terminal com ccze
Instalação Microsoft Edge no Linux Mint 22
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
firefox nao guarda meus logins nos sites (1)
Instalar debian testing (13) "por cima" do debian 12 (2)
Erro de segmentação «Segmentation fault (core dumped)» ao retornar obj... (1)