Sei sulla pagina 1di 6

DECLARE SUB RESTAR (MAT1!(), MAT2!(), RESTA!(), Nf1!, Nc1!, Nf2!, Nc2!, IN!

)
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, "*

ESCUELA POLITECNICA NACIONAL


FACULTAD DE INGENIERIA CIVIL Y AMBIENTAL
PROFESOR: ING. FELIX VACA

ALUMNO: JHON AGUIRRE

__________________________________________________

*
*
*
*

#2, "*

#2, "* PROGRAMA PARA SUMAR, RESTAR, MULTIPLICAR Y/O RESOLVER SISTEMAS

#2, "*

#2, "*********************************************************************

PRINT "LA MATRIZ A"


PRINT #2, "LA MATRIZ A"
INPUT #1, Nfa, Nca
DIM A(Nfa, Nca)
PRINT #2, "EL NUMERO DE FILAS ES"; Nfa; "EL NUMERO DE COLUMNAS ES"; Nca
FOR i = 1 TO Nfa
FOR j = 1 TO Nca
INPUT #1, A(i, j)
PRINT A(i, j);
PRINT #2, A(i, j);
NEXT j
PRINT
PRINT #2,
NEXT i
PRINT
PRINT #2,
PRINT #2, "MATRIZ B"
INPUT #1, Nfb, Ncb
DIM B(Nfb, Ncb)
PRINT #2, "EL NUMERO DE FILAS ES"; Nfb; "EL NUMERO DE COLUMNAS ES"; Ncb
FOR i = 1 TO Nfb
FOR j = 1 TO Ncb
INPUT #1, B(i, j)
PRINT B(i, j);
PRINT #2, B(i, j);
NEXT j
PRINT #2,
NEXT i
PRINT
PRINT #2,
INPUT " SUMA DE MATRICES? (S/N)"; SUM$
IF SUM$ = "S" OR SUM$ = "s" THEN
DIM SUMA(Nfa, Nca)
CALL SUMAR(A(), B(), SUMA(), Nfa, Nca, Nfb, Ncb, IND)
IF IND = 1 THEN
PRINT #2, "No se puede sumar, matrices no compatibles"
PRINT " No se puede sumar, matrices no compatibles"
ELSE
PRINT #2, "LA RESPUESTA ES"
PRINT "LA RESPUESTA ES"

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

PRINT #2, MULTIPLICACION(i, j);


PRINT MULTIPLICACION(i, j);
NEXT j
PRINT
PRINT #2,
NEXT i
END IF
PRINT #2,
PRINT
END IF
PRINT #2, "******************************************"
PRINT #2, "*
*"
PRINT #2, "*
FIN DEL ARCHIVO
*"
PRINT #2, "*
*"
PRINT #2, "******************************************"
END IF
INPUT " Desea resolver un sistema de ecuaciones (S/N)"; ECU$
IF ECU$ = "S" OR ECU$ = "s" THEN
INPUT " EL NOMBRE DEL ARCHIVO DE DATOS ES???"; DATECU$
OPEN DATECU$ FOR INPUT AS #5
INPUT " EL NOMBRE DEL ARCHIVO DE RESULTADOS ES???"; RESECU$
OPEN RESECU$ FOR OUTPUT AS #7
PRINT #7, "*********************************************************************
"
PRINT #7, "*
ESCUELA POLITECNICA NACIONAL
*
"
PRINT #7, "*
FACULTAD DE INGENIERIA CIVIL Y AMBIENTAL
*
"
PRINT #7, "*
PROFESOR: ING. VACA
ALUMNO: JHON AGUIRRE
*
"
PRINT #7, "*
__________________________________________________
*
"
PRINT #7, "*
*
"
PRINT #7, "* PROGRAMA PARA SUMAR, RESTAR, MULTIPLICAR Y/O RESOLVER SISTEMAS *
"
PRINT #7, "*
*
"
PRINT #7, "*********************************************************************
"
PRINT #7,
PRINT "MATRIZ A"
PRINT #7, "MATRIZ A"
INPUT #5, NEC
DIM F(NEC, NEC)
PRINT #7, "El sistema tiene="; NEC; " ECUACIONES"
FOR i = 1 TO NEC
FOR j = 1 TO NEC
INPUT #5, F(i, j)
PRINT F(i, j)
PRINT #7, F(i, j);
NEXT j
PRINT
PRINT #7,
NEXT i
PRINT
PRINT #7,
PRINT "MATRIZ INDEPENDIENTE"
PRINT #7, " MATRIZ INDEPENDIENTE"

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

Potrebbero piacerti anche