Código Otro:
Ver originalN = vertical
M = horizontal
N = M
a(N-1,M-1) = array
suma_total = 0;
for(i= 0;i<N;i++){
suma = 0;
for(j=0;j<M;j++){
suma = suma + a(i,j);
}
if(i==0){
suma_total = suma;
}
else if(suma != suma_total){
print "No es mágico";exit for;
}
}
Ahí tienes las sumas en horizontal.. Bastaría con cambiar el array(i,j) por array(j,i) y obtienes el total vertical, que debe ser el mismo que el horizontal.
Algo por el estilo.. Faltaría obtener las sumas de las diagonales ;)..
Sldos!