Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: thealberteitor en 10 Agosto 2016, 20:03 pm



Título: Duda programa c++
Publicado por: thealberteitor en 10 Agosto 2016, 20:03 pm
Buenas, tengo un problemin con este programa el cual te dice si un número es capicua o no. Compila bien pero debe de haber un error en la función Es_booleana pero no lo veo. Por ejemplo, el número 64546 es capicúa y te dice que no lo es. (Un número es capicúa cuando se lee igual para delante que para atrás). He buscado el algoritmo por internet y la mayoría son como el mio por eso no entiendo el error. Alguien puede ayudarme? Gracias


#include<iostream>

using namespace std;

int NumDigitos(int num){
 
  int cont=0;
  while(num){
    cont++;
    num/=10;
  }
  return cont;
}

bool Es_capicua(int num){
   
   int total = NumDigitos(num);
   int v[total-1];
   
   bool es_capicua=false;
   
   for(int i=0; i<=total; i++){
      v=num%10;
      num/=10;
   }
   
   for(int i=0; i<total; i++){
      if(v==v[total-i])
         es_capicua=true;
   }
   return es_capicua;
}
   

int main(){
   
   int n;
   cin >> n;
   
   bool es_capicua = Es_capicua(n);
   
   if(es_capicua)
      cout << "Es capicua" << endl;
   else
      cout << "No es capicua" << endl;
}
   
   
   


Título: Re: Duda programa c++
Publicado por: AlbertoBSD en 10 Agosto 2016, 20:17 pm
Lo mas recomenble para determinar si un numero es Capicua o no lo es, es leer el numero como cadena de texto.

Determinar la longitud de la cadena y evaluar en un ciclo hasta que recorras la mitad de la cadena.

Tedejo un ejemplo que ya tenia hecho ya que al momento de que pegas tu codigo sin GeSHi, se pierden los index de los arreglos:

Código
  1. #include<stdio.h>
  2. #include<stdbool.h>
  3. #include<string.h>
  4.  
  5. int main() {
  6. bool capicua = true;
  7. int longitud,i;
  8. char numero[10] = "";
  9. printf("Ingrese un numero: ");
  10. fgets(numero,10,stdin);
  11. longitud = strlen(numero);
  12. numero[longitud-1] = 0;
  13. longitud = strlen(numero);
  14. longitud -=1;
  15. printf("Longitud del numero %i\n",longitud );
  16. i = 0;
  17. while(i <= longitud && capicua) {
  18. if(numero[i] != numero[longitud]) {
  19. capicua = false;
  20. }
  21. i++;
  22. longitud--;
  23. }
  24. if(capicua) {
  25. printf("El numero es Capicua!\n");
  26. }
  27. else{
  28. printf("El numero NO es Capicua!\n");
  29. }
  30. return 0;
  31. }



Título: Re: Duda programa c++
Publicado por: MessageBoxA en 11 Agosto 2016, 03:18 am
ve aqui
http://foro.elhacker.net/programacion_cc/funcion_palindromo-t228165.0.html (http://foro.elhacker.net/programacion_cc/funcion_palindromo-t228165.0.html)