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