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
no entiendo el problema.
Tienes un archivo .txt que contienes palabras asi:
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:
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
;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
te pongo el code para que lo mires. :rolleyes: :rolleyes: :rolleyes:
Dictionary<string, string> tabla = new Dictionary<string, string>();
try
{
using (StreamReader sr = new StreamReader(Environment.CurrentDirectory + "\\Diccionario.txt"))
{
string linea = string.Empty;
while ((linea = sr.ReadLine()) != null)
{
string[] datos = linea.Split(':');
//Adicionamos la clave en mayusculas para que no interfiera con la busqueda.
string clave = datos[0].ToUpper();
string valor = datos[1];
tabla.Add(clave, valor);
}
}
Console.WriteLine("Digite la clave que desea buscar o teclee \"EXIT\" para salir");
string Comando = Console.ReadLine().ToUpper();
//Si se teclea "EXIT" se cierra el programa.
while (Comando.ToUpper() != "EXIT")
{
if (tabla.ContainsKey(Comando))
{
string valor = tabla[Comando];
Console.WriteLine("La definición para {0} es: {1}", Comando, valor);
}
else
{
//La Clave no existe.
Console.WriteLine("La clave buscada no existe.");
}
Console.WriteLine("Oprima una tecla para realizar otra busqueda");
Console.ReadLine();
Console.Clear();
Console.WriteLine("Digite la clave que desea buscar o teclee \"EXIT\" para salir");
Comando = Console.ReadLine().ToUpper();
}
}
catch (Exception e)
{
Console.WriteLine("Error en el archivo: ");
Console.WriteLine(e.Message);
}
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
;-) 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
de nada... jejeje ;D ;D ;D ;D
Atentamente,
Juan Manuel Lombana
Medellín - Colombia