10 REM PROGRAMA PARA CALCULAR AXILES Y DESPLAZAMIENTOS EN ESTRUTURAS HIPERESTATICAS 20 CLEAR 25 ANGLE 1 30 CLS 40 PRINT "INTRODUCIR DATOS" 50 PRINT "COORDENADAS NUDOS(m)" 60 INPUT "Num. nudos=";N 70 DIM X(N),Y(N),V(2*N) 75 CLS 80 FOR I=1 TO N 90 LOCATE 0,0:PRINT"Nudo Coord.x(m) Coord.y(m)" 100 PRINTI;" ";:INPUT X(I) 110 LOCATE 22,1:INPUTY(I) 120 LOCATE 0,1:PRINT" " 130 NEXT I 150 INPUT"CORREGIR(S/N)";A$ 160 IF A$="S" THEN 170 ELSE 200 170 INPUT "NUDO";A 175 IF A=0 THEN 200 180 INPUT "Coord.x=";X(A) 190 INPUT"Coord.y(m)=";Y(A) 195 GOTO 170 200 CLS 210 PRINT "Caract. barras" 220 INPUT "Num. barras";B 230 INPUT "RIGIDEZ IGUAL(S/N)";A$ 240 IF A$<>"N" THEN INPUT"EA(Tn)";K1 250 DIM D(B),F(B),G(B),K(B) 255 CLS 260 FOR I=1 TO B 270 LOCATE 0,0:PRINT"Barra nudo.d nudo.f EA" 280 PRINT I;" ";:INPUT D(I) 290 LOCATE 17,1:INPUT F(I):F=F(I):D=D(I) 295 LOCATE 23,1 300 IF A$<>"N" THEN PRINTK1:K(I)=K1 310 IF A$="N" THEN INPUTK(I) 320 LOCATE 0,1:PRINT" " 340 IF F-D>W THEN W=F-D 350 X=X(F(I))-X(D(I)):Y=Y(F(I))-Y(D(I)):L=SQR(X^2+Y^2):K(I)=K(I)/L 360 IF X=0 THEN G(I)=+PI/2*SGN(Y)ELSE G(I)=ATN(Y/X) 370 IF X<0 THEN G(I)=G(I)+PI 380 NEXT I 385 W=(W+1)*2 390 INPUT"CORREGIR(S/N)";A$ 400 IF A$<>"S" THEN 450 410 INPUT "BARRA";A 415 IF A=0 THEN 450 420 INPUT"Nudo d";D(A):INPUT"Nudo f";F(A):INPUT"EA(Tn)";K(A) 430 X=X(F(A))-X(D(A)):Y=Y(F(A))-Y(D(A)):L=SQR(X^2+Y^2):K(A)=K(A)/L 435 IF X=0 THEN G(A)=-PI/2*SGN(Y)ELSE G(A)=ATN(Y/X) 440 IF X<0 THEN G(A)=G(A)+PI 445 GOTO 410 450 CLS 460 PRINT"APOYOS" 470 INPUT"Num. de coacciones";A 480 DIM R(A+2*N),T(A) 490 FOR I=1 TO A 500 PRINT"COACCION";I,:INPUT"s/eje ox ,nudo coacc.";R:IF R>0 THEN R(I)=2*R-1:T(I)=0:I=I+1 510 PRINT"COACCION";I,:INPUT"s/eje oy ,nudo coacc.";R:IF R>0 THEN R(I)=2*R:T(I)=1 520 IF R=0 THEN I=I-1 530 NEXT I 540 INPUT"CORREGIR(S/N)";A$ 550 IF A$="S" THEN 450 560 IF A$<>"N" THEN 540 570 CLS:DIM A(2*N,W),C(2*N) 580 PRINT" DATOS DE CARGA" 590 LOCATE 0,1:PRINT"Nudo Fx(Tn) Fy(Tn)" 600 LOCATE 0,2:INPUTI:IF I>N OR I<0 THEN 600 610 IF I=0 THEN 650 620 LOCATE 9,2:INPUT C(2*I-1):LOCATE 20,2:INPUT C(2*I) 630 LOCATE 0,2:PRINT" " 640 GOTO 600 650 INPUT"CORREGIR(S/N)";A$ 660 IF A$="S" THEN ERASE A,C:GOTO 570 710 FOR I=1 TO B:D=D(I):F=F(I) 720 Z=2*D:V=(F-D+1)*2:S=SIN (G(I)):Q=COS (G(I)) 730 A(Z-1,1)=A(Z-1,1)+K(I)*Q^2:A(Z-1,2)=A(Z-1,2)+K(I)*S*Q 740 A(Z,1)=A(Z,1)+K(I)*S*S:A(Z-1,V-1)=-K(I)*Q*Q 750 A(Z-1,V)=-K(I)*Q*S:A(Z,V-1)=-K(I)*S*S 760 A(Z,V-2)=-K(I)*Q*S:Z=Z+V-2:A(Z-1,1)=A(Z-1,1)+K(I)*Q*Q 770 A(Z-1,2)=A(Z-1,2)+K(I)*Q*S:A(Z,1)=A(Z,1)+K(I)*S*S 780 NEXT I 790 FOR I=1 TO A:A(R(I),1)=0:NEXT I 820 FOR I=1 TO 2*N-1:IF ABS(A(I,1))<0.0000001 THEN 890 830 X=2*N-I:IF X>W-1 THEN X=W-1 840 FOR K=1 TO X:P=A(I,K+1)/A(I,1) 850 O=1:IF A(I+K,1)=0 THEN O=0 860 FOR J=1 TO W-K:A(I+K,J)=A(I+K,J)-A(I,J+K)*P:NEXT J 870 C(I+K)=C(I+K)-C(I)*P:IF O=0 THEN A(I+K,1)=0 880 NEXT K 890 NEXT I 920 R=0: PRINT"REACCIONES " 930 FOR I=2*N TO 1 STEP -1:P=A(I,1) 940 O=2*N-I:IF O>=W THEN O=W-1 950 V(I)=C(I):IF O=0 THEN 970 960 FOR J=1 TO O:V(I)=V(I)-A(I,J+1)*V(I+J):NEXT J 970 IF P<>0 THEN V(I)=V(I)/P:C(I)=0:GOTO 990 975 Z=INT((I+1)/2):IF T(A-R)=1 THEN T$="y" ELSE T$="x" 980 R=R+1:PRINTUSING " Nudo ## R && = ####.### Tn";Z;T$;-V(I):V(I)=0 985 IF INKEY$="" THEN 985 ELSE 990 990 NEXT I:IF R>A THEN PRINT"ESTRUCTURA CON FALTA DE APOYOS" 995 IF INKEY$="" THEN 995 ELSE 1000 1000 PRINT"AXILES":PRINT:FOR I=1 TO B 1010 D=D(I):F=F(I):PRINTUSING "Barra ## N(##-##)=";I;D;F; 1020 D=D*2:F=F*2 1030 PRINT K(I)*((V(F)-V(D))*SIN(G(I))+(V(F-1)-V(D-1))*COS(G(I))) 1040 IF INKEY$="" THEN 1040 ELSE 1050 1050 NEXT I 1070 INPUT "DESPLAZAMIENTOS(S/N)";A$ 1080 IF A$="N" THEN 1200 1090 FOR I=1 TO N 1110 PRINT "NUDO ";I 1120 PRINT USING"dx= ###.### cm";V(2*I-1)*100 1130 PRINT USING "dy= ###.### cm";V(2*I)*100 1140 IF INKEY$="" THEN 1140 ELSE 1150 1150 NEXT I 1200 INPUT"OTRA HIP. DE CARGA(S/N)";A$ 1210 IF A$="S" THEN ERASE A,C:GOTO 570 1220 END