Foro de elhacker.net

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ágico#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.

Código
  1. /*
  2.     Jueves 26 de Julio de 2012
  3.     Cuadrado Mágico
  4.    
  5.     Escribir un programa que visualice su cuadrado mágico de orden impar n comprendido entre
  6.     3 y 11; el usuario debe elegir el valor de n. Un cuadrado mágico se compone de números enteros
  7.     comprendidos entre 1 y n. los números que figuran en cada fila, columna y diagonal son iguales.
  8.    
  9.     Ejemplo:
  10.                 8   1   6
  11.                 3   5   7
  12.                 4   9   2
  13. */
  14.  
  15. #include <stdio.h>
  16. #include <stdlib.h>
  17.  
  18. #define MAX 11
  19.  
  20. void generar(int a[][MAX], int *max);
  21.  
  22. int main()
  23. {
  24.    printf("CUADRADO MAGICO\n");
  25.    int n;
  26.    int arr[MAX][MAX];
  27.    generar(arr, &n);
  28.  
  29.    getchar();
  30.    return 0;
  31. }
  32.  
  33. void generar(int a[][MAX], int *max){
  34.  
  35.  
  36.  int i, j, n, x;
  37.  int contador = 1;
  38.  
  39.  puts("LECTURA DEL ARREGLO");
  40.  
  41.  do{
  42.        printf("imprima el orden impar del cuadrado mágico: ");
  43.        scanf("%d", &n);
  44.  
  45.    if(n%2 != 0)
  46.        break;
  47.    else
  48.        printf("solo orden impar. \n");
  49.  
  50.  }while(n%2 == 0);
  51.  
  52.  for(i=0; i<n; i++)
  53.    for(j=0; j<n; j++)
  54.          a[i][j] = 0;
  55.  
  56.  /*srand(time(NULL));
  57.   for(i=0; i<n; i++)
  58.     for(j=0; j<n; j++)
  59.           a[i][j] = rand() % (x);*/
  60.  
  61.  x = n*n;
  62.  i=0;
  63.  j=n/2;
  64.  a[i][j] = 1;
  65.  
  66.  while(contador < x){
  67.       if((i-1)>=0){
  68.           if((j+1)<(n)){
  69.               if(a[i-1][j+1]==0){
  70.                   i -= 1;
  71.                   j += 1;
  72.                   contador += 1;
  73.                   a[i][j] = contador;
  74.                }
  75.               else{
  76.                   i += 1;
  77.                   contador += 1;
  78.                   a[i][j] = contador;
  79.               }
  80.           }
  81.           else{
  82.               if(a[i-1][0]==0){
  83.                   i -= 1;
  84.                   j = 0;
  85.                   contador += 1;
  86.                   a[i][j] = contador;
  87.               }
  88.               else{
  89.                   i += 1;
  90.                   contador += 1;
  91.                   a[i][j] = contador;
  92.               }
  93.           }
  94.       }
  95.       else{
  96.           if(((j+1)<(n))){
  97.               if (a[n-1][j+1]==0){
  98.                   i = n-1;
  99.                   j += 1;
  100.                   contador += 1;
  101.                   a[i][j] = contador;
  102.               }
  103.               else{
  104.                   i += 1;
  105.                   contador += 1;
  106.                   a[i][j] = contador;
  107.               }
  108.           }
  109.           else{
  110.               i += 1;
  111.               contador += 1;
  112.               a[i][j] = contador;
  113.           }
  114.  
  115.       }
  116.  
  117.    }
  118.  for(i=0; i<n; i++)
  119.  {
  120.    for(j=0; j<n; j++)
  121.          printf("%d ", a[i][j]);
  122.  
  123.  
  124.    printf("\n");
  125.  }
  126. }


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: