Ahora veamos cómo determinar si un número es narcisista utilizando el lenguaje C# también pronunciado C Sharp.
Recuerda que si quieres saber el algoritmo así como su definición te recomiendo leer: Algoritmo número narcisista.
He escrito una función que devuelve un booleano y recibe un entero.
Devuelve true
si el número que le mandamos es narcisista, y false
en caso contrario. Dicha función es la de la imagen del inicio del post, pero eso sólo fue ilustrativo, el código real es este:
public static Boolean EsNarcisista(int numero){
string numeroComoCadena = numero.ToString();
int longitudDelNumero = numeroComoCadena.Length;
double suma = 0;
// Recorrer toda la cadena carácter por carácter, y elevarlo a la potencia
// dada por la longitud del número
for(int indice = 0; indice < longitudDelNumero; indice++){
char caracterActual = numeroComoCadena[indice];
int cifraComoEntero = (int) Char.GetNumericValue(caracterActual);
double numeroElevado = Math.Pow(cifraComoEntero, longitudDelNumero);
suma = suma + numeroElevado;
}
if(suma == numero) return true;
else return false;
}
Veamos algunas cosas interesantes. Para convertir un entero a string en C# usamos el método ToString
. Luego recorremos la cadena y usamos Char.GetNumericValue
para convertir un carácter a un entero.
Más tarde, a ese entero lo elevamos a la potencia dada por la longitud del número y el resultado lo vamos sumando en la variable suma.
Finalmente comprobamos si la suma y el número recibido son iguales, en caso de que sí regresamos true. Y si no, false.
Para hacer algunas pruebas podemos usar este código que dejo a continuación. Ya que arriba sólo está la función pero no la forma de uso:
/*
Determinar si un número es narcisista usando C#
parzibyte.me/blog
*/using System;
class Ejercicio{
public static void Main(){
// Probar con algunos números
int[] numeros = {1, 2, 3, 4, 153, 28, 11, 96, 407, 1634, 54748};
foreach(int numero in numeros){
Console.WriteLine("¿El número {0} es narcisista? {1}", numero, EsNarcisista(numero));
}
}
// Justo aquí está la función
public static Boolean EsNarcisista(int numero){
string numeroComoCadena = numero.ToString();
int longitudDelNumero = numeroComoCadena.Length;
double suma = 0;
// Recorrer toda la cadena carácter por carácter, y elevarlo a la potencia
// dada por la longitud del número
for(int indice = 0; indice < longitudDelNumero; indice++){
char caracterActual = numeroComoCadena[indice];
int cifraComoEntero = (int) Char.GetNumericValue(caracterActual);
double numeroElevado = Math.Pow(cifraComoEntero, longitudDelNumero);
suma = suma + numeroElevado;
}
if(suma == numero) return true;
else return false;
}
}
Vamos a compilarlo y veremos que su salida es la que se ve en la imagen:
En este post te quiero compartir un código de C++ para listar y cancelar trabajos…
Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…
Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…
Esta semana estuve recreando la API del plugin para impresoras térmicas en Android (HTTP a…
Hoy te enseñaré a extraer la cadena base64 de una clave PEM usando una función…
Encender un foco con un Bot de Telegram es posible usando una tarjeta como la…
Esta web usa cookies.
Ver comentarios