Determinar cuadrados perfectos en C

CCBeginner
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 es un cuadrado perfecto utilizando el lenguaje de programación C. Un cuadrado perfecto es un número que se puede expresar como el producto de un entero multiplicado por sí mismo. Por ejemplo, 16 es un cuadrado perfecto porque es igual a 4 × 4, y 25 es un cuadrado perfecto porque es igual a 5 × 5.

Al final de este laboratorio, entenderás el concepto de cuadrados perfectos y serás capaz de escribir un programa en C que verifique si un número proporcionado por el usuario es un cuadrado perfecto o no.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/BasicsGroup(["Basics"]) c(("C")) -.-> c/ControlFlowGroup(["Control Flow"]) c(("C")) -.-> c/FileHandlingGroup(["File Handling"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c/BasicsGroup -.-> c/variables("Variables") c/ControlFlowGroup -.-> c/if_else("If...Else") c/ControlFlowGroup -.-> c/for_loop("For Loop") c/FileHandlingGroup -.-> c/create_files("Create Files") c/UserInteractionGroup -.-> c/user_input("User Input") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/variables -.-> lab-123221{{"Determinar cuadrados perfectos en C"}} c/if_else -.-> lab-123221{{"Determinar cuadrados perfectos en C"}} c/for_loop -.-> lab-123221{{"Determinar cuadrados perfectos en C"}} c/create_files -.-> lab-123221{{"Determinar cuadrados perfectos en C"}} c/user_input -.-> lab-123221{{"Determinar cuadrados perfectos en C"}} c/output -.-> lab-123221{{"Determinar cuadrados perfectos en C"}} end

Comprendiendo los cuadrados perfectos

Antes de comenzar a codificar, entendamos qué es un cuadrado perfecto y cómo podemos determinar si un número es un cuadrado perfecto.

Un cuadrado perfecto es un número que es el cuadrado de un entero. En otras palabras, es un número que se puede escribir como n², donde n es un entero.

Ejemplos de cuadrados perfectos:

  • 1 = 1² (1 × 1)
  • 4 = 2² (2 × 2)
  • 9 = 3² (3 × 3)
  • 16 = 4² (4 × 4)
  • 25 = 5² (5 × 5)

Para determinar si un número es un cuadrado perfecto, podemos verificar si existe un entero cuyo cuadrado sea igual al número dado.

Creemos un directorio para nuestro proyecto y naveguemos hacia él:

mkdir -p ~/project/perfect-square
cd ~/project/perfect-square
Crear un directorio

Ahora, creemos un nuevo archivo C para nuestro programa:

  1. En el WebIDE, navega hasta el panel del explorador de archivos en el lado izquierdo.
  2. Haz clic derecho en la carpeta perfect-square y selecciona "Nuevo archivo".
  3. Nombrar el archivo perfect_square.c y presionar Enter.

Creando la estructura básica del programa

Ahora creemos la estructura básica de nuestro programa en C. Necesitamos incluir los archivos de encabezado necesarios y configurar la función principal.

Abre el archivo perfect_square.c en el WebIDE haciendo clic en él en el panel del explorador de archivos. Luego, agrega el siguiente código:

#include <stdio.h>

int main() {
    int number;

    // Solicitar entrada al usuario
    printf("Enter a number to check if it's a perfect square: ");
    scanf("%d", &number);

    // Agregaremos código para verificar si es un cuadrado perfecto en el siguiente paso

    return 0;
}

Comprendamos el código:

  1. #include <stdio.h> - Esto incluye la biblioteca estándar de entrada-salida, que proporciona funciones como printf y scanf.
  2. int main() - Esta es la función principal donde comienza la ejecución del programa.
  3. int number; - Declaramos una variable entera para almacenar la entrada del usuario.
  4. printf("Enter a number..."); - Esto muestra un mensaje de solicitud al usuario.
  5. scanf("%d", &number); - Esto lee una entrada entera del usuario y la almacena en la variable number. El operador & se utiliza para obtener la dirección de memoria de la variable donde se almacenará la entrada.

Guarda el archivo presionando Ctrl+S o haciendo clic en Archivo > Guardar.

Implementando el algoritmo de comprobación de cuadrados perfectos

Ahora implementemos la lógica para comprobar si el número ingresado por el usuario es un cuadrado perfecto. Hay varias formas de comprobar si un número es un cuadrado perfecto. Utilizaremos un enfoque simple en el que comprobamos si algún entero desde 1 hasta el número tiene un cuadrado igual al número.

Actualiza tu archivo perfect_square.c con el siguiente código:

#include <stdio.h>

int main() {
    int number;
    int isPerfectSquare = 0;  // Bandera para indicar si el número es un cuadrado perfecto

    // Solicitar entrada al usuario
    printf("Enter a number to check if it's a perfect square: ");
    scanf("%d", &number);

    // Comprobar si el número es negativo
    if (number < 0) {
        printf("%d is negative, and negative numbers cannot be perfect squares.\n", number);
        return 0;
    }

    // Comprobar si el número es un cuadrado perfecto
    for (int i = 0; i <= number; i++) {
        if (i * i == number) {
            isPerfectSquare = 1;
            printf("%d is a perfect square. It is %d squared.\n", number, i);
            break;  // Salir del bucle una vez que encontramos la respuesta
        }

        // Optimización: Si i*i supera el número, no es necesario seguir comprobando
        if (i * i > number) {
            break;
        }
    }

    // Si no es un cuadrado perfecto, informar al usuario
    if (isPerfectSquare == 0) {
        printf("%d is not a perfect square.\n", number);
    }

    return 0;
}

Comprendamos el nuevo código:

  1. Agregamos una bandera isPerfectSquare para rastrear si encontramos que el número es un cuadrado perfecto.
  2. Comprobamos si el número es negativo, ya que los números negativos no pueden ser cuadrados perfectos.
  3. Utilizamos un bucle for para iterar desde 0 hasta el número.
  4. Dentro del bucle, comprobamos si i * i es igual al número. Si lo es, establecemos nuestra bandera, imprimimos un mensaje y salimos del bucle.
  5. Agregamos una optimización: si i * i supera el número, podemos detener la comprobación porque todos los valores posteriores también superarán el número.
  6. Finalmente, si la bandera sigue siendo 0, informamos al usuario que el número no es un cuadrado perfecto.

Guarda el archivo (Ctrl+S o Archivo > Guardar).

Compilando y probando el programa

Ahora que hemos completado el código para comprobar cuadrados perfectos, compilémoslo y probémoslo. Utilizaremos el compilador GCC para compilar nuestro programa en C.

Navega al directorio que contiene nuestro código (si no estás ya allí):

cd ~/project/perfect-square

Compila el programa:

gcc perfect_square.c -o perfect_square

Este comando compila perfect_square.c y crea un archivo ejecutable llamado perfect_square. Si la compilación es exitosa, no verás ninguna salida.

Ahora ejecutemos el programa:

./perfect_square
Ejecutar el programa

El programa te pedirá que ingreses un número. Probemos con diferentes entradas:

  1. Ingresa un número que sea un cuadrado perfecto, como 16.
    La salida debe ser: 16 is a perfect square. It is 4 squared.

  2. Ingresa un número que no sea un cuadrado perfecto, como 10.
    La salida debe ser: 10 is not a perfect square.

  3. Ingresa un número negativo, como -4.
    La salida debe ser: -4 is negative, and negative numbers cannot be perfect squares.

Puedes ejecutar el programa varias veces para probar con diferentes entradas.

Probemos también un caso límite, el número 0:

./perfect_square

Ingresa 0 cuando se te solicite.
La salida debe ser: 0 is a perfect square. It is 0 squared.

¡Felicidades! Has creado con éxito un programa en C que comprueba si un número es un cuadrado perfecto.

Resumen

En este laboratorio (lab), aprendiste cómo crear un programa en C que determina si un número es un cuadrado perfecto. Aquí están los conceptos clave cubiertos:

  1. Los cuadrados perfectos son números que se pueden expresar como el cuadrado de un entero.
  2. Conceptos básicos de programación en C, incluyendo variables, declaraciones condicionales y bucles.
  3. Obtener entrada del usuario utilizando scanf y mostrar salida utilizando printf.
  4. Utilizar un bucle para comprobar si un número es un cuadrado perfecto probando cada valor posible.
  5. Optimizar la solución saliendo del bucle cuando sea necesario.
  6. Manejar casos límite como números negativos y cero.

Este laboratorio demostró cómo se pueden implementar conceptos matemáticos en la programación. Puedes extender este programa agregando más características, como encontrar el siguiente cuadrado perfecto después de un número dado o comprobar si un número es un cubo (n³) en lugar de un cuadrado.