Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Ordenar palabras en un txt

Estas en el tema de Ordenar palabras en un txt en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 18/08/2013, 17:45
Avatar de SantyXDz  
Fecha de Ingreso: noviembre-2011
Ubicación: Colombia
Mensajes: 3
Antigüedad: 13 años
Puntos: 0
Mensaje Ordenar palabras en un txt

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.
  #2 (permalink)  
Antiguo 19/08/2013, 08:46
Avatar de L3m0n  
Fecha de Ingreso: diciembre-2011
Mensajes: 219
Antigüedad: 12 años, 10 meses
Puntos: 46
Respuesta: Ordenar palabras en un txt

Bueno de C++ no se, te hablaré de C que para lo que viene siendo esto es bastante parecido.
La función strcmp no compara las palabras de la manera que tu piensas, lo único que hace es decir si las palabras son iguales o no. Para comparar alfabéticamente las palabras lo que tienes que hacer es comparar caracter por caracter. En C, como usas un array de char eso es fácil ya que solo tienes que comparar el propio array, no se como funciona en C++, ya que tiene una clase string, si no me equivoco, así que puedes probar a implementarlo primero con arrays de chars y luego probar con el propio string.


Sobre el tema de los archivos yo dejaría de preocuparme por eso y lo que haría primero es implementar el algoritmo creando una cadena en el propio codigo, una vez funcione eso, introducir el fichero sera bastante sencillo.
  #3 (permalink)  
Antiguo 23/08/2013, 13:16
 
Fecha de Ingreso: diciembre-2011
Ubicación: Crespo - Entre Rios
Mensajes: 155
Antigüedad: 12 años, 11 meses
Puntos: 25
Respuesta: Ordenar palabras en un txt

para c++, la clase string tiene sobrecargado el los operadores <, >, = y otros. Podes usarlos para realizar las comparaciones operadores sobrecargados de string

Ó podes tratarlo como un arreglo string como arreglo
  #4 (permalink)  
Antiguo 23/08/2013, 13:55
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 12 años, 3 meses
Puntos: 83
Respuesta: Ordenar palabras en un txt

@L3m0n: "...La función strcmp no compara las palabras de la manera que tu piensas, lo único que hace es decir si las palabras son iguales o no..."

Un momento, el strcmp retorna 0 si todos los caracteres coinciden, pero retorna 1 si el primer caracter diferente del primer texto es mayor que el del segundo, y retorna -1 en caso contrario.

Código C:
Ver original
  1. char str1[] = "abce";
  2. char str2[] = "abcf";
  3. printf("%d", strcmp(str1, str2));// muestra -1, str2 es mayor que str1
  4.  
  5. char str1[] = "abcf";
  6. char str2[] = "abce";
  7. printf("%d", strcmp(str1, str2));// muestra 1, str1 es mayor que str2

No compara todos los caracteres (al menos no siempre) pero tampoco se queda en un boleano. Por lo demas coincido con L3m0n, primero crea el algoritmo que funcione con un texto picado a mano, luego ya solucionaras lo de los archivos (una pista: tienes que cargar todas la palabras en una lista de palabras, ordenarla y luego sobreescribir el archivo).

Saludos
vosk
  #5 (permalink)  
Antiguo 23/08/2013, 16:33
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 12 años, 4 meses
Puntos: 28
Respuesta: Ordenar palabras en un txt

strcmp te devuelve -1 si la palabra va antes y 1 si la palabra va despues. Sabiendo eso, puedes ordenar cualquier lista de palabras alfabeticamente.

Etiquetas: palabras, string, txt
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:15.