{Python 3.4} Problema con programa matrices

Iniciado por dj28, 5 Julio 2014, 03:02 AM

0 Miembros y 1 Visitante están viendo este tema.

dj28

Pues me he encontrado con un error en dos ejercicios.
el primero es el siguiente aca dejo el programa con comentarios para explicarlo:
Código (python) [Seleccionar]
def program():
os.system('cls')
print("""Leer dos matrices 4x5 enteras y determinar si el mayor número primo de una de las matrices
es también el mayor número primo de la otra matriz.""")
matriz = []
print("Matriz 1")#Entrada de la primera matriz empieza por aca
for f in range(4):
fila = []
for c in range(5):
try:
num=int(input("digite el numero "+str(f+1)+","+str(c+1)+": "))
except:
num=0
fila.append(num)
matriz.append(fila)
print("")
matriz1 = []#Aca por logica comienza la entrada de la segunda matriz
print("Matriz 2")
for f1 in range(4):
fila1 = []
for c1 in range(5):
try:
num1=int(input("digite el numero "+str(f1+1)+","+str(c1+1)+": "))
except:
num1=0
fila1.append(num1)
matriz1.append(fila1)
print("") #Salida de la matriz, me he leido que una matriz no deberia    mostrarse asi pero el profesor asi es que ha pedido que salga
print("matriz 1")
for fila in matriz:
str_fila = ""
for v in fila:
str_fila += "\t"+str(v)
print(str_fila)
print("")

print("")
print("matriz 2")#Salida de la segunda matriz
for fila1 in matriz1:
str_fila1 = ""
for v1 in fila1:
str_fila1 += "\t"+str(v1)
print(str_fila1)
print("")
mayor=0#Aca empieza la parte que trabaja lo del mandato, acumulador para el numero mayor
primo = False
pr = 0
for z in matriz:#Repasa las las filas de la matriz y las muestra como listas
for y in z:#Repasa las listas que habia sacado anteriormente y muestra los elementos
for x in range(2, y):#Pequeño codigo que recorre los numeros comprendidos entre 2 y el numero que toque ser para saber si es primo
if y % x != 0:#condiciones para primo
primo = True
elif y % x == 0:
primo = False
if primo == True:#aca es donde intento dejar explicito que "pr" debe ser igual al numero mayor primo, pero en vez de eso lo que hace es que guarda en la variable el numero mayor dentro de la matriz sin importar si es primo o no
pr = y
print("El numero mayor de la matriz 1 es: "+str(pr))
program()


El otro seria esto
Leer dos matrices 5x5 enteras y determinar si el promedio entero de todos los elementos que
no están en la diagonal de una matriz es igual al promedio entero de todos los elementos que
no están en la diagonal de la otra matriz.

tengo unos cuantos codigos fallidos para separar la diagonal pero todos fallidos, alguna ayuda con esto por favor?

dj28

Para el primero no necesito nada le encontrado la solucion, pero sigo sin poder pillar como separar las diagonales, osea necesito ayuda con este

Leer dos matrices 5x5 enteras y determinar si el promedio entero de todos los elementos que
no están en la diagonal de una matriz es igual al promedio entero de todos los elementos que
no están en la diagonal de la otra matriz.

Almapa

Supongo que es más una duda con el algoritmo que de programación.

Los elementos de la diagonal (suponiendo que se refiere a la diagonal principal) son los que ambos índices son iguales, es decir: m(1,1), m(2,2), m(3,3), m(4,4), m(5,5). Por lo tanto para calcular el promedio deberías sumar todos los elementos cuyos índices no sean iguales y dividirlos por el total.

En el caso en el que se refiera a ambas diagonales deberías descartar los elementos cuyos índices son: m(i,i) y m(i,6-i).

Por último sería comparar ambos promedios y definir un booleano que describa si son o no iguales.

Un saludo!