• Martes 30 de Abril de 2024, 15:26

Autor Tema:  Diccionarios  (Leído 1350 veces)

badyalberto

  • Miembro activo
  • **
  • Mensajes: 77
    • Ver Perfil
Diccionarios
« en: Martes 29 de Diciembre de 2009, 16:06 »
0
Código: C#
  1.  
  2. using System;
  3. using System.Collections.Generic;
  4. using System.IO;
  5.  
  6. public class Dato
  7. {
  8.     public string mac;
  9.     public string ip;
  10. }
  11.  
  12. public class Treball
  13. {
  14.     static SortedDictionary<string,Dato> dic = new SortedDictionary<string,Dato>();
  15.    
  16.     public static void Main()
  17.     {
  18.         string clave,dir;
  19.        
  20.         dir=SeleccionarCarpeta();
  21.         StreamReader sr = new StreamReader(dir);
  22.         string linia = sr.ReadLine();
  23.         char[] separador = { ' ' };
  24.        
  25.         bool guardamaccorrect=false,guardaipcorrect=false,clavecorrect=false;
  26.         Dato dato = new Dato();
  27.        
  28.         while ( linia != null )
  29.         {
  30.             if ( linia.Contains("host") || linia.Contains("ethernet") || linia.Contains("fixed-address"))
  31.             {
  32.                     string[] palabras = linia.Split(separador);
  33.                
  34.                     foreach ( string p in palabras )
  35.                     {
  36.                         if (!p.Contains(":") && !p.Contains("{") && !p.Contains("hardware") && !p.Contains("ethernet") && !p.Contains("fixed-address") && !p.Contains("."))
  37.                         {
  38.                             if (p != "host")
  39.                             {
  40.                                 clave=p;
  41.                                 Console.WriteLine(clave);
  42.                                 clavecorrect=true;
  43.                             }
  44.                         }
  45.                         if ( p.Contains(":"))
  46.                         {
  47.                             dato.mac=p;
  48.                             guardamaccorrect=true;
  49.                         }
  50.                         if (p.Contains("."))
  51.                         {
  52.                             dato.ip=p;
  53.                             guardaipcorrect=true;
  54.                         }
  55.                     }
  56.             }
  57.             if (clavecorrect == true && guardaipcorrect == true && guardamaccorrect == true)
  58.             {
  59.                 dic.Add(clave,dato);
  60.             }
  61.             linia = sr.ReadLine();  
  62.         }
  63.         menu();
  64.         Console.ReadKey();
  65.     }
  66.     public static string SeleccionarCarpeta()
  67.     {
  68.         string dir;
  69.        
  70.         do
  71.         {
  72.             Console.Clear();
  73.             Console.WriteLine("Introdueix la direccio on esta ubicat el fitxer dchp.conf (Direccio Completa):");
  74.             dir=Console.ReadLine();
  75.             if (!File.Exists(dir))
  76.             {
  77.                 Console.WriteLine("El Fitxer no existeix");
  78.                 Console.WriteLine("Pulsi una tecla ...");
  79.                 Console.ReadKey();
  80.             }
  81.                
  82.         }while(!File.Exists(dir));
  83.        
  84.         Console.WriteLine("Direccio Correcte.");
  85.         Console.WriteLine("Presioni una tecla ...");
  86.         return dir;
  87.     }
  88.     public static void consultes()
  89.     {
  90.         string consult;
  91.        
  92.         Console.WriteLine("Introdueix el nom del host,la ip o la mac que vols consultar:");
  93.         consult=Console.ReadLine();
  94.        
  95.         if (consult.Contains("."))
  96.         {
  97.             foreach ( KeyValuePair<string,Dato> par in dic)
  98.             {
  99.                 if ( par.Value == consult )
  100.                 {
  101.                     Console.WriteLine("{0} -> {1}", par.Key,par.Value);
  102.                 }
  103.             }
  104.         }
  105.         else if (consult.Contains(":"))
  106.         {
  107.             foreach ( KeyValuePair<string,Dato> par in dic)
  108.             {
  109.                 if ( par.Value == consult )
  110.                 {
  111.                     Console.WriteLine("{0} -> {1}", par.Key,par.Value);
  112.                 }
  113.             }
  114.         }
  115.         else
  116.         {
  117.             foreach ( KeyValuePair<string,Dato> par in dic) //segunda forma
  118.             {
  119.                 if ( par.key == consult )
  120.                 {
  121.                     Console.WriteLine("{0} -> {1}", par.Key,par.Value);
  122.                 }
  123.             }
  124.         }
  125.     }
  126.     public static void modificar()
  127.     {
  128.     }
  129.     public static void afegir()
  130.     {
  131.     }
  132.     public static void eliminar()
  133.     {
  134.     }
  135.     public static void guardar()
  136.     {
  137.     }
  138.     public static void menu()
  139.     {
  140.         bool salir = false;
  141.  
  142.         while (!salir)
  143.         {
  144.             Console.Clear();
  145.             Console.WriteLine("Escull una opcio:");
  146.        
  147.             Console.WriteLine("1) Fer consultes sobre el diccionari.");
  148.             Console.WriteLine("2) Modificar les dades d'un host existent en el diccionari.");
  149.             Console.WriteLine("3) Afegir un host al diccionari.");
  150.             Console.WriteLine("4) Eliminar un host del diccionari.");
  151.             Console.WriteLine("5) Guardar el contingut del diccionari reemplaçant la secció corresponent del fitxer dhcp.conf");
  152.             Console.WriteLine("6) Salir.");
  153.             ConsoleKeyInfo ck = Console.ReadKey();
  154.  
  155.             switch(ck.KeyChar)
  156.             {  
  157.                 case '1':
  158.                     consultes();
  159.                     break;
  160.                 case '2':
  161.                     modificar();
  162.                     break;
  163.                 case '3':
  164.                     afegir();
  165.                     break;
  166.                 case '4':
  167.                     eliminar();
  168.                     break;
  169.                 case '5':
  170.                     guardar();
  171.                     break;
  172.                 case '6':
  173.                     salir = true;
  174.                     Console.WriteLine("nPresione una tecla para salir ...");
  175.                     break;
  176.             }
  177.         }
  178.     }
  179. }
  180.  
  181.  

