Calcular el Perímetro de un Polígono en C

CBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderás a calcular el perímetro de un polígono en C. El laboratorio cubre los siguientes pasos: leer las longitudes de los lados en un array, sumar todos los lados e imprimir el perímetro. Crearás un programa que permita a los usuarios introducir las longitudes de los lados de un polígono, almacenarlas en un array y, a continuación, calcular el perímetro sumando todas las longitudes de los lados.

El laboratorio proporciona una guía paso a paso, incluyendo código de ejemplo, para ayudarte a comprender e implementar el cálculo del perímetro de un polígono en C. Al final del laboratorio, tendrás un programa funcional que puede calcular el perímetro de un polígono con hasta 10 lados.

Lectura de las longitudes de los lados en un array

En este paso, aprenderás a leer las longitudes de los lados en un array para calcular el perímetro de un polígono en C. Crearemos un programa que permita a los usuarios introducir las longitudes de los lados de un polígono y almacenarlas en un array.

Primero, creemos un archivo fuente C en el directorio del proyecto:

cd ~/project
nano polygon_perimeter.c

Ahora, introduce el siguiente código:

#include <stdio.h>

#define MAX_SIDES 10

int main() {
    float sides[MAX_SIDES];
    int num_sides;

    // Solicita al usuario el número de lados
    printf("Introduce el número de lados del polígono (máximo %d): ", MAX_SIDES);
    scanf("%d", &num_sides);

    // Introduce las longitudes de los lados
    printf("Introduce las longitudes de los lados:\n");
    for (int i = 0; i < num_sides; i++) {
        printf("Longitud del lado %d: ", i + 1);
        scanf("%f", &sides[i]);
    }

    // Imprime las longitudes de los lados introducidas
    printf("\nLongitudes de los lados introducidas:\n");
    for (int i = 0; i < num_sides; i++) {
        printf("Lado %d: %.2f\n", i + 1, sides[i]);
    }

    return 0;
}

Compila el programa:

gcc -o polygon_perimeter polygon_perimeter.c

Ejecuta el programa:

./polygon_perimeter

Salida de ejemplo:

Introduce el número de lados del polígono (máximo 10): 4
Introduce las longitudes de los lados:
Longitud del lado 1: 5.5
Longitud del lado 2: 6.2
Longitud del lado 3: 4.3
Longitud del lado 4: 7.1

Longitudes de los lados introducidas:
Lado 1: 5.50
Lado 2: 6.20
Lado 3: 4.30
Lado 4: 7.10

Desglosemos las partes clave del código:

  • #define MAX_SIDES 10 establece un límite máximo para el número de lados.
  • float sides[MAX_SIDES] crea un array para almacenar las longitudes de los lados.
  • scanf() se utiliza para leer el número de lados y las longitudes de los lados individuales.
  • Un bucle for se utiliza para introducir y mostrar las longitudes de los lados.

Sumar todos los lados

En este paso, modificarás el programa anterior para calcular el perímetro sumando todas las longitudes de los lados del polígono.

Abre el archivo existente:

cd ~/project
nano polygon_perimeter.c

Actualiza el código con el cálculo del perímetro:

#include <stdio.h>

#define MAX_SIDES 10

int main() {
    float sides[MAX_SIDES];
    int num_sides;
    float perimeter = 0.0;

    // Solicita al usuario el número de lados
    printf("Introduce el número de lados del polígono (máximo %d): ", MAX_SIDES);
    scanf("%d", &num_sides);

    // Introduce las longitudes de los lados
    printf("Introduce las longitudes de los lados:\n");
    for (int i = 0; i < num_sides; i++) {
        printf("Longitud del lado %d: ", i + 1);
        scanf("%f", &sides[i]);
    }

    // Calcula el perímetro sumando todos los lados
    for (int i = 0; i < num_sides; i++) {
        perimeter += sides[i];
    }

    // Imprime las longitudes de los lados y el perímetro
    printf("\nLongitudes de los lados introducidas:\n");
    for (int i = 0; i < num_sides; i++) {
        printf("Lado %d: %.2f\n", i + 1, sides[i]);
    }

    // Muestra el perímetro calculado
    printf("\nPerímetro del polígono: %.2f\n", perimeter);

    return 0;
}

Compila el programa actualizado:

gcc -o polygon_perimeter polygon_perimeter.c

Ejecuta el programa:

./polygon_perimeter

Salida de ejemplo:

Introduce el número de lados del polígono (máximo 10): 4
Introduce las longitudes de los lados:
Longitud del lado 1: 5.5
Longitud del lado 2: 6.2
Longitud del lado 3: 4.3
Longitud del lado 4: 7.1

Longitudes de los lados introducidas:
Lado 1: 5.50
Lado 2: 6.20
Lado 3: 4.30
Lado 4: 7.10

Perímetro del polígono: 23.10

Cambios clave en este paso:

  • Se añadió una variable perimeter para almacenar la suma total de las longitudes de los lados.
  • Se introdujo un nuevo bucle for para calcular el perímetro sumando todos los lados.
  • Se añadió una instrucción de impresión para mostrar el perímetro calculado.

Imprimir el Perímetro

En este paso final, mejorarás el programa de cálculo del perímetro de un polígono añadiendo una salida formateada y manejo de errores para la validación de la entrada.

Abre el archivo existente:

cd ~/project
nano polygon_perimeter.c

Actualiza el código con una validación de entrada mejorada y una salida formateada:

#include <stdio.h>

#define MAX_SIDES 10
#define MIN_SIDES 3

int main() {
    float sides[MAX_SIDES];
    int num_sides;
    float perimeter = 0.0;

    // Solicita al usuario el número de lados con validación de entrada
    do {
        printf("Introduce el número de lados del polígono (entre %d y %d): ",
               MIN_SIDES, MAX_SIDES);
        scanf("%d", &num_sides);

        if (num_sides < MIN_SIDES || num_sides > MAX_SIDES) {
            printf("Número de lados inválido. Inténtalo de nuevo.\n");
        }
    } while (num_sides < MIN_SIDES || num_sides > MAX_SIDES);

    // Introduce las longitudes de los lados con validación
    printf("Introduce las longitudes de los lados:\n");
    for (int i = 0; i < num_sides; i++) {
        float side_length;
        do {
            printf("Longitud del lado %d (debe ser positiva): ", i + 1);
            scanf("%f", &side_length);

            if (side_length <= 0) {
                printf("Longitud de lado inválida. Introduce un valor positivo.\n");
            } else {
                sides[i] = side_length;
                break;
            }
        } while (1);
    }

    // Calcula el perímetro sumando todos los lados
    for (int i = 0; i < num_sides; i++) {
        perimeter += sides[i];
    }

    // Salida formateada de los resultados
    printf("\n--- Cálculo del Perímetro del Polígono ---\n");
    printf("Número de Lados: %d\n", num_sides);

    printf("\nLongitudes de los Lados:\n");
    for (int i = 0; i < num_sides; i++) {
        printf("Lado %d: %.2f\n", i + 1, sides[i]);
    }

    printf("\nCálculo del Perímetro:\n");
    for (int i = 0; i < num_sides; i++) {
        printf("%s%.2f", (i > 0) ? " + " : "", sides[i]);
    }
    printf(" = %.2f\n", perimeter);

    printf("\nPerímetro Final: %.2f\n", perimeter);

    return 0;
}

Compila el programa actualizado:

gcc -o polygon_perimeter polygon_perimeter.c

Ejecuta el programa:

./polygon_perimeter

Salida de ejemplo:

Introduce el número de lados del polígono (entre 3 y 10): 4
Introduce las longitudes de los lados:
Longitud del lado 1 (debe ser positiva): 5.5
Longitud del lado 2 (debe ser positiva): 6.2
Longitud del lado 3 (debe ser positiva): 4.3
Longitud del lado 4 (debe ser positiva): 7.1

--- Cálculo del Perímetro del Polígono ---
Número de Lados: 4

Longitudes de los Lados:
Lado 1: 5.50
Lado 2: 6.20
Lado 3: 4.30
Lado 4: 7.10

Cálculo del Perímetro:
5.50 + 6.20 + 4.30 + 7.10 = 23.10

Perímetro Final: 23.10

Mejoras clave en este paso:

  • Se añadió validación de entrada para el número de lados y las longitudes de los lados.
  • Se creó una salida más detallada y formateada.
  • Se incluyó una visualización paso a paso del cálculo del perímetro.
  • Se aseguraron las restricciones mínimas y máximas de los lados.

Resumen

En este laboratorio, aprenderás a leer las longitudes de los lados de un polígono en un array, sumar todos los lados para calcular el perímetro e imprimir el resultado. Primero, solicitarás al usuario que introduzca el número de lados y la longitud de cada lado, almacenando las longitudes de los lados en un array. Luego, sumarás todas las longitudes de los lados para calcular el perímetro del polígono. Finalmente, imprimirás el perímetro calculado.

Los pasos clave incluyen el uso de scanf() para leer la entrada del usuario, almacenar las longitudes de los lados en un array, iterar a través del array para sumar las longitudes de los lados e imprimir el resultado final.