Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: SantyXDz en 19 Agosto 2013, 02:11 am



Título: Odenamiento Alfabetico en txt
Publicado por: SantyXDz en 19 Agosto 2013, 02:11 am
Hola,
Verán tengo unos txt una lista de palabras, cada un en una linea y debo ordenar las palabras en orden alfabético con diferentes algoritmos de ordenamiento (para compara sus tiempos y eso...).
Plantear los algoritmos mas o menos lo se hacer, sin embargo carezco de experiencia con c++ y no se hacer algunas cosas, espero me puedan ayudar.

Mi primer problema es el comparar palabras para saber cual es alfabéticamente mayor que cual, eh visto que en la biblioteca string.h hay una función llamada strcmp que realiza esa función pero la verdad no se utilizarla del todo.

Mi segundo problema y el principal es que no se como trabajar con archivos externos, no se como cambiar el orden de las palabras dentro del txt, como leerlas etc... eh visto que hay muchas bibliotecas para trabajar con archivos externos como ofstream, ifstream, filebuf y fstream pero no se su utilización.

espero me puedan ayudar.


Título: Re: Odenamiento Alfabetico en txt
Publicado por: mavicadi en 19 Agosto 2013, 03:04 am
Hola! A ver si te puedo ayudar un poco aunque no programe en C++, solo sé un poco de C.

En C he usado strcmp y es fácil. Se usa así : strcmp(cad1,cad2); El resultado será un número entero. Si el número es mayor que 0, significa que cad1 es mayor que cad2, si es menor que cero pues que cad1 es menor que cad2 y si es 0, que las cadenas son iguales.

Me imagino en que en C++ será así también.

En cuanto al segundo, no sé muy bien, yo en las clases de C usaba la función fopen para abrir archivos de texto y ahí nos hemos quedado. Siento no ser de más ayuda.

Un saludo.


Título: Re: Odenamiento Alfabetico en txt
Publicado por: do-while en 19 Agosto 2013, 10:36 am
¡Buenas!

Lo de strcmp ya te lo han explicado.

Después de esto, lo que te toca es trabajar con el contenido del archivo:

fopen (http://www.cplusplus.com/reference/cstdio/fopen/)
fclose (http://www.cplusplus.com/reference/cstdio/fclose/)
fgets (http://www.cplusplus.com/reference/cstdio/fgets/)
feof (http://www.cplusplus.com/reference/cstdio/feof/)

Con estas funciones debería ser suficiente.

¡Saludos!


Título: Re: Odenamiento Alfabetico en txt
Publicado por: amchacon en 19 Agosto 2013, 10:44 am
C++ es más fácil tambien. Puedes usar por un lado la clase string:

Código
  1. string Cadena = "Un ejemplo";
  2. string Cadena2 = "Otro ejemplo";
  3.  
  4. if (Cadena > Cadena2) // La cadena va despues de Cadena2

O usar unos de los muchos algoritmos de ordenamiento:

Código
  1. vector<string> Cadenas;
  2.  
  3. Cadenas.push_back("Murcielago");
  4. Cadenas.push_back("Calabaza");
  5. Cadenas.push_back("Zombie");
  6.  
  7. sort(Cadenas.begin(),Cadenas.end()); // Ordenar...


Título: Re: Odenamiento Alfabetico en txt
Publicado por: eferion en 19 Agosto 2013, 13:02 pm
Pues bien, primero tienes que leer el contenido del archivo y rellenar un array con las palabras que te vas encontrando.

Una vez tienes las palabras en el array tienes que aplicar un algoritmo de ordenación a tu elección.

Finalmente coges el array ordenado y lo almacenas en otro fichero o lo presentas por pantalla... eso a tu elección.