viernes, 15 de mayo de 2026

Pedir un número y determinar si un número es perfecto en Windows Forms C Sharp

Código del ejercicio:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Ejercicio
{
    public partial class frmEjercicio : Form
    {
        public frmEjercicio()
        {
            InitializeComponent();
        }

        private void btnCalcular_Click(object sender, EventArgs e)
        {
            long ac = 0, n;
            n = Convert.ToInt64(txtNum.Text);
            long i = n - 1;
            while (i > 0)
            {
                long r = n % i;
                if(r == 0)
                {
                    ac += i;
                }
                i--;
            }
            if (n == ac)
            {
                txtResultado.Text = "El número es perfecto.";
            }
            else
            {
                txtResultado.Text = "El número no es perfecto.";
            }
        }

        private void btnLimpiar_Click(object sender, EventArgs e)
        {
            txtNum.Clear();
            txtResultado.Clear();
            txtNum.Focus();
        }
    }
}

Definición de los códigos del ejercicio:

long --> dato entero de 64 bits.
Convert.ToInt64() --> convierte un valor especificado en un entero de 64 bits con signo.
while --> el ciclo while recorre un bloque de código siempre que una condición específica sea verdadera.
if --> use if para especificar un bloque de código que se ejecutará, si una condición especificada es verdadera.
else --> use else para especificar un bloque de código a ejecutar, si la misma condición es falsa.
> --> el operador mayor que ( > ) devuelve true si el operando izquierdo es mayor que el operando derecho.
% --> el operador de modulo ( % ) devuelve el resto de la división.
== --> el operador de igualdad ( == ) regresa true si sus operandos son iguales, false en caso contrario.
+= --> el operador de asignación de suma ( += ) suma el valor del operando derecho a una variable y asigna el resultado a la variable.
-- --> el operador de decremento (--) disminuye (o resta de a uno) su operando y retorna un valor.
Clear() --> borra todo el contenido del cuadro de texto.
Focus() --> establece el foco de entrada.

Explicación del Código:

¿Qué hace el programa?

Este programa solicita un número al usuario y verifica si es un número perfecto.

Un número perfecto es aquel cuya suma de sus divisores, excepto el mismo número, es igual al número ingresado.

Ejemplo:
6 = 1 + 2 + 3

Librerías del Programa

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

Estas librerías permiten utilizar funciones básicas de C# y herramientas de Windows Forms.

Namespace

namespace Ejercicio

El namespace sirve para organizar el código del proyecto.

Clase del Formulario

public partial class frmEjercicio : Form

Aquí se crea el formulario principal del programa.

Constructor

public frmEjercicio()
{
    InitializeComponent();
}

El constructor inicializa todos los componentes del formulario.

Evento del Botón Calcular

private void btnCalcular_Click(object sender, EventArgs e)

Este método se ejecuta cuando el usuario hace clic en el botón Calcular.

Declaración de Variables

long ac = 0, n;

ac almacena la suma de divisores.
n guarda el número ingresado.

Capturar el Número

n = Convert.ToInt64(txtNum.Text);

Convierte el texto ingresado por el usuario en un número entero.

Inicializar Variable i

long i = n - 1;

La variable i comienza desde un número menor que n para buscar divisores.

Ciclo While

while (i > 0)

El ciclo se repite mientras i sea mayor que 0.

Residuo de la División

long r = n % i;

El operador % obtiene el residuo de la división.

Si el residuo es 0, entonces i es divisor de n.

Verificar Divisor

if(r == 0)

Comprueba si el número tiene división exacta.

Acumular Divisores

ac += i;

Suma los divisores encontrados.

Disminuir i

i--;

Reduce el valor de i en 1 para continuar revisando divisores.

Verificar si es Perfecto

if (n == ac)

Si la suma de divisores es igual al número, entonces es perfecto.

Mostrar Resultado

txtResultado.Text = "El número es perfecto.";

Muestra el mensaje indicando que el número es perfecto.

txtResultado.Text = "El número no es perfecto.";

Muestra el mensaje indicando que el número no es perfecto.

Botón Limpiar

private void btnLimpiar_Click(object sender, EventArgs e)

Este método limpia las cajas de texto.

Limpiar TextBox

txtNum.Clear();
txtResultado.Clear();

Borra el contenido de las cajas de texto.

Colocar el Cursor

txtNum.Focus();

Coloca nuevamente el cursor en la caja donde se escribe el número.

No hay comentarios.:

Publicar un comentario

Generar la siguiente serie 1,1,1,2,2,2,3,3,3,4,4,4,... en Windows Forms C Sharp

Código del ejercicio: using System ; using System . Collections . Generic ; using System . ComponentModel ; using System . ...

Copyright ©2025 Ejercicios de programación. Todos los derechos reservados. ❤️