Grupo Linuxero del Bajío

Algoritmo del cuadrado mágico

FERNANDO MEDINA NAVARRETE

A ver si a alguien le sirve el siguiente código que determina si una matriz es o no un cuadrado mágico:

#include <stdio.h>#include <conio.h>//6 1 8//7 5 3//2 9 4typedef int vector[50];vector suma1,suma2,sumas;void init (int a[],int b[ ],int c[ ])//inicilizar arreglos a cero{   for (int i=0; i<50; i++) a[i] = 0;   for (int j=0; j<50; j++) b[j] = 0;   for (int cont=0;cont<50;cont++) c[cont]=0;}int verifica(int sumas[ ],int cont)//Comprueba si es cuadrado magico o no lo es{  int temp=sumas[0];  for(int i=0;i<=cont;i++)  {    if (sumas[i]!=temp)    return 0;  }  return 1;}void main(){  int i,j,matriz[10][10],ren,cont2=0;  int col,cont=0;  clrscr();  printf("dame el numero de renglones y renglones:");  gotoxy(30,1);scanf("%d",&ren);scanf("%d",&col);  init(suma1,suma2,sumas);  for(i=0;i<ren;i++)  //lectura de la matriz  {    for(j=0;j<col;j++)    {      gotoxy(4+j*3,7+i);scanf("%d",&matriz[i][j]);    }  }  init (suma1,suma2,sumas);  for(i=0;i<ren;i++)//suma de filas  {    for(j=0;j<col;j++)    {       sumas[cont]=sumas[cont]+matriz[i][j];    }    cont++;  }  for(i=0;i<ren;i++) //suma de columnas  {    for(j=0;j<col;j++)    {       sumas[cont]=sumas[cont]+matriz[j][i];    }    cont++;  }  for (i=0;i<ren;i++) //suma de diagonal principal  {    sumas[cont]=sumas[cont]+matriz[i][i];  }  cont++;  for ( i=ren-1; i<=0 ; i-- ) //suma de diagonal secundaria  {    sumas [cont] += matriz [i][cont2++] ;  }  if (verifica(sumas,cont)==1)  {    printf ("Es magica");  }  else  {    printf ("No es magica");  }  getch();}