Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: dato000 en 27 Julio 2012, 02:33 AM

Título: Aporte: Cuadrado Mágico de orden impar
Publicado por: dato000 en 27 Julio 2012, 02:33 AM
Buenas les dejo un ejercicio que hice para matar el tiempo, debo confesar que me ayude de lo que encontre de la wikipedia sobre el articulo del cuadrado mágico, Cuadrado Mágico. (http://es.wikipedia.org/wiki/Cuadrado_m%C3%A1gico#Cuadrados_m.C3.A1gicos_de_orden_impar_.28I.29)

Lo dejo por aquí tal vez alguien lo necesite, aunque lo hice más para tratar de aprender un poco sobre estos temas.

/*
    Jueves 26 de Julio de 2012
    Cuadrado Mágico
   
    Escribir un programa que visualice su cuadrado mágico de orden impar n comprendido entre
    3 y 11; el usuario debe elegir el valor de n. Un cuadrado mágico se compone de números enteros
    comprendidos entre 1 y n. los números que figuran en cada fila, columna y diagonal son iguales.
   
    Ejemplo:
                8   1   6
                3   5   7
                4   9   2
*/

#include <stdio.h>
#include <stdlib.h>

#define MAX 11

void generar(int a[][MAX], int *max);

int main()
{
    printf("CUADRADO MAGICO\n");
    int n;
    int arr[MAX][MAX];
    generar(arr, &n);

    getchar();
    return 0;
}

void generar(int a[][MAX], int *max){


  int i, j, n, x;
  int contador = 1;

  puts("LECTURA DEL ARREGLO");

  do{
        printf("imprima el orden impar del cuadrado mágico: ");
        scanf("%d", &n);

    if(n%2 != 0)
        break;
    else
        printf("solo orden impar. \n");

  }while(n%2 == 0);

  for(i=0; i<n; i++)
    for(j=0; j<n; j++)
          a[i][j] = 0;

  /*srand(time(NULL));
  for(i=0; i<n; i++)
    for(j=0; j<n; j++)
          a[i][j] = rand() % (x);*/

  x = n*n;
  i=0;
  j=n/2;
  a[i][j] = 1;

  while(contador < x){
       if((i-1)>=0){
           if((j+1)<(n)){
               if(a[i-1][j+1]==0){
                   i -= 1;
                   j += 1;
                   contador += 1;
                   a[i][j] = contador;
                }
               else{
                   i += 1;
                   contador += 1;
                   a[i][j] = contador;
               }
           }
           else{
               if(a[i-1][0]==0){
                   i -= 1;
                   j = 0;
                   contador += 1;
                   a[i][j] = contador;
               }
               else{
                   i += 1;
                   contador += 1;
                   a[i][j] = contador;
               }
           }
       }
       else{
           if(((j+1)<(n))){
               if (a[n-1][j+1]==0){
                   i = n-1;
                   j += 1;
                   contador += 1;
                   a[i][j] = contador;
               }
               else{
                   i += 1;
                   contador += 1;
                   a[i][j] = contador;
               }
           }
           else{
               i += 1;
               contador += 1;
               a[i][j] = contador;
           }

       }

    }
  for(i=0; i<n; i++)
  {
    for(j=0; j<n; j++)
          printf("%d ", a[i][j]);


    printf("\n");
  }
}
Título: Re: Aporte: Cuadrado Mágico de orden impar
Publicado por: saddam en 24 Abril 2018, 17:16 PM
muchas graias me ayudo bastante ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-)
Título: Re: Aporte: Cuadrado Mágico de orden impar
Publicado por: TheSj en 22 Agosto 2019, 08:01 AM
Gracias por el aporte, me ayudó muchisimo  ::) ;-) :silbar: