jueves, 4 de junio de 2026

Pedir un número y determinar si un número es perfecto en C++

Código del ejercicio:

#include <iostream>
#include <clocale>

using namespace std;

int main()
{
    setlocale(LC_CTYPE, "Spanish");
    int ac = 0, n, i, r;
    cout<<"Ingrese un número: "; cin>>n;
    i = n - 1;
    while(i > 0){
        r = n % i;
        if(r == 0){
            ac += i;
        }
        i--;
    }
    if(n == ac){
        cout<<"El número es perfecto.";
    }else{
        cout<<"El número no es perfecto.";
    }
    return 0;
}

Definición de los códigos del ejercicio:

#include <iostream> --> significa flujo de entrada-salida estándar. Este archivo de encabezado contiene definiciones de objetos como cin, cout, cerr, etc.
#include <clocale> --> especificador de configuración regional.
using namespace std; --> un espacio de nombres es una colección de nombres o identificadores relacionados (funciones, clases, variables) que ayudan a separar estos identificadores de identificadores similares en otros espacios de nombres o en el espacio de nombres global. Los identificadores de la biblioteca estándar de C++ se definen en un espacio de nombres llamado std.
int --> dato entero de 32 bits.
main() --> la función main() es el punto de entrada de cualquier programa C++. Es el punto en el que se inicia la ejecución del programa. Cuando se ejecuta un programa C++, el control de ejecución va directamente a la función main(). Cada programa C++ tiene una función main().
return 0; --> devolver 0 en la función principal significa que el programa se ejecutó correctamente.
setlocale(); --> sirve para configurar nuestro programa acorde a los parámetros locales de la computadora donde se ejecuta el programa, uno de estos parámetros es el idioma.
LC_CTYPE --> selecciona la categoría de clasificación de caracteres del entorno local.
setlocale(LC_CTYPE, "Spanish"); --> dentro de las comillas del segundo parámetro colocaremos la palabra "Spanish" para que así se utilicen los parámetros hispanos por defecto.
cout<<""; --> se utiliza para mostrar la salida al dispositivo de salida estándar, es decir, monitor.
cin>> --> se utiliza para aceptar la entrada del dispositivo de entrada estándar, es decir, el teclado.
while --> el ciclo while recorre un bloque de código siempre que una condición específica sea verdadera.
> --> 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.
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 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.

Explicación del Código:

¿Qué hace el programa?

El programa pide 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 original.

Ejemplo:

Número 6:

Divisores → 1, 2 y 3

1 + 2 + 3 = 6

Entonces, el 6 es un número perfecto.

Código en C++

#include <iostream>
#include <clocale>

using namespace std;

int main()
{
    setlocale(LC_CTYPE, "Spanish");
    int ac = 0, n, i, r;

    cout<<"Ingrese un número: ";
    cin>>n;

    i = n - 1;

    while(i > 0){
        r = n % i;

        if(r == 0){
            ac += i;
        }

        i--;
    }

    if(n == ac){
        cout<<"El número es perfecto.";
    }else{
        cout<<"El número no es perfecto.";
    }

    return 0;
}

Explicación simple del código

  • #include <iostream>
    Permite usar las funciones de entrada y salida como cout y cin.
  • #include <clocale>
    Permite configurar el idioma español.
  • using namespace std;
    Permite usar cout y cin sin escribir std::.
  • int ac = 0, n, i, r;
    Declaración de variables:

    ac = acumulador de divisores.
    n = número ingresado.
    i = contador.
    r = residuo de la división.
  • cout<<"Ingrese un número:";
    Muestra un mensaje en pantalla.
  • cin>>n;
    Guarda el número ingresado por el usuario.
  • i = n - 1;
    El contador inicia un número antes de n.
  • while(i > 0)
    Repite el proceso mientras i sea mayor que 0.
  • r = n % i;
    Calcula el residuo de dividir n entre i.
  • if(r == 0)
    Verifica si i es divisor de n.
  • ac += i;
    Suma el divisor encontrado.
  • i--;
    Reduce el contador en 1.
  • if(n == ac)
    Compara si la suma de divisores es igual al número.
  • cout<<"El número es perfecto.";
    Muestra el mensaje si el número es perfecto.
  • else
    Se ejecuta si el número no es perfecto.
  • return 0;
    Finaliza el programa correctamente.

No hay comentarios.:

Publicar un comentario

Convertir millas a pies en HTML y JavaScript

Código del ejercicio: <! DOCTYPE html > < html lang = "es" > < head >     < meta charset = ...

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