10 PRINT "Estructuras";CHR$(13);"ARTICULADAS ISOSTATICAS";CHR$(9):CLEAR:CLS
20 INPUT "N nudos";N,"N barras";B:S=N+N-B-1:B=B-1:N=N-1
30 DIM N(N,1),B(B,1),C(B,2),H(S),V(S),X(N+N+1):FORF=0TON
40 INPUT"X"+STR$(F+1);N(F,0)
45 INPUT"Y"+STR$(F+1);N(F,1):NEXT F:GOSUB 50:GOTO70
50 FOR F=0TOS:INPUT "Nudo coaccionado";Q:IFX(Q+N)=1THEN X(Q-1)=1ELSE X(Q+N)=1
60 V(F)=Q-1:INPUT "Angulo movimiento con OX";H(F):NEXT F:RETURN
70 FOR F=0TOB:INPUT "Barra"+STR$(F+1)+CHR$(13)+"de";Q,"a";R
80 B(F,0)=Q-1:B(F,1)=R-1:NEXT F
90 FOR F=0TOB:X=N(B(F,0),0)-N(B(F,1),0)
95 Y=N(B(F,0),1)-N(B(F,1),1)
100 D=SQR(X*X+Y*Y):C(F,0)=X/D:C(F,1)=Y/D:C(F,2)=D:NEXT F
110 ERASEN,A:INPUT "N estados";Y:M=B+Y:DIM A(M,N+N+1):FOR G=B+1 TOM:SETF0:PRINT "Estado";G-B;CHR$(13);
120 R=-1:Q$="Horizont":FOR I=1TO2:D=0:INPUT "Fuerzas "+Q$+"ales";D
130 IFD>0THEN FOR F=0TOD-1:INPUT "Nudo";D,"Valor";A(G,D+R):NEXT F
140 R=N:Q$="vertic":NEXT I:NEXT G:CLS:PRINT "Preparando...";
150 FOR F=0TON:FOR G=0TOB:Q=0:R=0:IFB(G,0)=F THEN Q=C(G,0):R=C(G,1):GOTO 170
160 IFB(G,1)=F THEN Q=-C(G,0):R=-C(G,1)
170 A(G,F)=Q:A(G,N+F+1)=R:NEXT G:NEXT F
180 FOR F=0TOS:C=V(F):IFX(C)=1THEN 200
190 Q=SINH(F):R=COSH(F):FORG=0TOM:A(G,C)=A(G,C)*R+A(G,C+N+1)*Q:NEXT G
200 NEXT F:R=0:Q=0
210 IFX(R)=1THEN R=R+1:GOTO 210
220 IFR>Q THEN FOR G=0TOM:A(G,Q)=A(G,R):NEXT G
230 R=R+1:Q=Q+1:IFQ<=B THEN 210
240 CLS:PRINT "Calculando...";:Q=N:N=B:GOSUB #2:N=Q:CLS:BEEP:IF K=0THEN PRINT "Sistema mal planteado":SETN:END
250 FOR G=B+1TOM:SETF0:PRINT "Estado";G-B
260 FOR F=0TOB:SETF0:PRINT "Barra";F+1;"de";1+B(F,0);" a";1+B(F,1);":";CHR$(13);:SETF5:PRINT A(G,F);
270 IFA(G,F)<0THEN PRINT "Comp"ELSEPRINT "Trac"
273 NEXT F:FOR F=0TON:IFX(F+N+1)=0THEN 280ELSEA$="Reaccion"+STR$(F+1):Q=0:R=0:FOR I=0TOB
275 IFB(I,0)=F THEN K=1ELSEIF B(I,1)=F THEN K=-1 ELSE 278
276 Q=Q+K*A(G,I)*C(I,0):R=R+K*A(G,I)*C(I,1)
278 NEXT I:SETF6:PRINT A$;" Horizontal:";Q,A$;" Vertical";R
280 NEXT F:NEXT G:PRINT "L/EA Cte?";:GOSUB 400:CLS
290 IFQ$="S"THEN INPUT "L/EA";C:FORF=0TOB:C(F,2)=C:NEXT F:GOTO 310
300 INPUT "E";C:FORF=0TOB:INPUT "Barra"+STR$(F+1)+CHR$(13)+"A";R:C(F,2)=C(F,2)/C/R:NEXT F
310 C=0:ERASE P:INPUT "N de estados a multiplicar";C:IFC=0THENGOTO 350
320 DIM P(C-1):FORF=1TOC:INPUT "Estado"+STR$(F);P(F-1):NEXT F:Y=0:INPUT "Coeficiente para multiplicar?   (EXEL/EA)";Y
330 R=0:FORF=0TOB:K=1:FOR G=0TOC-1:K=K*A(B+P(G),F):NEXT G:Q=Y:IFY=0THEN Q=C(F,2)
340 R=R+K*Q:NEXT F:SETF6:PRINT "Total:";R:GOTO 310
350 C=0:ERASE P,Q:INPUT "N de estados a combinar";C:IFC=0THEN390
360 DIM P(C-1),Q(C-1):FORF=1TOC:INPUT "Estado"+STR$(F);P(F-1):Q(F-1)=0:INPUT "Coeficiente para multiplicar?   (EXEL/EA)";Q(F-1):NEXT F
370 FOR F=0TOB:K=0:FORG=0TOC-1:Q=Q(G):IFQ=0THENQ=C(F,2)
375 K=K+A(B+P(G),F)*Q:NEXTG:SETF0:PRINT "Barra";F+1;"de";1+B(F,0);" a";1+B(F,1);":";CHR$(13);:SETF5:PRINTK:NEXT F:GOTO350
390 SETN:CLS:PRINT "Mas?";:GOSUB 400:IFQ$="N"THEN END
393 PRINT "Cambiar apoyos?";:GOSUB 400:IFQ$="S"THEN GOSUB 50
395 GOTO 110
400 Q$=INKEY$:IFQ$<>"S"THEN IF Q$<>"N"THEN 400
410 CLS:RETURN
