Nuevamente llegando tarde....
hhuuummmm..... aunque tal vez no tanto, no sé.
Pero igual aquí te va un ejemplo:El siguiente código detecta si una matriz, en este caso de 3x3 es un cuadraro mágico. Se dice que es un cuadrado mágico cuando la sumatoria de cada una de las filas y la sumatoria de cada una de las colummnas dan el mismo valor. Es decir, la diagonal principal y la diagonal secundaria de la matriz.
DP: Diagonal Principal
DS: Diagonal Secundaria
#include <stdio.h>
#include <conio.h>
void main(void)
{
int MAT[3][3];
int FILA[3];
int COL[3];
int DP, DS, i, j;
DP=DS=0;
for (i=1; i<=3; i++)
FILA[i]=COL[i]=0;
clrscr();
printf("Ingrese los elementos de la matriz: n");
for (i=1; i<=3; i++)
for (j=1; j<=3; j++)
{
printf("Elemento %d,%d=",i,j);
scanf("%d",&MAT[i][j]);
if (i==j)
DP=DP+MAT[i][j];
FILA[i]=FILA[i+MAT[i][j];
COL[j]=COL[j]+MAT[i][j];
}
DS=MAT[1][3]+MAT[2][2]+MAT[3][1];
if ((DP==DS)&&(PP==FILA[i]))&&(FILA[1]==FILA[2])&&(FILA[2]==FILA[3])
printf("La Matriz es un Cuadrado Mágico");
else
printf("La Matriz no es un Cuadrado Mágico");
getch();
}
Algún error que por ahí esté o algún detalle que falte, te toca a ti acomodarlo, pero ese es el código. Por que para serte sincero, no me acuerdo casi nada de esto, hace ya un buen tiempo que no he vuelto a tocar el C, al C++ no hay casi nada de diferencia.