Pq me dice uso de la variable local clave no asignada ?
Y luego en el apartado de consultas no se como se compararia los valores si el tipo dato tiene dos variables ?

locazopro

  • Miembro activo
  • **
  • Mensajes: 51
    • Ver Perfil
Re: Diccionarios
« Respuesta #1 en: Martes 29 de Diciembre de 2009, 21:34 »
0
Una cosa, cuando postees alguna duda trata de ser mas específico con los errores, por ejemplo que línea te da el error y cosas por el estilo. Tu consulta es muy pero muy vaga. Lo otro, si quieres puedes tomarte la molestia de buscar en google, pero en fin:

Supongo que el primer error proviene de la variable clave. Si te fijas bien en el código, en el único momento en que le asignas un valor a clave es dentro de un condicional, específicamente aquí:

Código: C#
  1.  
  2.  if (p != "host")
  3.    {
  4.         clave = p;
  5.         Console.WriteLine(clave);
  6.         clavecorrect = true;
  7.     }
  8.  
  9.  

Luego, usas la variable mas abajo en el código:

Código: C#
  1. dic.Add(clave, dato);
  2.  

Entonces, el C# te lanzará error puesto que él razona de esta forma: si clave se asigna dentro de un condicional y luego se usa mas adelanta, ¿qué pasaría si no se cumple la condición en el if? pues entonces clave no tendrá ningún valor y luego cuando se use mas adelante estará vacía, nula. Por eso te lanza el error, lo puedes solucionar en la definición de clave asignarle algún valor desde el comienzo.

