Menu-Matrices-codigo
Menu-Matrices-codigo
def validaciones(variable):
while True:
sol="Introduce "
sol+=variable+": "
num = input(sol)
try:
num = int(num)
return num
except ValueError:
print("El valor es incorrecto: escribe un numero")
def imprimir(matriz,filas,columnas):
cadena=''
for i in matriz:
cadena+='['
for j in i:
cadena+='{:6}'.format(j)
cadena+=']\n'
return cadena
def menu():
print("---------------------Menu de Matrices-------------------------
")
print("1,.Impresion")
print("2.-Verificacion si es nula")
print("3.-Matriz (Fila o Columna o Cuadrada Rectangular)")
print("4.-Diagonal Principal")
print("5.-Traza Matriz")
print("6.-Diagonal Secundaria (En forma de matriz)")
print("7.-Verificacion de Matriz Superior")
print("8.-Verificacion de Matriz Inferior")
print("9.-Verificacion de Matriz Diagonal")
print("10.-Verificacion de Matriz Identidad")
print("11.-Impresion de Matriz Opuesta")
print("12.-Impresion de Matriz Por Numero Real")
print("13.-Impresion de Matriz Transpuesta")
print("14.-Verificacion de Matriz Simetrica")
print("15.-Producto de dos matrices")
print("16.-Salir")
print("--------------------------------------------------------------
")
def switch(case,matriz,filas,columnas):
sw={
1: imprimir(matriz,filas,columnas),
2: Nula(matriz,filas,columnas),
3: tipoMatriz(filas,columnas),
4: diagonalPrincipal(matriz,filas,columnas),
5: traza(matriz,filas,columnas),
6: diagonalSecundaria(matriz,filas,columnas),
7: matrizSup(matriz,filas,columnas),
8: matrizInf(matriz,filas,columnas),
9: matrizDiag(matriz,filas,columnas),
10: matrizIden(matriz,filas,columnas),
11: matrizOp(matriz,filas,columnas),
12: matrizReal(matriz,filas,columnas,real),
13: matrizTrans(matriz,filas,columnas),
14: matrizSim(matriz,filas,columnas),
15:
Multiplicacion(matriz,matriz2,filas,columnas,filas2,columnas2),
16: salir(),
}
return sw.get(case, default())
def default():
return "Opcion Invalida"
def Nula(matriz,filas,columnas):
nula=""
for i in range(filas):
for j in range(columnas):
if (matriz[i][j]!=0):
nula+="La matriz no es nula"
return nula
break
if (nula==""):
nula+="La matriz es nula"
return nula
def tipoMatriz(filas,columnas):
cadena=""
if (filas==columnas):
cadena+="La matriz es cuadrada"
return cadena
if(filas==1 and columnas>0):
cadena+="La matriz es una fila"
return cadena
if(filas>0 and columnas==1):
cadena+="La matriz es una columna"
return cadena
if (filas>0 and columnas>0 and filas!=columnas):
cadena+="La matriz es rectangular"
return cadena
def diagonalPrincipal(matriz,filas,columnas):
if columnas == filas:
mat=""
for i in range(filas):
mat+="[ "
for j in range(columnas):
valor=0
if (i==j):
valor=matriz[i][j]
mat+=str(valor)+" "
mat+=" ]\n"
return mat
else:
return "La matriz no es cuadrada"
def traza(matriz,filas,columnas):
if columnas == filas:
traz=0
for f in range(filas):
for c in range(columnas):
if(f==c):
traz+=matriz[f][c]
return str(traz)
else:
return "La matriz debe ser cuadrada"
def diagonalSecundaria(matriz,filas,columnas):
if columnas == filas:
mat=""
n=columnas-1
for i in range(filas):
mat+="[ "
for j in range(columnas):
valor=0
if (j==n):
n-=1
valor=matriz[i][j]
mat+=str(valor)+" "
mat+=" ]\n"
return mat
else:
return "La matriz no es cuadrada"
def matrizSup(matriz,filas,columnas):
if columnas == filas:
n=0
for f in range(filas):
for c in range(columnas):
if(c<f):
n+=matriz[f][c]
if n==0:
return "Es una matriz superior"
else:
return 'NO es una matriz superior'
else:
return "La matriz debe ser cuadrada"
def matrizInf(matriz,filas,columnas):
if columnas == filas:
n=0
for f in range(filas):
for c in range(columnas):
if(c>f):
n+=matriz[f][c]
if n==0:
return "Es una matriz inferior"
else:
return 'NO es una matriz inferior'
else:
return "La matriz debe ser cuadrada"
def matrizDiag(matriz,filas,columnas):
if columnas == filas:
n=0
for f in range(filas):
for c in range(columnas):
if(c>f):
n+=matriz[f][c]
if(c<f):
n+=matriz[f][c]
if n==0:
return "Es una matriz Diagonal"
else:
return 'No es una matriz Diagonal'
else:
return "La matriz debe ser cuadrada"
def matrizIden(matriz,filas,columnas):
if columnas == filas:
n=0
for f in range(filas):
for c in range(columnas):
if(c>f):
n+=matriz[f][c]
if(c<f):
n+=matriz[f][c]
if(c==f):
if (matriz[f][c]==1):
n+=0
else:
n+=1;
if n==0:
return "Es una matriz Identidad"
else:
return 'No es una matriz Identidad'
else:
return "La matriz debe ser cuadrada"
def matrizOp(matriz,filas,columnas):
mat=[]
for i in range (filas):
mat.append([])
for j in range(columnas):
valor = matriz[i][j]
valor*=-1
mat[i].append(valor)
return imprimir(mat,filas,columnas)
def matrizReal(matriz,filas,columnas,real):
mat=[]
for i in range (filas):
mat.append([])
for j in range(columnas):
valor = matriz[i][j]
valor*=real
mat[i].append(valor)
return imprimir(mat,filas,columnas)
def matrizTrans(matriz,filas,columnas):
t=[]
for f in range(len(matriz[0])):
t.append([])
for c in range(len(matriz)):
t[f].append(matriz[c][f])
return imprimir(t,columnas,filas)
def matrizSim(matriz,filas,columnas):
if filas==columnas:
simetrica=True
for i in range(filas):
for j in range(columnas):
if(matriz[i][j]!=matriz[j][i]):
simetrica=False
if simetrica==True:
return 'La matriz es simetrica'
else:
return 'La matriz no es simetrica'
else:
return "Debe ser una matriz cuadrada"
def Multiplicacion(matriz,matriz2,filas,columnas,filas2,columnas2):
if columnas==filas2:
mat = [[0 for i in range(columnas2)] for j in range(filas)]
for f in range(filas):
for c in range(columnas2):
r = 0
for x in range(columnas):
r += matriz[f][x] * matriz2[x][c]
mat[f][c] = r
return imprimir(mat,filas2,columnas2)
else:
return "No es igual el numero de filas de A y columnas de B"
def acomodar(matriz,columnas,filas):
cadena = ''
for i in range(filas):
cadena += '['
for j in range(columnas):
cadena += '{:5s}'.format(str(matriz[i][j]))
cadena += ']\n'
return cadena
def salir():
return "Saliendo............."
real=1
filas2=1
columnas2=1
matriz2=[]
while(True):
menu()
case=validaciones(" una opcion del menu: ")
print(switch(case,matriz,filas,columnas))
if(case==16):
break
if(case==12):
print("")
real=validaciones("el numero real por el que se multiplicara la
matriz: ")
print(switch(case,matriz,filas,columnas))
if(case==15):
print("Llenado Matriz DOS")
columnas2=validaciones("la cantidad de columnas")
print("")
filas2=validaciones("la cantidad de filas")
print("")
for f in range(filas2):
matriz2.append([])
for c in range(columnas2):
valor = validaciones("el valor de Fila {}, Columna {}:
".format(f+1, c+1))
matriz2[f].append(valor)
print("-----------------------------------------------------------
------------")
print(switch(case,matriz,filas,columnas))