Calcular o Perímetro de um Polígono em C

CBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá a calcular o perímetro de um polígono em C. O laboratório cobre os seguintes passos: ler os comprimentos dos lados para um array, somar todos os lados e imprimir o perímetro. Você criará um programa que permite aos utilizadores introduzir os comprimentos dos lados de um polígono, armazená-los num array e, em seguida, calcular o perímetro somando todos os comprimentos dos lados.

O laboratório fornece um guia passo a passo, incluindo código de exemplo, para o ajudar a compreender e implementar o cálculo do perímetro de um polígono em C. No final do laboratório, terá um programa funcional que pode calcular o perímetro de um polígono com até 10 lados.

Ler Comprimentos dos Lados para um Array

Neste passo, aprenderá como ler os comprimentos dos lados para um array para calcular o perímetro de um polígono em C. Criaremos um programa que permite aos utilizadores introduzir os comprimentos dos lados de um polígono e armazená-los num array.

Primeiro, vamos criar um ficheiro de origem C no diretório do projeto:

cd ~/project
nano polygon_perimeter.c

Agora, introduza o seguinte código:

#include <stdio.h>

#define MAX_SIDES 10

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

    // Solicitar ao utilizador o número de lados
    printf("Introduza o número de lados do polígono (máx %d): ", MAX_SIDES);
    scanf("%d", &num_sides);

    // Introduzir os comprimentos dos lados
    printf("Introduza os comprimentos dos lados:\n");
    for (int i = 0; i < num_sides; i++) {
        printf("Comprimento do lado %d: ", i + 1);
        scanf("%f", &sides[i]);
    }

    // Imprimir os comprimentos dos lados introduzidos
    printf("\nComprimentos dos lados introduzidos:\n");
    for (int i = 0; i < num_sides; i++) {
        printf("Lado %d: %.2f\n", i + 1, sides[i]);
    }

    return 0;
}

Compile o programa:

gcc -o polygon_perimeter polygon_perimeter.c

Execute o programa:

./polygon_perimeter

Exemplo de saída:

Introduza o número de lados do polígono (máx 10): 4
Introduza os comprimentos dos lados:
Comprimento do lado 1: 5.5
Comprimento do lado 2: 6.2
Comprimento do lado 3: 4.3
Comprimento do lado 4: 7.1

Comprimentos dos lados introduzidos:
Lado 1: 5.50
Lado 2: 6.20
Lado 3: 4.30
Lado 4: 7.10

Vamos decompor as partes principais do código:

  • #define MAX_SIDES 10 define um limite máximo para o número de lados
  • float sides[MAX_SIDES] cria um array para armazenar os comprimentos dos lados
  • scanf() é usado para ler o número de lados e os comprimentos individuais dos lados
  • Um ciclo for é usado para introduzir e depois exibir os comprimentos dos lados

Somar Todos os Lados

Neste passo, irá modificar o programa anterior para calcular o perímetro somando todos os comprimentos dos lados do polígono.

Abra o ficheiro existente:

cd ~/project
nano polygon_perimeter.c

Atualize o código com o cálculo do perímetro:

#include <stdio.h>

#define MAX_SIDES 10

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

    // Solicitar ao utilizador o número de lados
    printf("Introduza o número de lados do polígono (máx %d): ", MAX_SIDES);
    scanf("%d", &num_sides);

    // Introduzir os comprimentos dos lados
    printf("Introduza os comprimentos dos lados:\n");
    for (int i = 0; i < num_sides; i++) {
        printf("Comprimento do lado %d: ", i + 1);
        scanf("%f", &sides[i]);
    }

    // Calcular o perímetro somando todos os lados
    for (int i = 0; i < num_sides; i++) {
        perimeter += sides[i];
    }

    // Imprimir os comprimentos dos lados e o perímetro
    printf("\nComprimentos dos lados introduzidos:\n");
    for (int i = 0; i < num_sides; i++) {
        printf("Lado %d: %.2f\n", i + 1, sides[i]);
    }

    // Mostrar o perímetro calculado
    printf("\nPerímetro do polígono: %.2f\n", perimeter);

    return 0;
}

