Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
)
DECLARE SUB MULTIPLICAR (MAT1!(), MAT2!(), MULTIPLICACION!(), Nf1!, Nc1!, Nf2!,
Nc2!, IN!)
DECLARE SUB GAUSS (A!(), B!(), X!(), NEC!, EPS!, IN!, DIAG!)
DECLARE SUB SUMAR (MAT1!(), MAT2!(), SUMA!(), Nf1!, Nc1!, Nf2!, Nc2!, IN!)
CLS
CLEAR
PRINT "
/\
\
/\
\
/\
\
"
PRINT "
/::\
\
/::\
\
/::\____\
"
PRINT "
/::::\
\
/::::\
\
/::::| |
"
PRINT "
/::::::\
\
/::::::\
\
/:::::| |
"
PRINT "
/:::/\:::\
\
/:::/\:::\
\
/::::::| | "
PRINT "
/:::/__\:::\
\
/:::/__\:::\
\
/:::/|::| |
"
PRINT " /::::\ \:::\
\
/::::\ \:::\
\
/:::/ |::| |
"
PRINT " /::::::\ \:::\
\
/::::::\ \:::\
\
/:::/ |::| | _____
"
PRINT " /:::/\:::\ \:::\
\ /:::/\:::\ \:::\____\ /:::/ |::| |/\
\"
PRINT "/:::/__\:::\ \:::\____\/:::/ \:::\ \:::|
|/:: /
|::| /::\___
_\"
PRINT "\:::\ \:::\ \::/
/\::/
\:::\ /:::|____|\::/
/|::| /:::/
/"
PRINT " \:::\ \:::\ \/____/ \/_____/\:::\/:::/
/ \/____/ |::| /:::/
/"
PRINT " \:::\ \:::\
\
\::::::/
/
|::|/:::/
/
"
PRINT " \:::\ \:::\____\
\::::/
/
|::::::/
/
"
PRINT "
\:::\ \::/
/
\::/____/
|:::::/
/
"
PRINT "
\:::\ \/____/
~~
|::::/
/
"
PRINT "
\:::\
\
/:::/
/
"
PRINT "
\:::\____\
/:::/
/
"
PRINT "
\::/
/
\::/
/
"
PRINT "
-------------"
PRINT ""
PRINT "*********************************************************************"
PRINT "*
ESCUELA POLITECNICA NACIONAL
* "
PRINT "*
FACULTAD DE INGENIERIA CIVIL Y AMBIENTAL
*"
PRINT "*
PROFESOR: ING. VACA
ALUMNO: JHON AGUIRRE
*"
PRINT "*
__________________________________________________
* "
PRINT "*
*"
PRINT "* PROGRAMA PARA SUMAR, RESTAR, MULTIPLICAR Y/O RESOLVER SISTEMAS *"
PRINT "*
* "
PRINT "*********************************************************************"
PRINT ""
90 INPUT " DESEA SUMAR Y/O RESTAR Y/O MULTIPLICAR MATRICES (S/N)"; M$
IF M$ = "S" OR M$ = "s" THEN
INPUT "EL NOMBRE DEL ARCHIVO DE DATOS ES ???"; DATA$
OPEN DATA$ FOR INPUT AS #1
INPUT "EL NOMBRE DEL ARCHIVO DE RESULTADOS ES ???"; RES$
OPEN RES$ FOR OUTPUT AS #2
PRINT
"
PRINT
"
PRINT
"
PRINT
"
PRINT
"
PRINT
"
PRINT
"
PRINT
"
PRINT
"
#2, "*********************************************************************
#2, "*
#2, "*
#2, "*
#2, "*
__________________________________________________
*
*
*
*
#2, "*
#2, "* PROGRAMA PARA SUMAR, RESTAR, MULTIPLICAR Y/O RESOLVER SISTEMAS
#2, "*
#2, "*********************************************************************
PRINT
PRINT #2,
PRINT #2, "EL NUMERO DE FILAS ES"; Nfa; "EL NUMERO DE COLUMNAS ES"; Nca
PRINT #2,
FOR i = 1 TO Nfa
FOR j = 1 TO Nca
PRINT #2, SUMA(i, j);
PRINT SUMA(i, j);
NEXT j
PRINT #2,
NEXT i
END IF
PRINT #2,
PRINT
END IF
PRINT
PRINT #2,
INPUT " RESTA DE MATRICES? (S/N)"; RE$
IF RE$ = "S" OR RE$ = "s" THEN
DIM RESTA(Nfa, Nca)
CALL RESTAR(A(), B(), RESTA(), Nfa, Nca, Nfb, Ncb, IND)
IF IND = 1 THEN
PRINT #2, "NO SE PUEDE RESTAR (las matrices deben ser de IGUAL Dimension)"
PRINT " NO SE PUEDE RESTAR (las matrices deben ser de IGUAL Dimension)"
ELSE
PRINT #2, "LA RESPUESTA ES"
PRINT #2,
PRINT #2, "EL NUMERO DE FILAS ES"; Nfa; "EL NUMERO DE COLUMNAS ES"; Nca
PRINT #2,
FOR i = 1 TO Nfa
FOR j = 1 TO Nca
PRINT #2, RESTA(i, j);
PRINT RESTA(i, j);
NEXT j
PRINT #2,
PRINT
NEXT i
END IF
PRINT #2,
PRINT
END IF
PRINT #2,
PRINT
INPUT " MULTIPLICACION DE MATRICES? (S/N)"; MUL$
IF MUL$ = "S" OR MUL$ = "s" THEN
DIM MULTIPLICACION(Nfa, Ncb)
CALL MULTIPLICAR(A(), B(), MULTIPLICACION(), Nfa, Nca, Nfb, Ncb, IND)
IF IND = 1 THEN
PRINT #2, "No se puede multiplicar las Matrices (El numero de Filas debe
ser Igual al Numero de columnas)"
PRINT "No se puede multiplicar las Matrices (El numero de Filas debe ser
Igual al Numero de columnas)"
ELSE
PRINT #2, "LA RESPUESTA ES"
PRINT #2, "EL NUMERO DE FILAS ES"; Nfa; "EL NUMERO DE COLUMNAS ES"; Ncb
PRINT " MATRIZ MULTIPLICACION"
PRINT
PRINT #2,
FOR i = 1 TO Nfa
FOR j = 1 TO Ncb
FOR i = 1 TO NEC
INPUT #5, G(i)
PRINT G(i)
PRINT #7, G(i);
NEXT i
PRINT #7,
FOR i = 1 TO NEC
IF MAY < ABS(F(i, i)) THEN
MAY = ABS(F(i, i))
END IF
NEXT i
EPS = MAY / 100000
DIM X(NEC)
CALL GAUSS(F(), G(), X(), NEC, EPS, IND, COL)
IF IND = 1 THEN
PRINT #7, "Cero en la diagonal"; COL
PRINT "Cero en la diagonal"; COL
ELSE
PRINT #7, "Solucin del sistema"
PRINT #7, "Incognitas"; TAB(12); " VALOR "
FOR i = 1 TO NEC
PRINT #7, i, X(i)
NEXT i
END IF
PRINT #7, "FIN DEL ARCHIVO"
PRINT #7, "EXAMINAR ARCHIVO", RESUL$
END IF
PRINT "___________________________________________________________"
PRINT "-----------------------------------------------------------"
PRINT #7, "***********************************************************"
PRINT #7, "*
*"
PRINT #7, "*
FIN DEL ARCHIVO
*"
PRINT #7, "*
*"
PRINT #7, "***********************************************************"
INPUT " Desea hacer mas operaciones? (S/N)"; OTRA$
IF OTRA$ = "S" OR OTRA$ = "s" THEN
GOTO 90
END IF
END
SUB GAUSS (F(), G(), X(), NEC, EPS, IN, DIAG)
FOR l = 1 TO NEC - 1
IF ABS(F(l, l)) < EPS THEN
IN = 1
DIAG = 1
GOTO 10
ELSE
FOR i = l + 1 TO NEC
FOR j = l + 1 TO NEC
F(i, j) = F(i, j) - (F(i, l) * F(l, j)) / F(l, l)
NEXT j
G(i) = G(i) - (F(i, l) * G(l)) / F(l, l)
NEXT i
END IF
NEXT l
IF ABS(F(NEC, NEC)) < EPS THEN
IN = 1
DIAG = NEC
GOTO 10
ELSE
X(NEC) = G(NEC) / F(NEC, NEC)
FOR i = NEC - 1 TO 1 STEP -1
SUM = 0
FOR l = i + 1 TO NEC
SUM = SUM + F(i, l) * X(l)
NEXT l
X(i) = (G(i) - SUM) / F(i, i)
NEXT i
END IF
10 UNO = 1
END SUB
SUB MULTIPLICAR (MAT1(), MAT2(), MULTIPLICACION(), Nf1, Nc1, Nf2, Nc2, IN)
IF Nc1 <> Nf2 THEN
IN = 1
ELSE
FOR i = 1 TO Nf1
FOR j = 1 TO Nc2
SUM = 0
FOR k = 1 TO Nc1
SUM = SUM + MAT1(i, k) * MAT2(k, j)
NEXT k
MULTIPLICACION(i, j) = SUM
NEXT j
NEXT i
END IF
END SUB
SUB RESTAR (MAT1(), MAT2(), RESTA(), Nf1, Nc1, Nf2, Nc2, IN)
IF Nf1 <> Nf2 OR Nc1 <> Nc2 THEN
IN = 1
ELSE
FOR i = 1 TO Nf1
FOR j = 1 TO Nc1
RESTA(i, j) = MAT1(i, j) - MAT2(i, j)
NEXT j
NEXT i
END IF
END SUB
SUB SUMAR (MAT1(), MAT2(), SUMA(), Nf1, Nc1, Nf2, Nc2, IN)
IF Nf1 <> Nf2 OR Nc1 <> Nc2 THEN
IN = 1
ELSE
FOR i = 1 TO Nf1
FOR j = 1 TO Nc1
SUMA(i, j) = MAT1(i, j) + MAT2(i, j)
NEXT j
NEXT i
END IF
END SUB