Foros del Web » Programación para mayores de 30 ;) » Java »

Ayuda sopa de letras

Estas en el tema de Ayuda sopa de letras en el foro de Java en Foros del Web. Hola, tengo un porblema con una sopa de letras, no se si alguien me podría ayudar a resolverlo, este es mi codigo, pero no funciona ...
  #1 (permalink)  
Antiguo 09/05/2006, 13:13
Avatar de Kias  
Fecha de Ingreso: mayo-2006
Ubicación: México
Mensajes: 2
Antigüedad: 18 años
Puntos: 0
Busqueda Ayuda sopa de letras

Hola, tengo un porblema con una sopa de letras, no se si alguien me podría ayudar a resolverlo, este es mi codigo, pero no funciona nada bien. A ver si alguien me puede ayudar a encontrar el problema.
import java.io.*;
import java.util.*;
import acm.program.ConsoleProgram;

public class ProyectoFinal extends ConsoleProgram
{

private final int row = 30;
private final int col = 30;
public static String palabrota="";
public static String posicion ="";
public static int k = 0;

public static void main(String[] args)
{
new ProyectoFinal().start();
}

public void run()
{

// declarando el manejador de archivos
Scanner filelector = null;
char[][] mat = new char[row][col];

// abriendo el archivo y validando que exista... si no existe lanza una excepción
try
{
filelector = new Scanner(new FileReader("Entrada.dat"));
filelector.useDelimiter("[\t\n\r]+");
rellenaMatriz(filelector, mat);
filelector.close();
}

catch (IOException a)
{
System.out.println (" No existe ese archivo ");
System.exit(1);
}

// imprime la matriz que fue copiada del archivo de entrada
for (int i = 0; i < mat.length; i++)
{
for (int j = 0; j < mat[0].length; j++)
this.print(mat[i][j]);
this.println();
}

// aqui deberas colocar la llamada al metodo de buscaPalabra

while(true)
{
this.println("Dime una palabra para buscar");
palabrota = this.readLine();
buscaPalabra(mat,palabrota.toCharArray());

if(palabrota == "sayonara")
break;
}


}


// metodo que rellena la matriz con los caracteres que se leen de un archivo
public static<T> void rellenaMatriz(Scanner lector1, char[][] mat)
{
int i = 0;
String str;

while(lector1.hasNext())
{
str = lector1.next();
for (int j= 0; j < str.length(); j++)
mat[i][j] = str.charAt(j);
i++;
}
}


/*metodo que busca la palabra (aki se validan los metodos hor, horR, ver, verR
diagonales ambos lados y en reversa*/

//hacer metodo por metodo por separado
public void buscaPalabra(char[][] mat, char[] pal)
{
int k;
//metodo horizontal
for (int i = 0; i >= 0 && i < 29; i++)
for (int j = 0; j < mat[i].length; j++)
{
if(mat[i][j] == pal[k])
k = 0;
}
for (k = 1; k < pal.length; k++)
{
if(mat[i][++j] != pal[k])
break;

this.println("La palabra " + palabrota + " esta en la posicion: "
+ i + "," + j + " de forma horizontal");

}

int k;
int i;
int j;
String palok;

//metoodo horizontal
for (i = 0; i < mat.length; i++)
{
k = 0;
palok = "";
for(j = 0; j < mat[i].length; j++)
{
if(mat[i][j] == pal[k])
for(k = 1; k < pal.length; k++)
{
palok += mat[i][j];
this.println("La palabra " + palabrota + " esta en la posicion: "
+ i + "," + j + " de forma horizontal" + "\n");
}

else
{
k = 0;
palok = "";
}
}
}

}
}

//metodo horizontal r
for (int i = 29; i >= 0 && i < 29; i++)
for (int j = 29; j < mat[i].length; j++)
if(mat[i][j] == pal[k])
for (k = 1; k < pal.length; k++)
{
if(mat[i][++j] != pal[k])
break;

posicion = ("La palabra " + pal + " esta en la posicion: "
+ i + "," + j + " de forma horizontal reversa");

k = 0;

}


//metodo vertical
for (int i = 0; i >= 0 && i < 29; i++)
for (int j = 0; j < mat[i].length; j++)
if(mat[i][j] == pal[k])
for (k = 1; k < pal.length; k++)
{
if(mat[++i][j] != pal[k])
break;

posicion = ("La palabra " + pal + " esta en la posicion: "
+ i + "," + j + " de forma vertical");

k = 0;
}

//metodo vertical r
for (int i = 29; i >= 0 && i < 29; i++)
for (int j = 29; j < mat[i].length; j++)
if(mat[i][j] == pal[k])
for (k = 1; k < pal.length; k++)
{
if(mat[--i][j] != pal[k])
break;

posicion = ("La palabra " + pal + " esta en la posicion: "
+ i + "," + j + " de forma vertical reversa");

k = 0;
}

//metodo diagonal derecha
for (int i = 0; i >= 0 && i < 29; i++)
for (int j = 0; j < mat[i].length; j++)
if(mat[i][j] == pal[k])
for (k = 1; k < pal.length; k++)
{
if(mat[++i][++j] != pal[k])
break;

posicion = ("La palabra " + pal + " esta en la posicion: "
+ i + "," + j + " de forma diagonal derecha");

k = 0;

//metodo diagonal derecha reversa
if(mat[--i][--j] != pal[k])
break;

posicion = ("La palabra " + pal + " esta en la posicion: "
+ i + "," + j + " de forma diagonal derecha reversa");


k = 0;

//metodo diagonal izquierda
if(mat[--i][++j] != pal[k])
break;

posicion = ("La palabra " + pal + " esta en la posicion: "
+ i + "," + j + " de forma diagonal izquierda");



k = 0;

//metodo diagonal izquierda reversa
if(mat[++i][--j] != pal[k])
break;

posicion = ("La palabra " + pal + " esta en la posicion: "
+ i + "," + j + " de forma horizontal");



k = 0;
  #2 (permalink)  
Antiguo 09/05/2006, 13:18
Avatar de dogduck  
Fecha de Ingreso: enero-2006
Ubicación: ¿Atlantida, Hesperides, Islas afortunadas?
Mensajes: 2.231
Antigüedad: 18 años, 4 meses
Puntos: 19
¿ pero te compila ? ¿ Y si no te compila , que errores te dá ?
---
a parte de que no está terminado el código ,termina con k=0; .... ¿?

Última edición por dogduck; 09/05/2006 a las 13:27
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:45.