Respecto a tu segunda pregunta, la cual no se entiende para nada, pero viendo el código supongo que te refieres a esta línea:

Código: C#
  1. if ( par.Value == consult )
  2.  

no puedes comparar 2 strings de esa forma en C#, tienes que ocupar algún método de la clase String, en eso google te puede ayudar mucho mas que yo, pero algo como esto te puede servir:

Código: C#
  1. if (consult.CompareTo(par.Value.ToString()) == 0)
  2.  

No se si eso es lo que realmente necesitas. Pero dado lo vago de tus preguntas no puedo ayudarte más.

Saludos!

badyalberto

  • Miembro activo
  • **
  • Mensajes: 77
    • Ver Perfil
Re: Diccionarios
« Respuesta #2 en: Martes 29 de Diciembre de 2009, 21:50 »
0
Okis gracias era eso :D

Pero yo cuando comparo quiero comparar el valor mac o ip por separado. Como tu lo haces no lo mira por separado pq compara con value y value que valor tiene entonces ? Me pasa lo mismo cuando quiero printar los dos valores.

Código: C#
  1.  
  2. using System;
  3. using System.Collections.Generic;
  4. using System.IO;
  5.  
  6. public class Dato
  7. {
  8.     public string mac;
  9.     public string ip;
  10. }
  11.  
  12. public class Treball
  13. {
  14.     static SortedDictionary<string,Dato> dic = new SortedDictionary<string,Dato>();
  15.    
  16.     public static void Main()
  17.     {
  18.         string clave="",dir;
  19.        
  20.         //dir=SeleccionarCarpeta();
  21.         StreamReader sr = new StreamReader("J:\ASI2\EDD\dhcp.conf");
  22.         string linia = sr.ReadLine();
  23.         char[] separador = { ' ' };
  24.        
  25.         bool guardamaccorrect=false,guardaipcorrect=false,clavecorrect=false;
  26.         Dato dato = new Dato();
  27.        
  28.         while ( linia != null )
  29.         {
  30.             if ( linia.Contains("host") || linia.Contains("ethernet") || linia.Contains("fixed-address"))
  31.             {
  32.                     string[] palabras = linia.Split(separador);
  33.                
  34.                     foreach ( string p in palabras )
  35.                     {
  36.                         if (!p.Contains(":") && !p.Contains("{") && !p.Contains("hardware") && !p.Contains("ethernet") && !p.Contains("fixed-address") && !p.Contains("."))
  37.                         {
  38.                             if (p != "host")
  39.                             {
  40.                                 clave=p;
  41.                                 Console.WriteLine(clave);
  42.                                 clavecorrect=true;
  43.                             }
  44.                         }
  45.                        
  46.                         if ( p.Contains(":"))
  47.                         {
  48.                             dato.mac=p;
  49.                             guardamaccorrect=true;
  50.                         }
  51.                         if (p.Contains("."))
  52.                         {
  53.                             dato.ip=p;
  54.                             guardaipcorrect=true;
  55.                         }
  56.                     }
  57.                 Console.ReadKey(); 
  58.             }
  59.             if (clavecorrect == true && guardaipcorrect == true && guardamaccorrect == true)
  60.             {
  61.                 dic.Add(clave,dato);
  62.             }
  63.            
  64.            
  65.             linia = sr.ReadLine(); 
  66.         }
  67.         Console.WriteLine("error");
  68.         menu();
  69.        
  70.     }
  71.     public static string SeleccionarCarpeta()
  72.     {
  73.         string dir;
  74.        
  75.         do
  76.         {
  77.             Console.Clear();
  78.             Console.WriteLine("Introdueix la direccio on esta ubicat el fitxer dchp.conf (Direccio Completa):");
  79.             dir=Console.ReadLine();
  80.             if (!File.Exists(dir))
  81.             {
  82.                 Console.WriteLine("El Fitxer no existeix");
  83.                 Console.WriteLine("Pulsi una tecla ...");
  84.                 Console.ReadKey();
  85.             }
  86.                
  87.         }while(!File.Exists(dir));
  88.        
  89.         Console.WriteLine("Direccio Correcte.");
  90.         Console.WriteLine("Presioni una tecla ...");
  91.         return dir; 
  92.     }
  93.     public static void consultes()
  94.     {
  95.         string consult;
  96.        
  97.         Console.WriteLine("Introdueix el nom del host,la ip o la mac que vols consultar:");
  98.         consult=Console.ReadLine();
  99.        
  100.         if (consult.Contains("."))
  101.         {
  102.             foreach ( KeyValuePair<string,Dato> par in dic)
  103.             {
  104.                 if (consult.CompareTo(par.Value.ToString()) == 0)
  105.                 {
  106.                     Console.WriteLine("{0} -> {1}", par.Key,par.Value);
  107.                 }
  108.             }
  109.         }
  110.         else if (consult.Contains(":"))
  111.         {
  112.             foreach ( KeyValuePair<string,Dato> par in dic)
  113.             {
  114.                 if (consult.CompareTo(par.Value.ToString()) == 0)
  115.                 {
  116.                     Console.WriteLine("{0} -> {1}", par.Key,par.Value);
  117.                 }
  118.             }
  119.         }
  120.         else
  121.         {
  122.             foreach ( KeyValuePair<string,Dato> par in dic) //segunda forma
  123.             {
  124.                 if (consult.CompareTo(par.Key.ToString()) == 0)
  125.                 {
  126.                     Console.WriteLine("{0} -> {1}", par.Key,par.Value);
  127.                 }
  128.             }
  129.         }
  130.         Console.ReadKey();
  131.     }
  132.     public static void modificar()
  133.     {
  134.     }
  135.     public static void afegir()
  136.     {
  137.     }
  138.     public static void eliminar()
  139.     {
  140.     }
  141.     public static void guardar()
  142.     {
  143.     }
  144.     public static void menu()
  145.     {
  146.         bool salir = false;
  147.  
  148.         while (!salir)
  149.         {
  150.             //Console.Clear();
  151.             Console.WriteLine("Escull una opcio:");
  152.        
  153.             Console.WriteLine("1) Fer consultes sobre el diccionari.");
  154.             Console.WriteLine("2) Modificar les dades d'un host existent en el diccionari.");
  155.             Console.WriteLine("3) Afegir un host al diccionari.");
  156.             Console.WriteLine("4) Eliminar un host del diccionari.");
  157.             Console.WriteLine("5) Guardar el contingut del diccionari reemplaçant la secció corresponent del fitxer dhcp.conf");
  158.             Console.WriteLine("6) Salir.");
  159.             ConsoleKeyInfo ck = Console.ReadKey();
  160.  
  161.             switch(ck.KeyChar)
  162.             {   
  163.                 case '1':
  164.                     consultes();
  165.                     break;
  166.                 case '2':
  167.                     modificar();
  168.                     break;
  169.                 case '3':
  170.                     afegir();
  171.                     break;
  172.                 case '4':
  173.                     eliminar();
  174.                     break;
  175.                 case '5':
  176.                     guardar();
  177.                     break;
  178.                 case '6':
  179.                     salir = true;
  180.                     Console.WriteLine("nPresione una tecla para salir ...");
  181.                     break;
  182.             }
  183.         }
  184.         Console.ReadKey();
  185.     }
  186. }
  187.  
  188.  

hijikata

  • Nuevo Miembro
  • *
  • Mensajes: 1
  • Nacionalidad: ec
    • Ver Perfil
Re: Diccionarios
« Respuesta #3 en: Viernes 1 de Enero de 2010, 19:43 »
0
las partes de "modificar y afegir" no tengo ni idea de como hacerlas. Debo de ser la persona mas mala para la programación :nosweat:
Si me pudierais ayudar os lo agradeceria eternamente.
Gracias de antemano y saludos coordiales.