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

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


  Mostrar Temas
Páginas: [1]
1  Programación / Ejercicios / ejercicio de c en: 8 Septiembre 2004, 08:31 am

algoritmo que al ingresar un numero por pantalla,al numero ya ingresado le suma su numero invertido,y   este resultado tiene q ser palindrome(que se pueda leer de igual forma de izquieda a derecha .  eje:

1234=4321           , si el resultado es palindrome  imprimir por pantalla 1paso, siino ver en cuantos pasos es posible llegar a un numero palindrome
,esto realizarlo en cualquier base, dde la 10 hasta la base 2.

cualquie duda escribanme.
yo lo hice pero no se porq no me compilo.
me salia en pantalla  pow:domain

#include<stdio.h>
#include<math.h>

int funinv(int);

int funsuma(int);

int funacum(int);

int basex;
int funcionbasex(int,int);
int funbase(int,int);
main()

{

unsigned long int n,boolean,pasos,v,band,basex,num;




do{

   printf("ingrese un numero:");

   scanf("%d",&n);

   }while(n<0);

  num=n;
 for(basex=9;basex>=2;basex--)
  {
 band=1;
while(num!=0)
{
  v=num%10;
  num=num/10;

    if(v>=basex)
     {
     printf("base %d: ? pasos",basex);
     band=0;
     }

 }
    /*printf("band:%d",band);*/ /*hasta aqui compila bien*/
while(band==1)
     {
     pasos=0;



     do{

        n=funacum(n);

        printf("funacumda:%d",n);

        boolean=funsuma(n);

        pasos=pasos+1;

        }while(boolean==0);



printf("Base %d:%d pasos",basex,pasos);

     }
}
}

/*------------------------------------------------------------------------*/

int funinv(int n)     /*FUNCION PARA INVERTIR UN NUMERO*/

{

int inv,num1,r;

num1=n;



if(n>=10)

  {

  inv=0;

  while(n!=0)

       {

       r=n%10;

       n=n/10;

       inv=(r+(inv*10));

       }

   }



if((num1>=0)&&(num1<10))

   {

   inv=num1;

   }

return(inv);

}

/*---------------------------------------------------------------------------*/

int funsuma(int suma)

{

int flag;                          /*VERIFICACION DEL NUMERO PALINDROME*/



if(suma==funinv(suma))

   {

   flag=1;

   }

   else

       if(suma!=funinv(suma))

         {

         flag=0;

         }

return(flag);

}

/*-------------------------------------------------------------------*/

int funacum(int n)

{                                                   /*SUMAS SUCESIVAS PARA VER LA COMPROBACION DE LOS PASOS*/

int adicion,a,sumabase;

a=funinv(n);
sumabase=(funbase(n,basex)+funbase(a,basex));
adicion=funcionbasex(sumabase,basex);

return(adicion);

}
/*------------------------------------------------------------------------*/
/*FUNCION PARA PASAR DE BASE 10 A BASE X*/
int funcionbasex(int n,int basex)
{
int inv,num1,h;
num1=n;

if(n>=10)
  {
   inv=0;

   while(n!=0)
        {
         h=n%basex;
         n=n/basex;
         inv=h+inv*10;
         }
   }
if((num1>=0)&&(num1<10))
    {
     inv=num1;
    }
    inv=funinv(inv);
return(inv);
}

/*------------------------------------------------------------------------------*/
/*FUNCION PARA PASAR DE BASE x A BASE 10*/

int funbase(int q,int base1)
{
int cont, i,sum,T[100],a;
cont=0;

while(q!=0)
      {
       T[cont]=q%10;
       q=q/10;
       cont=cont+1;
       }
sum=0;
for(i=0;i<=cont-1;i++)
   {
    a=pow(base1,i);
    sum=(sum+(T*a));
   }
return(sum);
}
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines