// Ejericio 2 :Un cuadrado mágico es aquel en donde la suma de los

Anuncio
// Ejericio 2 :Un cuadrado mágico es aquel en donde la suma de los números de cada fila, de cada columna y de
// la diagonal siempre son iguales. Escribir módulos para obtener las sumas por fila, por columna y de la
// diagonal de un cuadrado. Luego escribir un programa donde se ingresa un cuadrado y determina si es
//mágico.
#include <stdio.h>
#include <stdlib.h>
int sumaFila(int a[10][10],int i,int n);
int sumaColumna(int a[10][10],int j, int n);
int sumaDiagonal(int a[10][10],int n);
void cargar(int a[10][10], int *n);
typedef enum {Falso, Verdadero} booleano;
main(){
booleano porFila, porColumna, porDiagonal;
int i,j,n;
int sFila;
int sCol;
int sDiag;
int cuadrado[10][10];
cargar(cuadrado, &n);
sDiag = sumaDiagonal(cuadrado,n);
sFila = sumaFila(cuadrado,0,n);
if (sDiag = sFila){
porFila=Verdadero;
i=1;
while(i<n && porFila==Verdadero) {
if (sumaFila(cuadrado,i,n) != sFila) porFila=Falso;
else i++;
}
if (porFila==Verdadero) {
sCol = sumaColumna(cuadrado,0,n);
porColumna=Verdadero;
j=1;
while(j<n && porColumna==Verdadero) {
if (sumaColumna(cuadrado,j,n) != sCol) porColumna=Falso;
else j++;
}
if (porColumna==Verdadero) printf("El cuadrado es mágico");
else printf("El cuadrado NO es magico");
}
}
else printf("El cuadrado NO es magico");
system("Pause");
}
int sumaFila(int a[10][10], int i,int n){
int suma,j;
suma = 0;
for (j=0; j<n; j++) suma=suma+a[i][j];
return(suma);
}
int sumaColumna(int a[10][10], int j,int n)
{
int suma,i;
suma = 0;
for (i=0; i<n; i++) suma=suma+a[i][j];
return(suma);
}
int sumaDiagonal(int a[10][10], int n)
{
int suma;
int i,j;
suma = 0;
for (i=0; i<n; i++)
suma=suma+a[i][i];
return(suma);
}
void cargar(int a[10][10], int *n)
{
int i,j,dim;
printf("Ingrese dimension del cuadrado:");
scanf("%i",&dim);
printf("Ingrese el cuadrado por filas");
for(i=0; i<dim; i++)
for(j=0; j<dim; j++)
{
printf("\ncuadrado[%i,%i]=",i,j);
scanf("%i",&a[i][j]);
}
*n=dim;
}
Descargar