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 mi experiencia tramitando un acta de nacimiento de México…
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
Esta web usa cookies.
Ver comentarios