Ver Mensaje Individual
  #4 (permalink)  
Antiguo 21/11/2012, 17:26
sonrasiel
 
Fecha de Ingreso: septiembre-2012
Mensajes: 29
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: simbolos basura al imprimir una cadena

decidí cambiar la condición de los for pero no tuvo ningún efecto, ademas parece que el if no esta haciendo nada :S. ingreso cualquier cadena pero me sale siempre es palindromo.

Código C++:
Ver original
  1. #include <iostream>
  2. #include <cstdlib>
  3. using namespace std;
  4. int main()
  5. {
  6. char* cad_a=new char[30];
  7. char* cad_b=new char[30];
  8. int i, j;
  9. char temp;
  10. cout << "Introduce una cadena: "; //pide los datos
  11. cin.getline (cad_a,30);
  12.  
  13. for(i=0; cad_a[i]!='\0'; i++)
  14. cout << cad_a[i] << " "; //muestra es pantalla
  15. cout << endl << endl;
  16.  
  17. for(i=0; cad_a[i]!='\0'; i++)
  18. {  
  19. temp=cad_a[i];
  20. cad_b[29-i]=temp;
  21. }
  22. for(j=0; j<30; j++)
  23. cout << cad_b[j] << " "; //muesta cadena invertida
  24. if(cad_a[i]==cad_b[j])
  25. cout<<"es palindromo";
  26. else
  27. cout<<"no es palindromo";
  28. return 0;
  29. }

No puedo cambiar el ultimo for por que no me invierte la cadena le ponga i o j lo que intente fue
Código C++:
Ver original
  1. for(j=0; cad_b[j]!='\0'; j++)
  2. cout << cad_b[j] << " "; //muesta cadena invertida

si cambio la condicion del if
Código C++:
Ver original
  1. if(cad_a[i]==cad_b[j])
por
Código C++:
Ver original
  1. if(cad_a==cad_b)
me sale siempre no es palindromo no entiendo por que pasa esto si el primero compara cada elemento de la cadena y el otro compara la cadena completa me trae esto.

Última edición por sonrasiel; 21/11/2012 a las 17:33