Duda programa c++

Iniciado por thealberteitor, 10 Agosto 2016, 20:03 PM

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

thealberteitor

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

AlbertoBSD

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:

#include<stdio.h>
#include<stdbool.h>
#include<string.h>

int main() {
bool capicua = true;
int longitud,i;
char numero[10] = "";
printf("Ingrese un numero: ");
fgets(numero,10,stdin);
longitud = strlen(numero);
numero[longitud-1] = 0;
longitud = strlen(numero);
longitud -=1;
printf("Longitud del numero %i\n",longitud );
i = 0;
while(i <= longitud && capicua) {
if(numero[i] != numero[longitud]) {
capicua = false;
}
i++;
longitud--;
}
if(capicua) {
printf("El numero es Capicua!\n");
}
else{
printf("El numero NO es Capicua!\n");
}
return 0;
}


Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

MessageBoxA

SI LA MATRIX FUERA PERFECTA.... ESTARÍA ESCRITA EN C++