Programación General => C/C++ => Mensaje iniciado por: Arsys en Viernes 4 de Junio de 2004, 17:55
Título: Cadenas En Tablas
Publicado por: Arsys en Viernes 4 de Junio de 2004, 17:55
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.
Título: Re: Cadenas En Tablas
Publicado por: nicokiki en Viernes 4 de Junio de 2004, 18:43
Hola!!!!!!
Lo voy a hacer de la manera mas facil posible, q es usando la STL.
Código: Text
//Vector de la STL
#include <vector>
//String de la STL
#include <string>
typedef std::string TString;
typedef std::vector<TString> TVector;
Luego en el main, declaras un vector de tipo TVector y le agregas una cadena. Un ejmplo seria asi:
Código: Text
TVector MiVector;
MiVector.push_back("Hola Mundo!!!");
Y listo
Salu2!!!!!!
Título: Re: Cadenas En Tablas
Publicado por: Arsys en Viernes 4 de Junio de 2004, 20:35
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:
Título: Re: Cadenas En Tablas
Publicado por: nicokiki en Viernes 4 de Junio de 2004, 22:24
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!!!!!!!
Título: Re: Cadenas En Tablas
Publicado por: lordford en Lunes 7 de Junio de 2004, 07:21
Hola:
mira, una solucion seria utilizando la lista de la STL, declarandola para tipo String asi:
Código: Text
// C++ Builder 6
#include <list.h>
// Declaracion de la lista
list<String>* mylist;
// Inicializar
mylist = new list<String>;
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:
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
Título: Re: Cadenas En Tablas
Publicado por: nicokiki en Lunes 7 de Junio de 2004, 14:55
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!!!!!!
Título: Re: Cadenas En Tablas
Publicado por: Noel Solw en Lunes 7 de Junio de 2004, 17:44
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.