Algoritmo del cuadrado mágico

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();}