Como ordenar alfabéticamente palabras en C++

Iniciado por loko5755, 4 Mayo 2014, 02:03 AM

0 Miembros y 1 Visitante están viendo este tema.

loko5755

Necesito saber ¿como ordenar palabras alfabéticamente en una tabla con matrices?

engel lex

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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

eferion

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 (cpp) [Seleccionar]

std::set< std::string > lista;
lista.insert( "zzz" );
lista.insert( "bbb" );
lista.insert( "tttt" );
lista.insert( "hola" );
lista.insert( "adios" );

for ( auto it = lista.begin( ); it != lista.end( ); ++it )
  std::cout << *it << endl;


Salida del programa:

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 (cpp) [Seleccionar]

#include <algorithm>
#include <iostream>
#include <string>
#include <vector>

int ordenar( const std::string& cad1, const std::string& cad2 )
{
  int to_return = 0;

  // Codigo para comparar las cadenas

  return to_return;
}

int main( )
{
  std::vector< std::string > lista;

  lista.push_back( "abogado" );
  lista.push_back( "Ahorcado" );
  lista.push_back( "prueba" );
  lista.push_back( "Finalista" );
  lista.push_back( "ZaRPazo" );
  lista.push_back( "C++" );

  std::sort( lista.begin( ), lista.end( ), ordenar );

  for ( auto it = lista.begin( ); it != lista.end( ); ++it )
    std::cout << *it << std::endl;
}

amchacon

@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
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

eferion

Cita de: 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

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