Compile o programa atualizado:

gcc -o polygon_perimeter polygon_perimeter.c

Execute o programa:

./polygon_perimeter

Exemplo de saída:

Introduza o número de lados do polígono (máx 10): 4
Introduza os comprimentos dos lados:
Comprimento do lado 1: 5.5
Comprimento do lado 2: 6.2
Comprimento do lado 3: 4.3
Comprimento do lado 4: 7.1

Comprimentos dos lados introduzidos:
Lado 1: 5.50
Lado 2: 6.20
Lado 3: 4.30
Lado 4: 7.10

Perímetro do polígono: 23.10

Alterações chave neste passo:

  • Adicionada uma variável perimeter para armazenar a soma total dos comprimentos dos lados
  • Introduzido um novo ciclo for para calcular o perímetro adicionando todos os lados
  • Adicionada uma instrução de impressão para mostrar o perímetro calculado

Imprimir o Perímetro

Neste passo final, irá melhorar o programa de cálculo do perímetro do polígono adicionando saída formatada e tratamento de erros para validação de entrada.

Abra o ficheiro existente:

cd ~/project
nano polygon_perimeter.c

Atualize o código com validação de entrada melhorada e saída formatada:

#include <stdio.h>

#define MAX_SIDES 10
#define MIN_SIDES 3

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

    // Solicitar ao utilizador o número de lados com validação de entrada
    do {
        printf("Introduza o número de lados do polígono (entre %d e %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. Por favor, tente novamente.\n");
        }
    } while (num_sides < MIN_SIDES || num_sides > MAX_SIDES);

    // Introduzir os comprimentos dos lados com validação
    printf("Introduza os comprimentos dos lados:\n");
    for (int i = 0; i < num_sides; i++) {
        float side_length;
        do {
            printf("Comprimento do lado %d (deve ser positivo): ", i + 1);
            scanf("%f", &side_length);

            if (side_length <= 0) {
                printf("Comprimento do lado inválido. Por favor, introduza um valor positivo.\n");
            } else {
                sides[i] = side_length;
                break;
            }
        } while (1);
    }

    // Calcular o perímetro somando todos os lados
    for (int i = 0; i < num_sides; i++) {
        perimeter += sides[i];
    }

    // Saída formatada dos resultados
    printf("\n--- Cálculo do Perímetro do Polígono ---\n");
    printf("Número de Lados: %d\n", num_sides);

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

    printf("\nCálculo do 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;
}

Compile o programa atualizado:

gcc -o polygon_perimeter polygon_perimeter.c

Execute o programa:

./polygon_perimeter

Exemplo de saída:

Introduza o número de lados do polígono (entre 3 e 10): 4
Introduza os comprimentos dos lados:
Comprimento do lado 1 (deve ser positivo): 5.5
Comprimento do lado 2 (deve ser positivo): 6.2
Comprimento do lado 3 (deve ser positivo): 4.3
Comprimento do lado 4 (deve ser positivo): 7.1

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

Comprimentos dos Lados:
Lado 1: 5.50
Lado 2: 6.20
Lado 3: 4.30
Lado 4: 7.10

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

Perímetro Final: 23.10

Melhorias chave neste passo:

  • Adicionada validação de entrada para o número de lados e comprimentos dos lados
  • Criada uma saída mais detalhada e formatada
  • Incluída uma exibição passo a passo do cálculo do perímetro
  • Assegurado os limites mínimo e máximo de lados

Resumo

Neste laboratório, aprenderá a ler os comprimentos dos lados de um polígono para um array, somar todos os lados para calcular o perímetro e imprimir o resultado. Primeiro, irá solicitar ao utilizador que introduza o número de lados e o comprimento de cada lado, armazenando os comprimentos dos lados num array. Em seguida, irá somar todos os comprimentos dos lados para calcular o perímetro do polígono. Finalmente, irá imprimir o perímetro calculado.

Os passos chave incluem o uso de scanf() para ler a entrada do utilizador, armazenar os comprimentos dos lados num array, iterar através do array para somar os comprimentos dos lados e imprimir o resultado final.