Dart: Invertir un número entero o int

En este problema, se requiere invertir un número entero int. Por ejemplo, dado el número 321, al invertirlo obtendríamos 123

Para esta solución vamos a utilizar un ciclo while, la división de módulo y división con resultado entero.

Primero debemos obtener el último dígito del número dado y este siempre va ser el residuo de dividirlo entre 10. Por ejemplo para obtener el 1 del número 321:

Ahora que ya sabemos como obtener el último dígito del número dado lo que tenemos que hacer es almacenar ese dígito en una variable y eliminarlo del número dado.

int numero = 321;
int digito = numero % 10;

// TODO: eliminar el dígito del número dado
numero = ???????????;

Eliminar el último dígito del número dado es muy sencillo. Simplemente dividimos entre 10 y vemos que el resultado siempre elimina el último dígito:

Entonces nuestro codigo quedaria de esta forma:

int numero = 321;
int digito = numero % 10;

numero ~/= 10;

Ahora necesitamos repetir este código mientras numero sea desigual a cero, por lo que vamos a agregar un ciclo:

int numero = 321;

// hasta que número sea 0 
while (numero != 0) {
	int digito = numero % 10;
	numero ~/= 10;
}

Por último tenemos que crear una variable int invertido donde vamos a ir agregando el último dígito. Como cada ciclo el dígito lo debemos agregar del lado derecho del dígito anterior y no podemos utilizar la concatenación, lo que vamos a hacer es multiplicar por 10 el número invertido y sumarle el dígito. El código final quedaría de esta forma, puedes correrlo para ver los resultados:

Nota

He notado que algunas personas dicen que este código no funciona si el primer digito del numero dado es 0. Por ejemplo, dado el número 0123 debería quedar 3210. Bueno la respuesta es sencilla. Al almacenar 0123 en una variable entera automáticamente se convierte en 123 ya que el cero a la izquierda no tiene valor por lo que al invertirlo quedaría 321.

Videotutorial en YouTube

Recuerda que también puedes ver el videotutorial de este curso en youtube:

Comparte este artículo