Ayuda con mi Sopa de Letra

Iniciado por Rijhording, 17 Mayo 2010, 20:18 PM

0 Miembros y 1 Visitante están viendo este tema.

Rijhording

el error es como debo de cargar mi texto que lo tengo guardado en mi disco duro no lo abre solo me sale que dice abierto mas no me lo muestra para verlo ;D:\texto.txt y D:\diccionario.txt estos son mis archivos que tengo que cargar para que pueda ver la sopa de letras pero aun asi no me hace la busqueda para mi mi codigo esta bien pero nose en que me estoy equivocando necesito de su ayuda porfavor
esto es lo que hay en mi archivo texto.txt que esta guardado en mi disco D
AIBMOLOCN
RNESPAÑAI
OCIXEMPRC
GUATEMALA
CBPANAMAR
HAYILEAPA
IOCIXEGEG
LHYAUGURU
ECUADORUA

y esto es lo que dice en diccionario.txt que tambien esta guardado en mi disco D:
Argentina
Chile
Colombia
Cuba
Ecuador
Espana
Guatemala
Mexico
Nicaragua
Panamá
Peru
Uruguay




Este es mi codigo

Código (java) [Seleccionar]

import java.io.*;


public class BusquedaPalabras
{
private static final int MAX_FILAS    =                10;
private static final int MAX_COLUMNAS =           10;
private static final int MAX_PALABRAS =        100000;
private int filas;
private int columnas;
private int numPalbras;
private String [] palabras=new String[MAX_PALABRAS];
private BufferedReader sopaStream;
private BufferedReader palabraStream;
private char sopa[][]= new char[MAX_FILAS][MAX_COLUMNAS];
private BufferedReader in=new BufferedReader(new InputStreamReader(System.in));

public BusquedaPalabras()
{
sopaStream = abreFichero("introduzca Fichero de la Sopa");
palabraStream = abreFichero("y el del diccionario");
leeSopa();
leePalabras();
}

private BufferedReader abreFichero(String mensaje)
{
String nombreFichero = " ";
FileReader fichero;
BufferedReader fichEntrada = null;

do
{
    System.out.println(mensaje + ":");

    try
    {
      nombreFichero=in.readLine();
      if(nombreFichero==null)
          System.exit(0);
      fichero = new FileReader(nombreFichero);
      fichEntrada= new BufferedReader(fichero);
    }
    catch(IOException e)
    {System.err.println("No se puede abrir"+nombreFichero);}
}while(fichEntrada==null);

System.out.println("Abierto" + nombreFichero);
return fichEntrada;
}

private void leePalabras()
{

int numPalabras=0;

try
{
    while((palabras[numPalabras]= palabraStream.readLine())!=null)
         {
                if(numPalabras!=0 && palabras[numPalbras].compareTo(palabras[numPalbras-1])<0)
                {
                 System.err.println("El Diccionario no esta"+"ordenado-saliendo");
                 continue;
                }
                else if(++numPalbras>=MAX_PALABRAS)
                break;
         }

            if(palabraStream.ready())
              System.err.println("Aviso: no se han leido los "+"datos-incremente MAX_PALABRAS");
}
catch(IOException e)
{}
}


private void leeSopa()
{
String unaLinea;
    try {
    int i=0;
    while((unaLinea = sopaStream.readLine())!=null){
    String t = unaLinea.replace(" ", "");
    columnas = t.length();
    for(int j=0;j<columnas;j++)
        sopa[i][j]=t.charAt(j);
        i++;
    }
    }
        catch(IOException e){
        e.printStackTrace();
        }
   }
/*
private void leeSopa()
{
String unaLinea;

    try
    {
    unaLinea=sopaStream.readLine();
        if(unaLinea==null)
        {
            filas=0;
            return;
        }
        columnas=unaLinea.length();
        for(int i=0;i<columnas;i++)
            sopa[0][i]=unaLinea.charAt(i);

        for(filas=1;
            (unaLinea=sopaStream.readLine())!=null;filas++)
        {
            if(unaLinea.length()!=columnas)
                System.err.println("La sopa es incorrecta");

        for(int i=0;i<columnas;i++)
            sopa[filas][i]=unaLinea.charAt(i);
        }
      }
        catch(IOException e)
        {}
}
*/
private int resolverDireccion(int filaBase,int colBase,int filaDelta,int colDelta)
{

    String secuencia=" ";
    int numPal=0;
    int resultadoBusqueda;

    secuencia+=sopa[filaBase][colBase];
    for(int i=filaBase+filaDelta,j=colBase+colDelta;
            i>=0&& j>=0 && i<filas && j< columnas;
            i+=filaDelta,j+=colDelta)
    {
         secuencia+=sopa[j];
         resultadoBusqueda=busquedaPrefijo(palabras,secuencia,numPal);

         if(!palabras[resultadoBusqueda].startsWith(secuencia))
         break;

         if(palabras[resultadoBusqueda].equals(secuencia) )
         {
         numPal++;
         System.out.println("Encontrada"+secuencia + "de" + filaBase + "" + colBase +
                            "a" + i + "" + j);
         }

    }
    return numPal;

}

private static int busquedaPrefijo(String [] a,String x,int n)
{
int inf=0;
int sup=n-1;
while(inf<sup)
{
    int med=(inf+sup)/2;
    if(a[med].compareTo(x)<0)
    {
        inf=med+1;
    }
    else
        sup=med;
}
return inf;

}


public int resolverSopa()
{
int numPal=0;
for(int f=0;f<filas;f++)
{
        for(int c=0;c<columnas;c++)
        {
            for(int df=-1;df<=1;df++)
            {
                for(int dc=-1;dc<=1;dc++)
                {
                    if(df!=0 || dc!=0)
                    {numPal=numPal+resolverDireccion(f,c,df,dc);
}
                }
            }

        }


}
return numPal;
}



}

/*Void main*/
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args)
    {
    BusquedaPalabras p=new BusquedaPalabras();
    System.out.println("Resolviendo....");
    p.resolverSopa();
    }

}


[code=/java]
[/code]