Ordenar letras de una palabra en orden alfabetico

Iniciado por vivinice, 20 Junio 2016, 03:07 AM

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

vivinice

Que tal a todos, me llamo viviana y estoy empezando a programar.
tengo una duda con este programa ya que no ordeana de la letra A a la Z, marca un error, pero si cambiamos el ordenamiento inversamente, ordena correctamente de la Z a la letra A.
gracias por su tiempo.



#include <iostream>
#include <cstdlib>

using namespace std;



int main()
{

    string letras=" ",aux=" ";
    int op=9;

    do{
    cout<<"ingrese las letras que desee..."<<endl;
    cin>>letras;
    cout<<"Su palabra es..."<<endl;
    cout<<letras<<endl;




    for(int i=0;i<letras.size();i++)
    {
        for(int j=0;j<letras.size();j++)
            if (letras[j]>letras[j+1])
        {
            aux[0]=letras[j];
            letras[j]=letras[j+1];
            letras[j+1]=aux[0];
        }
    }
    cout<<endl;
    cout<<letras<<endl;


    cout<<endl<<endl;
    }while(op!=0);


    return 0;
}



AlbertoBSD

Hola, no se si el error valla por ahi, tienes la condicion dwl segundo for:

j<letras.size()

Pero llega un momento donde lees en:

letras[j+1]

Imagina que j ya es el ultimo caracter entonces j+1 lee en una posición  de memoria no inicializada o en su defecto tiene el caracter nulo este tiene un valor de 0 y siempre va a ser menor a cualquier letra y el if se va a cumplir entonces va a hacer cosas raras el programa.

Mejor en la condicion del for usa:

j<(letras.size() - 1)

Saludos!
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW