Ver Mensaje Individual
  #7 (permalink)  
Antiguo 26/02/2014, 09:45
Avatar de leosansan
leosansan
 
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 12 años, 7 meses
Puntos: 49
Respuesta: no se como comenzar

Cita:
Iniciado por superchava666 Ver Mensaje
ayuda con este problema. no se cómo comenzar.

.................................................. ....
nota: ahroita estoy utilizando sentencias if..else y while, es un ejerecicio del libro como programar en c,c++ y java de deitel
Creo que con lo que está usando es un poco fuerte ponerle de entrada una función.

Lo mismo pero sin función:

Código C++:
Ver original
  1. #include <stdio.h>
  2.  
  3. int main(void){
  4.   int i,digitos=0,numero,N,num=0;
  5.   printf("Introduzca un numero de cinco digitos:\n");
  6.   do{
  7.     scanf("%d",&numero);
  8.     for (i=10;(numero/i)>0;i*=10){
  9.       digitos++;
  10.     }
  11.     if (digitos!=4){
  12.       puts("He dicho de cinco digitos");
  13.       printf("Introduzca un numero de cinco digitos:\n");
  14.     }
  15.   }while (digitos!=4);
  16.  
  17.   num=0,N=numero;
  18.   while (N>0){
  19.     num=num*10+N%10;
  20.     N/=10;
  21.     printf("num=%d\n",num);/* observa como se va formando num */
  22.   }
  23.   if (numero==num)
  24.     printf ("\nES capicua\n");
  25.   else
  26.     printf ("\nNO es capicua\n");
  27.  
  28.   return 0;
  29. }

En esencia lo que se hace en el while es ir convirtiendo la variable num en la variable numero pero escrita al revés y ya luego se comparan.

Por ejemplo si numero=54321, y recuerda que N%10 da el último dígito, la variable num inicializa a cero y empieza el while :

* num=0+(54321)%10=0+1=1
N=N/10=54321/10=5432

*actua otra vez el while :
num=1*10+(5432%10)=10+2=12
N=N/10=5432/10=543

*actua otra vez el while :
num=12*10+(543%10)=120+3=123
N=N/10=543/10=54

*actua otra vez el while :
num=123*10+(54%10)=1230+4=1234
N=N/10=54/10=5

*actua otra vez el while :
num=1234*10+(5%10)=12340+5=12345
N=N/10=5/10=0 ==>salgo del while

Resultado: num=12345, justito la variable numero=54321 al reves. Ahora compara y al no ser iguales no es capicua o palindromo.

¡¡¡Saluditos!!!


Última edición por leosansan; 26/02/2014 a las 16:00