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
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Problemas com o PulseAudio no lubuntu (9)
Função que recebe 20 números inteiros e retorna o 6° maior elemento do... (5)