Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Bleach@lex en 19 Junio 2010, 22:37 pm



Título: cuadro magico
Publicado por: Bleach@lex en 19 Junio 2010, 22:37 pm
hola
en la escuela me marcaron contruir un cuadro magic con javay pos nologro visualizarlo este es mi codigo

codigo-
import java.util.*;
import java.io.*;
public class Cuadromagico {
Scanner s;
int solve[][];
int sum;
int n;
 public boolean readcase(String s){
   
   
   String lin=s;
   if(lin==null)
   return false;
   
   else
    n=Integer.parseInt(lin);
   solve=new int[n][n];
   for(int i=1;i<=(n*n);i++){
      sum +=i;
      sum /=n;
      
   }
   return true;
}
public void solvecase(){
   
   int dato=1;
   int posx;
   int posy;
   while(dato<=(n*n)){
      posx=0;
       posy=(n/2)+1;
      solve[posx][posy]=dato;
      dato++;
      posx--;
      posy++;
      //System.out.print(solve[posx][posy]+" ");
      if(posx<0)posx=n-1;
      //System.out.print(solve[posx][posy]+" ");
       if(posy>n){
          posy=0;
         if(solve[posx][posy]!=0){
         posx++;
         posy--;
         //System.out.print(solve[posx][posy]+" ");
         
      }
         }

fin codigo-

y pos nose que estoy haciendo mal o q no estoy haciendo
espero q puedan ayudarme


Título: Re: cuadro magico
Publicado por: danielo- en 21 Junio 2010, 09:13 am
i´m back :) woajajajajaj!

Mare chavo, una miradita le di a tu codigo, y a simple vista se ve que no estas implementando el algoritmo para cuadros mágicos correctamente, pero bueno, lo primero, sería que pusieras entre etiquetas tu codigo para que sea mas entendible y por regla también; lo segundo sería que explicaras que hace tu codigo y que no hace.
Y tercero, suponiendo que tienes la idea de como hacerlo,  lo primero sería desarrollar el algortimo para poner el primer numero en su lugar:
Es decir, buscar la mitad de tu cuadro, facil no?
de ahi plantearte el algoritmo de los cuadros mágicos, que es muy sencillo,

Código
  1. fila-1, columna+1
  2. //checar que no se pase de las columnas y filas establecidas
  3. si (fila-1<0){
  4.     fila=numero_filas
  5. }
  6. si(columna+1>numero_columnas){
  7.     columnas=0
  8. }
  9. //seguría el algoritmo para saber que pasa si la casilla esta ocupada
  10. si (matriz[fila][columna] diferente null){
  11. volver a la fila y columna anterior
  12. fila+1
  13. //checar de nuevo que no se pase del numero de columnas y filas establecidas
  14. //lo metes en un ciclo y listo :)
  15. }
  16.  
  17. suerte  y saludos :)
  18.