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;
}
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
VMs e Interfaces de Rede desapareceram (12)
Instalação do drive do adaptador wiffi (7)