• Lunes 13 de Mayo de 2024, 04:43

Autor Tema:  Cadenas En Tablas  (Leído 1743 veces)

Arsys

  • Miembro activo
  • **
  • Mensajes: 26
    • Ver Perfil
Cadenas En Tablas
« en: Viernes 4 de Junio de 2004, 17:55 »
0
Pues eso, me gustaría saber si se pueden meter las cadenas de letras en tablas.

Por ejemplo, pedir una palabra y almacenarla en una tabla.

nicokiki

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Cadenas En Tablas
« Respuesta #1 en: Viernes 4 de Junio de 2004, 18:43 »
0
Hola!!!!!!

Lo voy a hacer de la manera mas facil posible, q es usando la STL.

Código: Text
  1.  
  2. //Vector de la STL
  3. #include <vector>
  4. //String de la STL
  5. #include <string>
  6.  
  7. typedef std::string TString;
  8. typedef std::vector<TString> TVector;
  9.  
  10.  

Luego en el main, declaras un vector de tipo TVector y le agregas una cadena. Un ejmplo seria asi:

Código: Text
  1.  
  2. TVector MiVector;
  3. MiVector.push_back("Hola Mundo!!!");
  4.  
  5.  


Y listo

Salu2!!!!!!

Arsys

  • Miembro activo
  • **
  • Mensajes: 26
    • Ver Perfil
Re: Cadenas En Tablas
« Respuesta #2 en: Viernes 4 de Junio de 2004, 20:35 »
0
El tema que es que me han mandado hacer un programa que meta palabras en un fichero y luego las pase a otro fichero ordenadas por orden alfabético, y he pensado que lo más fácil sería hacerlo con tablas, ¿o es más fácil hacerlo de otra forma?

Saludos  :hippi:

nicokiki

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Cadenas En Tablas
« Respuesta #3 en: Viernes 4 de Junio de 2004, 22:24 »
0
Hola!!!!!!

En tu caso en el q debes ordenar palabras por orden alfabetico, lo q yo haria es crear una clase String para asi poder sobrecargar, el "<", el  "=", el ">" para poder ordenar los strings (salvo q el string de la STL tenga sobrecargado el <, > y =, cosa q desconozco).
Luego por tu tema en especial, lo q te conviene es parsear el archivo q tiene los datos cargados y cargarlo en memoria en un vector de la STL o lista de la STL o vector tuyo o lista tuya o arbol o lo q sea, pero q este en memoria. Luego lo ordenas al vector y como ultimo paso recorres secuencialmente el vector ordenado y lo volcas al archivo de destino. Tene en cuenta q si tenes 9 mil millones de palabras distintas, dudo q lo puedas mantener en memoria, pero dudo q ese sea tu caso.

Salu2!!!!!!!

lordford

  • Miembro activo
  • **
  • Mensajes: 53
    • Ver Perfil
Re: Cadenas En Tablas
« Respuesta #4 en: Lunes 7 de Junio de 2004, 07:21 »
0
Hola:

mira, una solucion seria utilizando la lista de la STL, declarandola para tipo String asi:

Código: Text
  1.  
  2. // C++ Builder 6
  3. #include &#60;list.h&#62;
  4.  
  5. // Declaracion de la lista
  6. list&#60;String&#62;* mylist;
  7.  
  8. // Inicializar
  9. mylist = new list&#60;String&#62;;
  10.  
  11.  

Asi podras almacenar Strings sin problemas, eliminar, adicionar, insertar en determinada posicion....

Y puedes implementar un metodo que determine primero en que posicion se debe insertar el String antes de hacerlo, o sea que la lista se ordene alfabeticamente ella sola, y sera mejor para trabajarlo en el fichero.

Para ordenar puedes utilizar las funciones mas elementales de los Strings, por ejemplo:

Código: Text
  1.  
  2. // C++ Builder 6
  3. #include &#60;string.h&#62;
  4.  
  5. // Dados 2 Strings
  6. String cad1 = &#34;programa&#34;, cad2 = &#34;programador&#34;;
  7.  
  8. // Ahora comparas
  9. int result = strcmp(cad1.c_str(), cad2.c_str());
  10.  
  11. // Luego pones el codigo.
  12.  
  13.  


Y asi comparas para ordenar alfabeticamente. EL algoritmo de insercion no es difisil, solo tienes un inconveniente, la STL se implemento para acceder a los elementos de las clases contenedoras a traves de objetos llamados "iteradores". Busca referencia sobre estos pues no es muy difisil utilizarlos. Si tienes dudas postea nuevamente.

Salu2,

 :huh:  B)  :D  :smartass:  :hola:

LordFord
~ Si quieres que algo en la vida te salga bien]~

nicokiki

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Cadenas En Tablas
« Respuesta #5 en: Lunes 7 de Junio de 2004, 14:55 »
0
Lordford!!!!!!!

Antes q nada desconozco si estas con Builder C++ (el de Delphi).
Porque el String asi como lo usaste no existe, de ninguna manera. Ya lo hemos discutido en posts anteriores y q alguien me demuestre q existe el String como tipo de dato nativo de C/C++. Si vos hicieras :
typedef std::string String;
Entonces si lo podes usar, pero de otra manera no existe.
Q haya librerias q implementan el String no tengo duda, pero si leemos un libro de C o C++ no existe el String como tipo de dato. Si existe el de la STL (pero es para C++ y no para C).
2º: para usar los strings de la STL tenes q incluir <string> y NO <string.h>

Salu2!!!!!!

Noel Solw

  • Miembro activo
  • **
  • Mensajes: 81
    • Ver Perfil
Re: Cadenas En Tablas
« Respuesta #6 en: Lunes 7 de Junio de 2004, 17:44 »
0
Me parece que no necesitas usar tablas.
Supongo que trabajas en c++ standart y usas archivos text.
Lees el archivo fuente, linea por linea, y vas separando las diferentes palabras con strtok(), las ordenas y guardas en el archivo de destino.
Hay que pensar que pasa con los separadores entre palabras. Esto tampoco es dificil de solucionar, todo depende de las condiciones del problema.