Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/01/2010, 04:19
Slayer_sephiroth
 
Fecha de Ingreso: enero-2008
Mensajes: 111
Antigüedad: 16 años, 3 meses
Puntos: 0
Problema con cuadrado mágico

Hola, tengo un problema con un cuadrado mágico en C. Creo que el planteamiento es correcto pero hay algo que no estoy haciendo bien,pasandole el numero 3 me tendria que poner el dos en la esquina inferior derecha,el tres a la izquierda en la fila central,el cuatro debajo del tres,etc.

Pongo el codigo.Saludos
Código:
#include <conio.h>
#include <stdio.h>      
      
       
main ()
{      
     int na;  
     printf("Introduzca un número");
     scanf("%d",&na);
     array(na);
     getch();

      
}
//----------------
 
 
  array(int na)
  {
              
  int t[na][na],f,c,a,conta;

 
    for (f=0;f<na;f++)                          //inicializo el vector
     {
         for (c=0;c<na;c++)
          {           
              t[f][c]=0;
              
           }
     }
              
       
            c=(na-1)/2;
             
              
              for(conta=2;conta<=na*na;conta++)   // se repite el bucle hasta que el contador sea igual al número insertado por 2
              {
                    if(conta<=na) //si el contador es menor o igual que el numero insertado fila anterior siguiente columna
                    {
                      f=f-1;      
                      c=c+1;
                      t[f][c]=conta;           
                    }             
                   else if(conta>na &&(conta-1)%na!=0)//si el contador es mayor que el numero insertado
                    {   f=f-1;                        //y restandole 1 es no es multiplo de 3 fila anterior siguiente columna                                          
                        c=c+1;
                        t[f][c]=conta;
                                   
                    }  
                    else if(conta>na &&(conta-1)%na==0)//si el contador es mayor que el numero insertado
                    {                                  //y restandole 1 es multiplo de 3 siguiente fila misma columna          
                       f=f+1;
                 
                        t[f][c]=conta;  
                    }
                  
             }
             
    for (f=0;f<na;f++)//se muestra el array
     {
         for (c=0;c<na;c++)
          {
              a=(na-1)/2;     //para que el 1 estè arriba y en el centro            
              t[0][a]=1;
              printf("%d",t[f][c]);
           }
          
      
        printf("\n");        
     }    
             
  }