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;
}
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Criando uma VPC na AWS via CLI
Multifuncional HP imprime mas não digitaliza
Dica básica para escrever um Artigo.
Como Exibir Imagens Aleatórias no Neofetch para Personalizar seu Terminal
Melhorando a precisão de valores flutuantes em python[AJUDA] (11)
GLPI - Configuração de destinatário com conta Microsoft Exchange (0)
Vou voltar moderar conteúdos de Dicas e Artigos (3)
OpenVPN no MACBOOK conecta mas não pinga pastas de rede compartilhada ... (1)