elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda programa en c para sacar palíndromos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda programa en c para sacar palíndromos  (Leído 1,892 veces)
Noob_boy

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Ayuda programa en c para sacar palíndromos
« en: 1 Enero 2016, 18:29 pm »

Buenas he estado intentando hacer un programa basandome en una conjetuera matemática que se usa para obtener números palíndromos. En el programa por ejemplo se teclea el 59, entonces 59 + 95 = 154, 154+451=605, 605+ 506= 1111 que es palíndromo.
El caso es que con el codigo que he generado me da un error y se cierra la ventana

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. int reverso(int num){
  5. int reverso=0,exp=log10(num);
  6. while(num>0){
  7. reverso = reverso + (num%10)*pow(10,exp);
  8. exp--;
  9. num=num/10;
  10. }
  11. return reverso;
  12. }
  13. int palindromo(int num){
  14. int num1=num;
  15. int tam=log10(num)+1;
  16. int matriz[tam];
  17. int i,j=0,aux=0;
  18. for(i=0; i<tam;i++){
  19. matriz[i]=num1%10;
  20. num1=num1/10;
  21. }
  22. while(!(i<=0)){
  23. i--;
  24. aux=matriz[i]-matriz[j];
  25. if (aux!=0) return -1;
  26. j++;
  27. }
  28. return 0;
  29. }
  30.  
  31.  
  32. int main( )
  33. {
  34. int num,cont;
  35. printf("Ingrese un numero\n");
  36. scanf("%d", &num);
  37. while ((palindromo(num)!=0)||(cont<200)){
  38. num=num+reverso(num);
  39. cont++;
  40. }
  41. printf("su palindromo es %d",num);
  42.  
  43. }


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Ayuda programa en c para sacar palíndromos
« Respuesta #1 en: 1 Enero 2016, 20:19 pm »

Localiza la sentencia que tira el error. Para ello, ve poniendo "pivotes" en el código. Por ejemplo:
Código
  1. SENTENCIA1
  2. printf("1-2\n");
  3. SENTENCIA2
  4. printf("2-3\n");
  5. SENTENCIA3

No hace falta que pongas uno entre cada sentencia, desde luego. Ponlas en lugares etsratégicos, y localiza el error desde el main, hasta las funciones. Una vez sepas qué da el error, mira qué variables utiliza, y qué puede ser incorrecto.


En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Ayuda programa en c para sacar palíndromos
« Respuesta #2 en: 1 Enero 2016, 20:59 pm »

Vale, dos cosas que veo.

En tu sentencia de control del while de la función main te interesa que itere mientras se cumplan las dos condiciones: que el numero no sea palíndromo Y que el contador no llegue a 200. Así como lo tienes, aunque pases por encima de un palíndromo no se va a parar porque el contador no ha llegado a 200.

Por otra parte en tu función de búsqueda de palíndromo te has complicado bastante mucho y verás:
qué pasa si restas un palíndromo por su reverso? qué ocurre si restas un número que no lo es por su reverso?
En línea

user-marcos

Desconectado Desconectado

Mensajes: 159


Ver Perfil
Re: Ayuda programa en c para sacar palíndromos
« Respuesta #3 en: 1 Enero 2016, 21:02 pm »

Un fallo importante es que estas usando un contador sin inicializar.
Cuando hagas una función pruebala por separado te ahorra trabajo en tu caso revisa la función reverso.
Asegúrate que estés usando bien los tipos de datos, te lo digo por el uso de logaritmos y enteros.
En línea

Noob_boy

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Ayuda programa en c para sacar palíndromos
« Respuesta #4 en: 1 Enero 2016, 22:27 pm »

gracias por la ayuda he modificado el programa y ya hace su funcion  :D

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. int reverso(int num){
  5. int reverso=0,exp=log10(num);
  6. while(num>0){
  7. reverso = reverso + (num%10)*pow(10,exp);
  8. exp--;
  9. num=num/10;
  10. }
  11. return reverso;
  12. }
  13. int palindromo(int num){
  14. if (num-reverso(num)==0)
  15. return 0;
  16. else return -1;
  17. }
  18.  
  19.  
  20. int main( )
  21. {
  22. int num;
  23. printf("Ingrese un numero\n");
  24. scanf("%d", &num);
  25. while ((palindromo(num)!=0)){
  26. num=num+reverso(num);
  27. }
  28. printf("su palindromo es %d",num);
  29.  
  30. }
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Programa para sacar copias a cds karaoke
Software
merazy 0 1,399 Último mensaje 14 Diciembre 2004, 09:35 am
por merazy
Ayuda. Programas para reconocer Números palíndromos.
Programación C/C++
theluigy13etv 9 12,564 Último mensaje 24 Enero 2012, 15:40 pm
por Xandrete
Programa para distinguir palindromos: « 1 2 »
Programación C/C++
Error 404: 12 7,525 Último mensaje 27 Junio 2014, 18:16 pm
por Eternal Idol
Ayuda para sacar coseno en C.
Programación C/C++
NicolasPileci 3 8,688 Último mensaje 7 Noviembre 2016, 17:43 pm
por NicolasPileci
siguiendo con palíndromos en python
Scripting
tincopasan 2 2,556 Último mensaje 15 Marzo 2017, 06:34 am
por tincopasan
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines