Determinar cuadrados perfectos

C++C++Beginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderás cómo determinar si un número dado es un cuadrado perfecto en C++. Un cuadrado perfecto es un número que se puede expresar como el producto de un entero por sí mismo. Por ejemplo, 1, 4, 9, 16 y 25 son cuadrados perfectos porque se pueden expresar como 1×1, 2×2, 3×3, 4×4 y 5×5 respectivamente.

Crearemos un programa en C++ que utiliza la función sqrt() de la biblioteca estándar para calcular la raíz cuadrada de un número y determinar si es un cuadrado perfecto. Este laboratorio te introducirá a conceptos básicos de programación en C++, incluyendo funciones, declaraciones condicionales y operaciones matemáticas.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("C++")) -.-> cpp/StandardLibraryGroup(["Standard Library"]) cpp(("C++")) -.-> cpp/BasicsGroup(["Basics"]) cpp(("C++")) -.-> cpp/ControlFlowGroup(["Control Flow"]) cpp(("C++")) -.-> cpp/IOandFileHandlingGroup(["I/O and File Handling"]) cpp/BasicsGroup -.-> cpp/data_types("Data Types") cpp/BasicsGroup -.-> cpp/operators("Operators") cpp/ControlFlowGroup -.-> cpp/conditions("Conditions") cpp/IOandFileHandlingGroup -.-> cpp/output("Output") cpp/IOandFileHandlingGroup -.-> cpp/user_input("User Input") cpp/IOandFileHandlingGroup -.-> cpp/files("Files") cpp/StandardLibraryGroup -.-> cpp/math("Math") subgraph Lab Skills cpp/data_types -.-> lab-96130{{"Determinar cuadrados perfectos"}} cpp/operators -.-> lab-96130{{"Determinar cuadrados perfectos"}} cpp/conditions -.-> lab-96130{{"Determinar cuadrados perfectos"}} cpp/output -.-> lab-96130{{"Determinar cuadrados perfectos"}} cpp/user_input -.-> lab-96130{{"Determinar cuadrados perfectos"}} cpp/files -.-> lab-96130{{"Determinar cuadrados perfectos"}} cpp/math -.-> lab-96130{{"Determinar cuadrados perfectos"}} end

Crear un nuevo archivo de C++ e incluir las bibliotecas necesarias

En este paso, crearemos un nuevo archivo de C++ e incluiremos las bibliotecas necesarias para nuestro programa.

Primero, creemos un nuevo archivo llamado main.cpp en el directorio del proyecto:

  1. En el WebIDE, haz clic en el icono del Explorador en la barra lateral izquierda.
  2. Haz clic derecho en la carpeta project y selecciona "Nuevo archivo".
  3. Nombrar el archivo main.cpp y presionar Enter.

Ahora, agreguemos las bibliotecas necesarias a nuestro programa. Necesitamos dos bibliotecas principales:

  • iostream: Esta biblioteca proporciona funcionalidad para operaciones de entrada y salida.
  • cmath: Esta biblioteca contiene funciones matemáticas, incluyendo la función sqrt() que utilizaremos.

Agrega el siguiente código a tu archivo main.cpp:

#include <iostream>
#include <cmath>

using namespace std;

int main() {
    cout << "\nWelcome to the Perfect Square Checker Program\n\n";

    // We will add more code here in the next steps

    return 0;
}

Este código:

  • Incluye las bibliotecas requeridas.
  • Utiliza el namespace std para evitar tener que escribir std:: antes de las funciones de la biblioteca estándar.
  • Crea una función main() básica que muestra un mensaje de bienvenida.
  • Devuelve 0 para indicar una ejecución exitosa del programa.

Guarda tu archivo presionando Ctrl+S o seleccionando Archivo > Guardar desde el menú.

Implementar la función de comprobación de cuadrados perfectos

Ahora, crearemos una función que determine si un número es un cuadrado perfecto. Un cuadrado perfecto tiene una raíz cuadrada entera. Por ejemplo, 16 es un cuadrado perfecto porque su raíz cuadrada es exactamente 4.

Agrega la siguiente función encima de la función main() en tu archivo main.cpp:

bool isPerfectSquare(int number) {
    // Calculate the square root of the number
    double squareRoot = sqrt(number);

    // Convert the square root to an integer
    int intSquareRoot = static_cast<int>(squareRoot);

    // A number is a perfect square if squaring its integer square root gives the original number
    return (intSquareRoot * intSquareRoot == number);
}

