martes, 19 de abril de 2011

Como "invertir numeros" en C.

En esta entrada explicaremos cómo invertir un numero ingresado en C (testeado en Dev-C++).

Como programa principal.

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int N, Resto, Invertido=0;                                            //Declaración de variables
    printf("Ingrese el numero que desea invertir \n");              //Muestra lo que deseamos pedir
    scanf("%d", &N);                                                      //Luego de que es ingresado, lo guarda en la variable N
    while(N! = 0)                               //Ciclo iterativo que va utilizando cada digito del numero
      {
         Resto=N%10;                  //Guarda el resto de la division del numero y 10, para asi guardar cada digito
         N=N/10;                         //Disminuye el numero para así poder utilizar el digito siguiente.
         Invertido=Invertido*10+Resto;         //Invierte el numero directamente  
       }
       printf("Su nuevo numero invertido es %d \n", Invertido);
       system("pause");
}

Ahora escribiremos el mismo código, pero tomado como función. Es casi idéntico al anterior, pero luego nombraré la principal diferencia.

#include <stdio.h>
#include <stdlib.h>
int InvertirNum(int N)
{
  int Invertido=0, Resto;
      while(N!=0)
      {
          Resto=N%10;
          N=N/10;
          Invertido=Invertido*10+Resto;
       }
     return Invertido;
 }
int main()
{
    int N, Respuesta;
   printf("Ingrese el numero que desea invertir \n");
   scanf("%d", &N);
   Respuesta=InvertirNum(N);
   printf("El numero invertido es %d \n", Respuesta);
   system("pause");
}

La gran diferencia en usarlo como función, es que luego puede ser llamado cuantas veces sea necesario sin escribir todo el código denuevo, sino que solo llamandola con un parametro y usandola en alguna sentencia (asignarlo a variable, hasta incluso en un print). Es una forma muy útil de ahorrar código, entre otras cosas.
Y hecho!
   

8 comentarios:

  1. PREGUNTA4:
    Haciendo uso de métodos recursivos e iterativos, invertir el valor de N.
    Ejemplo: Ingrese Número: 123
    El número invertido es=> 321
    Se tiene la siguiente expresión recursiva:
    int invertir (int n) {
    int aux=n,cont=-1;
    float pot;
    while (aux>=1)//para n números enteros
    {
    aux=aux/10;
    cont=cont+1;
    }
    pot=pow(10,cont);
    if (n < 10) { //caso base
    return n;
    }
    else {//Expresión recursiva
    return (n % 10)*pot + invertir (n / 10) ;
    }
    }
    Nota: Se pide implementar la solución en forma recursiva e iterativa

    ResponderEliminar
  2. Porfavor como resolver esta pregunta

    ResponderEliminar
    Respuestas
    1. Public in invertir(int n) {
      int resultado;
      if(n<10){
      resultado=1;
      }else{
      resultado=invertir(n/10)+(n%10)*(int) Math.pow(10,Math.log10(n));
      }
      return resultado;
      }

      Eliminar
    2. Implementar una función invertir un número.
      int invertido = invertir(457848);
      cout<<invertido; //848754

      Eliminar
  3. como hago si quiero invertir el numero 10? para que mi salida sea 01?

    ResponderEliminar
  4. Casinos in Montville, CT - MapYRO
    Find the best casinos in Montville, CT 하남 출장마사지 and Casinos Near 고양 출장샵 Casinos Near Casinos. MapYRO has a list of all casinos in the United 안산 출장마사지 States and has a 대구광역 출장샵 list 안양 출장마사지

    ResponderEliminar