Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: r[Ř]cket en 21 Octubre 2009, 16:55 pm



Título: Tablas Hash
Publicado por: r[Ř]cket en 21 Octubre 2009, 16:55 pm
hola
lo que sucede es q nesecito hacer una especie de diccionario con las tablas hash, con la que el usuario ingrese la clave (una palabra de un txt) y el debe darle el valor (la definicion de la palabra), ya logre q lea el txt pero no puedo ingresar otra clave que no sea la primera, de lo contrario no retorna nada

este es el codigo q e hecho


using System;
using System.Collections;
using System.IO;


namespace dicc
{
class Program
{

static void Main(string[] args)
{

/* Crea una tabla Hash */
Hashtable tabla = new Hashtable();
try
{
using (StreamReader sr = new StreamReader("dicc.txt"))
{
string linea;
char[] separador = { ':' };

while ((linea = sr.ReadLine()) != null)
{

string[] datos = linea.Split(separador);
string Claves = datos[0];
string Valores = datos[1];
tabla.Add(Claves, Valores);
Console.WriteLine("oprima la Clave y enter");

if (Claves == Console.ReadLine())
Console.WriteLine("{0}: {1}", Claves, Valores);

}

}
}

catch (Exception e)
{
Console.WriteLine("Error en el Archivo:");
Console.WriteLine(e.Message);
}


}
}
}


espero q puedan ayudarme


Título: Re: Tablas Hash
Publicado por: MANULOMM en 21 Octubre 2009, 18:15 pm
no entiendo el problema.
Tienes un archivo .txt que contienes palabras asi:
Código:
Palabra1:Definicion1
Palabra2:Definicion2
Palabra3:Definicion3

quieres llevar el contenido del archivo a una tabla hash, en donde la palabra sera la clave y la definición el valor.

lo que no entiendo es por que haces esto:
Código:
Console.WriteLine("oprima la Clave y enter");

if (Claves == Console.ReadLine())
Console.WriteLine("{0}: {1}", Claves, Valores);

con que fin? ya tienes los dos valores en la tabla hash para que pides la clave? eso deberia estas por fuera del while cuando termine de leer el archio y de llenar la tabla hash.
lo que quieres que que fuera del while haces otro while en donde pides la clave y haces un Find a la tabla hash para retornar el valor.

Atentamente,

Juan Manuel Lombana
Medellín - Colombia


Título: Re: Tablas Hash
Publicado por: r[Ř]cket en 23 Octubre 2009, 19:58 pm
;D tienes razon Juan Manuel  no dejo q se carge la tabla, pero a la hora de hacer el otro while donde pida la clave y la imprima (la definicion) no se como plantearla


Título: Re: Tablas Hash
Publicado por: MANULOMM en 23 Octubre 2009, 21:40 pm
te pongo el code para que lo mires.  :rolleyes: :rolleyes: :rolleyes:
Código
  1.            Dictionary<string, string> tabla = new Dictionary<string, string>();
  2.            try
  3.            {
  4.                using (StreamReader sr = new StreamReader(Environment.CurrentDirectory + "\\Diccionario.txt"))
  5.                {
  6.                    string linea = string.Empty;
  7.                    while ((linea = sr.ReadLine()) != null)
  8.                    {
  9.                        string[] datos = linea.Split(':');
  10.                        //Adicionamos la clave en mayusculas para que no interfiera con la busqueda.
  11.                        string clave = datos[0].ToUpper();
  12.                        string valor = datos[1];
  13.                        tabla.Add(clave, valor);
  14.                    }
  15.                }
  16.                Console.WriteLine("Digite la clave que desea buscar o teclee \"EXIT\" para salir");
  17.                string Comando = Console.ReadLine().ToUpper();
  18.                //Si se teclea "EXIT" se cierra el programa.
  19.                while (Comando.ToUpper() != "EXIT")
  20.                {
  21.                    if (tabla.ContainsKey(Comando))
  22.                    {
  23.                        string valor = tabla[Comando];
  24.                        Console.WriteLine("La definición para {0} es: {1}", Comando, valor);
  25.                    }
  26.                    else
  27.                    {
  28.                        //La Clave no existe.
  29.                        Console.WriteLine("La clave buscada no existe.");
  30.                    }
  31.                    Console.WriteLine("Oprima una tecla para realizar otra busqueda");
  32.                    Console.ReadLine();
  33.                    Console.Clear();
  34.                    Console.WriteLine("Digite la clave que desea buscar o teclee \"EXIT\" para salir");
  35.                    Comando = Console.ReadLine().ToUpper();
  36.  
  37.                }
  38.            }
  39.            catch (Exception e)
  40.            {
  41.                Console.WriteLine("Error en el archivo: ");
  42.                Console.WriteLine(e.Message);
  43.            }
  44.  
tiene algunas mejorillas como por ejemplo, en vez de utilizar una clase Hashtable utilice una clase Dictionary que cumple con la funcionalidad pero es generica y me gusta mas.

Atentamente,

Juan Manuel Lombana
Medellín - Colombia


Título: Re: Tablas Hash
Publicado por: r[Ř]cket en 24 Octubre 2009, 05:54 am
;-) Juan Manuel GRACIAS!!....en verdad me has ayudado mucho, ademas que esta bien sencillo y explicado que hasta yo  entiendo el codigo. Era justo lo q nesecitaba


Título: Re: Tablas Hash
Publicado por: MANULOMM en 24 Octubre 2009, 15:23 pm
de nada... jejeje  ;D ;D ;D ;D

Atentamente,

Juan Manuel Lombana
Medellín - Colombia