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 10define um limite máximo para o número de ladosfloat sides[MAX_SIDES]cria um array para armazenar os comprimentos dos ladosscanf()é 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
perimeterpara armazenar a soma total dos comprimentos dos lados - Introduzido um novo ciclo
forpara 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.