Entendamos cómo funciona esta función:

  1. La función toma un parámetro entero number y devuelve un valor booleano (verdadero o falso).
  2. Utilizamos la función sqrt() de la biblioteca cmath para calcular la raíz cuadrada del número de entrada.
  3. Convertimos la raíz cuadrada a un entero utilizando static_cast<int>(), lo que elimina cualquier parte decimal.
  4. Si el número es un cuadrado perfecto, entonces multiplicar la raíz cuadrada entera por sí misma dará el número original.
  5. La función devuelve true si el número es un cuadrado perfecto y false en caso contrario.

Por ejemplo:

  • Para el número 16:
    • sqrt(16) = 4.0
    • Convertir 4.0 a un entero da 4
    • 4 × 4 = 16, que es igual al número original, por lo que 16 es un cuadrado perfecto.
  • Para el número 10:
    • sqrt(10) ≈ 3.16227766
    • Convertir 3.16227766 a un entero da 3
    • 3 × 3 = 9, que no es igual al número original, por lo que 10 no es un cuadrado perfecto.

Tu código completo hasta ahora debería verse así:

#include <iostream>
#include <cmath>

using namespace std;

bool isPerfectSquare(int number) {
    // Calculate the square root of the number
    double squareRoot = sqrt(number);

    // Convert the square root to an integer
    int intSquareRoot = static_cast<int>(squareRoot);

    // A number is a perfect square if squaring its integer square root gives the original number
    return (intSquareRoot * intSquareRoot == number);
}

int main() {
    cout << "\nWelcome to the Perfect Square Checker Program\n\n";

    // We will add more code here in the next step

    return 0;
}

Guarda tu archivo antes de pasar al siguiente paso.

Completar la función principal con entrada y salida de usuario

Ahora, mejoremos la función main() para:

  1. Solicitar al usuario que ingrese un número.
  2. Obtener la entrada del usuario.
  3. Utilizar nuestra función isPerfectSquare() para verificar si el número es un cuadrado perfecto.
  4. Mostrar un mensaje adecuado según el resultado.

Actualiza tu función main() con el siguiente código:

int main() {
    cout << "\nWelcome to the Perfect Square Checker Program\n\n";

    int userNumber;

    // Prompt the user to enter a number
    cout << "Please enter a positive integer: ";
    cin >> userNumber;

    // Check if the entered number is a perfect square
    if (isPerfectSquare(userNumber)) {
        int squareRoot = static_cast<int>(sqrt(userNumber));
        cout << "\nThe number " << userNumber << " is a perfect square!" << endl;
        cout << "It is equal to " << squareRoot << " × " << squareRoot << endl;
    } else {
        cout << "\nThe number " << userNumber << " is not a perfect square." << endl;
    }

    cout << "\nThank you for using the Perfect Square Checker Program!\n" << endl;

    return 0;
}

Entendamos lo que hace este código:

  1. Declaramos una variable entera userNumber para almacenar la entrada del usuario.
  2. Solicitamos al usuario que ingrese un entero positivo utilizando cout.
  3. Leemos la entrada del usuario utilizando cin y la almacenamos en userNumber.
  4. Llamamos a nuestra función isPerfectSquare() con userNumber como argumento.
  5. Si el número es un cuadrado perfecto:
    • Calculamos su raíz cuadrada y la almacenamos en squareRoot.
    • Mostramos un mensaje que indica que el número es un cuadrado perfecto.
    • Mostramos qué dos enteros idénticos se multiplican para dar el número original.
  6. Si el número no es un cuadrado perfecto:
    • Mostramos un mensaje que indica que el número no es un cuadrado perfecto.
  7. Finalmente, mostramos un mensaje de agradecimiento y salimos de la función main().

Tu programa completo ahora debería verse así:

#include <iostream>
#include <cmath>

using namespace std;

bool isPerfectSquare(int number) {
    // Calculate the square root of the number
    double squareRoot = sqrt(number);

    // Convert the square root to an integer
    int intSquareRoot = static_cast<int>(squareRoot);

    // A number is a perfect square if squaring its integer square root gives the original number
    return (intSquareRoot * intSquareRoot == number);
}

int main() {
    cout << "\nWelcome to the Perfect Square Checker Program\n\n";

    int userNumber;

    // Prompt the user to enter a number
    cout << "Please enter a positive integer: ";
    cin >> userNumber;

    // Check if the entered number is a perfect square
    if (isPerfectSquare(userNumber)) {
        int squareRoot = static_cast<int>(sqrt(userNumber));
        cout << "\nThe number " << userNumber << " is a perfect square!" << endl;
        cout << "It is equal to " << squareRoot << " × " << squareRoot << endl;
    } else {
        cout << "\nThe number " << userNumber << " is not a perfect square." << endl;
    }

    cout << "\nThank you for using the Perfect Square Checker Program!\n" << endl;

    return 0;
}

