Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: vivinice en 20 Junio 2016, 03:07 am



Título: Ordenar letras de una palabra en orden alfabetico
Publicado por: vivinice en 20 Junio 2016, 03:07 am
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.

Código:

#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;
}



Título: Re: Ordenar letras de una palabra en orden alfabetico
Publicado por: AlbertoBSD en 20 Junio 2016, 17:16 pm
Hola, no se si el error valla por ahi, tienes la condicion dwl segundo for:

Código
  1. j<letras.size()

Pero llega un momento donde lees en:

Código
  1. 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:

Código
  1. j<(letras.size() - 1)

Saludos!