Boa tarde amigos! Eu estou a escrever um programa em pascal (com o compilador freepascal 0.64a) através de varios procedimentos em que se pretende calcular a "flecha" de um função, que equivale à distancia entre os zeros e o mínimo ou máximo e precisava da ajuda de alguem que percebesse disto.
{«««««««««««««««««««««««««««« INTRODUÇÃO DOS DADOS DA VIGA »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»}
Procedure IntDados_Viga(Var L:Real;b,K,E,MI,Beta,Alfa,Lambda:Real);
Begin
Repeat
TextColor(White);
Write('Indique a largura da viga "b"= ');
TextColor(LightGreen);
Readln(;
If (b<=0) then Erro1
Until (b>0);
Repeat
TextColor(White);
Write('Indique o modulo do solo "K"= ');
TextColor(LightGreen);
Readln(K);
If (K<=0) then Erro1
Until (K>0);
Repeat
TextColor(White);
Write('Modulo da elasticidade "E"= ');
TextColor(LightGreen);
Readln(E);
If (E<=0) then Erro1
Until (E>0);
Repeat
TextColor(White);
Write('Indique o momento de inercia "MI"= ');
TextColor(LightGreen);
Readln(MI);
If (MI<=0) then Erro1
Until (MI>0);
Beta:=K*b;
Alfa:=sqrt(sqrt(Beta/(4*E*MI)));
Lambda:=2*Pi/Alfa;
Repeat
TextColor(White);
Write('Indique o comprimento da viga "L" maior que',2.5*Lambda:6:1,'= ');
TextColor(LightGreen);
Readln(L);
If (L<=2.5*Lambda) then Erro2 ('O comprimento da viga insuficiente!');
Until L>2.5*Lambda;
End;
{«««««««««««««««««««««««««««« INTRODUÇÃO DOS DADOS DA CARGA »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»}
Procedure IntDados_Carga(N:Integer; VAR P,a,x:Real; L:Real);
Var i:Integer;
Begin
Repeat
Writeln;
Writeln;
TextColor(White);
Write('Numero de cargas a aplicar= ');
TextColor(LightGreen);
Readln(N);
If (N<1) then Erro2 ('O número de cargas a aplicar tem que ser maior ou igual a 1');
Until (N>=1);
For i:=1 to N do begin
TextColor(White);
Write('Valor da carga P',i:1,'= ');
TextColor(LightGreen);
Readln(P);
Repeat
TextColor(White);
Write('Distancia entre a origem e o ponto de aplicacao da Carga a',i:1,'= ');
TextColor(LightGreen);
Readln(a);
If (a<0) or (a>L) then Erro1
Until (a>=0) and (a<=L);
Repeat
TextColor(White);
Write('Seccao onde pretende obter o valor da flecha x',i:1,'= ');
TextColor(LightGreen);
Readln(x);
If (x<=0) or (x>L) then Erro1
Until (x>0) and (x<=L);
Writeln;
End;
End;
{««««««««««««««««««««««««« NUMERO DE SECCOES EQUIDISTANTES »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»}
Procedure Num_SecEqui(var NEQ:Integer);
Begin
Repeat
TextColor(White);
Write('Indique o numero de seccoes equidistantes (NEQ)= ');
TextColor(LightGreen);
Readln(NEQ);
If(NEQ<0) or (NEQ>Max) then Erro2 ('Atencao: NEQ>0 e NEQ<=100000!');
Until(NEQ>=0) and (NEQ<=Max);
End;
{««««««««««««««««« CALCULO DA FLECHA E DA DISTANCIA DA FLECHA À ORIGEM »»»»»»»»»»»»»»»»»»»}
Procedure Calculo_Flecha(NEQ:Integer;L,P,a,x,Beta,Alfa:Real);
Var Q,B1,B2,Fx:Real;
i:Integer;
Begin
Q:=(P*Alfa)/(2*Beta);
B1:=Alfa*(a-x);
B2:=Alfa*(x-a);
dx:=L/(NEQ);
For i:=0 to NEQ do begin
If(x>=0) and (x<=a) then
Fx:=Q*exp(-B1)*(sin(Alfa*(a-x))+cos(Alfa*(a-x)));
If(x>a) and (x<=L) then
Fx:=Q*exp(-B2)*(sin(Alfa*(x-a))+cos(Alfa*(x-a)));
x:=i*dx;
end;
End;
{«««««««««««««««««««««««««««« RESULTADOS DO CALCULO DA FLECHA »»»»»»»»»»»»»»»»»»»»»»»»»»»»}
Procedure Resultados_Flecha();
Begin
Write;
Readln;
End;
{««««««««««««««««««««««««««««««««« CALCULO DE ZEROS »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»}
Procedure Calculo_Zeros(Beta,Alfa,a,xA,xB,Erro:Real;MaxIteracoes:Integer);
Var xMedio:Real;
FxA,FxMedio:Real;
i:Integer;
Begin
Write('Em construcao');
Readln;
end;
{««««««««««««««««««««««««««««««««««« ABRIR GRAFICO »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»}
Procedure AbrirGrafico();
Begin
Write('Em construcao');
Readln;
End;
{««««««««««««««««««««««««««««««««« GRAFICO DA FLECHA »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»}
Procedure Grafico_Flechas();
Begin
Write('Em construcao');
Readln;
End;
{««««««««««««««««««««««««««««««««« SAIR DO PROGRAMA »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»}
Procedure SairPrograma(var Sair:Char);
Begin
Repeat
Writeln;
TextColor(22);
Write('Pretende Continuar o Programa (S/N)? ');
Sair:=Readkey;
Sair:=UpCase(Sair);
Until Sair IN ['S','N']
End;
{=======================================================================================}
{################################ BLOCO PRINCIPAL###################################
{=======================================================================================}
Begin
Moldura(9);
Password;
Writeln;
TextColor(LightBlue);
Gotoxy(55,22);
Writeln('Continuar Programa.....');
REPEAT UNTIL Keypressed;
Clrscr;
IntDados_Viga(L,b,K,E,MI,Beta,Alfa,Lambda);
IntDados_Carga(N,P,a,x,L);
Num_SecEqui(NEQ);
Calculo_Flecha(NEQ,L,P,a,x,Beta,Alfa);
End.
Preciso da vossa ajuda no ponto 4 (Nao consigo perceber como fazer este passo)
4) Para cada secção de (0 a NEQ) calcular:
4.1) Distância x[ i ] à origem O;
4.2) Flecha F[ i ] para a distância x[ i ];
SERA QUE ALGUEM ME CONSEGUE AJUDAR? OBRIGADO!
Eagle_Eye's Content
There have been 1 items by Eagle_Eye (Search limited from 20/04/2023)