Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: loko5755 en 4 Mayo 2014, 02:03 am



Título: Como ordenar alfabéticamente palabras en C++
Publicado por: loko5755 en 4 Mayo 2014, 02:03 am
Necesito saber ¿como ordenar palabras alfabéticamente en una tabla con matrices?


Título: Re: Como ordenar alfabéticamente palabras en C++
Publicado por: engel lex en 4 Mayo 2014, 05:17 am
Preferiblemente usar strings, revisas el largo del string, el largo del string -1 es el primer carácter del string, haces un bubble sort en base a eso reorganizas los elementos, así con el segundo carácter, 3ro, etc


Título: Re: Como ordenar alfabéticamente palabras en C++
Publicado por: eferion en 5 Mayo 2014, 10:13 am
Si las palabras no van a aparecer duplicadas y van a venir todas en minúsculas o mayúsculas puedes usar el contenedor set.

Código
  1. std::set< std::string > lista;
  2. lista.insert( "zzz" );
  3. lista.insert( "bbb" );
  4. lista.insert( "tttt" );
  5. lista.insert( "hola" );
  6. lista.insert( "adios" );
  7.  
  8. for ( auto it = lista.begin( ); it != lista.end( ); ++it )
  9.  std::cout << *it << endl;
  10.  

Salida del programa:
Código:
adios
bbb
hola
ttt
zzz

Si se admiten duplicados, puedes usar el contenedor multiset.

Si se han de ordenar independientemente de que empiecen por mayúsculas o minúsulas puedes usar la función sort:

Código
  1. #include <algorithm>
  2. #include <iostream>
  3. #include <string>
  4. #include <vector>
  5.  
  6. int ordenar( const std::string& cad1, const std::string& cad2 )
  7. {
  8.  int to_return = 0;
  9.  
  10.  // Codigo para comparar las cadenas
  11.  
  12.  return to_return;
  13. }
  14.  
  15. int main( )
  16. {
  17.  std::vector< std::string > lista;
  18.  
  19.  lista.push_back( "abogado" );
  20.  lista.push_back( "Ahorcado" );
  21.  lista.push_back( "prueba" );
  22.  lista.push_back( "Finalista" );
  23.  lista.push_back( "ZaRPazo" );
  24.  lista.push_back( "C++" );
  25.  
  26.  std::sort( lista.begin( ), lista.end( ), ordenar );
  27.  
  28.  for ( auto it = lista.begin( ); it != lista.end( ); ++it )
  29.    std::cout << *it << std::endl;
  30. }
  31.  


Título: Re: Como ordenar alfabéticamente palabras en C++
Publicado por: amchacon en 5 Mayo 2014, 11:16 am
@Eferion: Yo no llamaria a la variable "lista", si veo eso en un código pensaré que es un list y no un vector ;D


Título: Re: Como ordenar alfabéticamente palabras en C++
Publicado por: eferion en 5 Mayo 2014, 12:04 pm
@Eferion: Yo no llamaria a la variable "lista", si veo eso en un código pensaré que es un list y no un vector ;D

Cierto... se nota que list lo uso poco jejejeje