Guarda tu archivo antes de pasar al siguiente paso.

Compilar y probar el programa

Ahora que hemos completado nuestro programa en C++, es hora de compilarlo y ejecutarlo. Compilar convierte nuestro código legible por humanos en un programa ejecutable por la máquina.

Compilar el programa

Abre una terminal en el WebIDE haciendo clic en "Terminal" en el menú y seleccionando "Nueva Terminal".

En la terminal, navega hasta el directorio del proyecto:

cd ~/project

Compila el programa utilizando el compilador g++:

g++ main.cpp -o perfect_square_checker

Este comando le dice al compilador que:

  • Tome nuestro archivo fuente main.cpp
  • Lo compile en un ejecutable llamado perfect_square_checker

Si la compilación es exitosa, no verás ninguna salida. Si hay errores, lee los mensajes de error, corrige los problemas en tu código y vuelve a intentar compilar.

Ejecutar el programa

Después de compilar el programa exitosamente, ejecútalo utilizando:

./perfect_square_checker

El programa se iniciará y te pedirá que ingreses un entero positivo.

Probar con diferentes entradas

Probemos nuestro programa con diferentes entradas para verificar que funcione correctamente:

Caso de prueba 1: Un cuadrado perfecto

Ingresa 16 cuando se te solicite. Deberías ver una salida similar a:

Please enter a positive integer: 16

The number 16 is a perfect square!
It is equal to 4 × 4

Thank you for using the Perfect Square Checker Program!

Caso de prueba 2: No es un cuadrado perfecto

Ejecuta el programa nuevamente e ingresa 10 cuando se te solicite. Deberías ver una salida similar a:

Please enter a positive integer: 10

The number 10 is not a perfect square.

Thank you for using the Perfect Square Checker Program!

Caso de prueba 3: Otro cuadrado perfecto

Ejecuta el programa nuevamente e ingresa 25 cuando se te solicite. Deberías ver una salida similar a:

Please enter a positive integer: 25

The number 25 is a perfect square!
It is equal to 5 × 5

Thank you for using the Square Square Checker Program!

Al probar con diferentes entradas, puedes verificar que tu programa identifique correctamente los cuadrados perfectos y los no cuadrados perfectos.

¡Felicidades! Has creado exitosamente un programa en C++ que determina si un número es un cuadrado perfecto.

Resumen

En este laboratorio, has creado exitosamente un programa en C++ que determina si un número es un cuadrado perfecto. Repasemos lo que has logrado:

  1. Aprendiste cómo incluir las bibliotecas necesarias en un programa de C++:

    • iostream para operaciones de entrada y salida
    • cmath para funciones matemáticas como sqrt()
  2. Implementaste la función isPerfectSquare() que utiliza un enfoque matemático para determinar si un número es un cuadrado perfecto:

    • Calcula la raíz cuadrada del número
    • Verifica si elevar al cuadrado la parte entera de la raíz cuadrada es igual al número original
  3. Creaste una interfaz amigable para el usuario en la función main() que:

    • Solicita al usuario que ingrese un número
    • Utiliza la función isPerfectSquare() para verificar si el número es un cuadrado perfecto
    • Muestra un mensaje adecuado según el resultado
  4. Compilaste y probaste tu programa con diferentes entradas para verificar su funcionalidad.

A través de este laboratorio, adquiriste experiencia práctica con varios conceptos importantes de programación en C++:

  • Crear y llamar funciones
  • Utilizar declaraciones condicionales (if-else)
  • Trabajar con entrada y salida de usuario
  • Realizar conversiones de tipo
  • Utilizar funciones matemáticas de la biblioteca estándar
  • Compilar y ejecutar un programa en C++

Puedes mejorar aún más este programa agregando características como:

  • Validación de entrada para garantizar que el usuario ingrese un entero positivo
  • La capacidad de verificar múltiples números sin reiniciar el programa
  • Encontrar el cuadrado perfecto más cercano a un número que no es un cuadrado perfecto

Al continuar practicando y construir sobre estos conceptos fundamentales, desarrollarás habilidades más sólidas de programación en C++ que podrás aplicar a problemas más complejos.