Menu
Coddy logo textTech

Recapitulação: Prática de Typedef e Enum

Parte da seção Lógica e Fluxo do Journey de C da Coddy. Lição 60 de 63.

challenge icon

Desafio

Fácil

Crie um programa em C que combine enum e typedef para construir uma calculadora simples de formas geométricas. Seu programa deve:

  1. Definir um enum chamado ShapeType com as seguintes constantes nesta ordem exata:
    • CIRCLE
    • RECTANGLE
    • TRIANGLE
  2. Usar typedef para criar um alias de tipo chamado Shape para o enum ShapeType
  3. Escrever uma função chamada calculateArea que:
    • Receba um parâmetro Shape chamado shape
    • Receba dois parâmetros float chamados dimension1 e dimension2
    • Retorne um float representando a área calculada
    • Use uma instrução switch para calcular a área com base no tipo de forma:
      • Para CIRCLE: área = 3.14159 * dimension1 * dimension1 (dimension1 é o raio)
      • Para RECTANGLE: área = dimension1 * dimension2 (comprimento × largura)
      • Para TRIANGLE: área = 0.5 * dimension1 * dimension2 (0.5 × base × altura)
  4. Escrever uma função chamada printShapeInfo que:
    • Receba um parâmetro Shape chamado shape
    • Não retorne nada (void)
    • Use uma instrução switch para imprimir informações sobre a forma:
      • Para CIRCLE: imprimir Shape: Circle
      • Para RECTANGLE: imprimir Shape: Rectangle
      • Para TRIANGLE: imprimir Shape: Triangle
  5. Na função main:
    • Declare uma variável do tipo Shape chamada selectedShape
    • Declare duas variáveis float chamadas dim1 e dim2
    • Leia três valores da entrada: um inteiro representando a escolha da forma (0, 1 ou 2) e dois valores float para as dimensões
    • Atribua o valor enum correspondente a selectedShape com base na entrada
    • Atribua os valores das dimensões a dim1 e dim2
    • Chame a função printShapeInfo com selectedShape
    • Imprima as dimensões neste formato exato: Dimensions: [dim1] [dim2]
    • Calcule a área chamando a função calculateArea
    • Imprima a área calculada com exatamente 2 casas decimais neste formato exato: Area: [area]
    • Determine e imprima a categoria da forma com base na área calculada:
      • Se a área for menor que 10.0: imprimir Category: Small
      • Se a área estiver entre 10.0 e 50.0 (inclusive): imprimir Category: Medium
      • Se a área for maior que 50.0: imprimir Category: Large

Este desafio demonstra a poderosa combinação de enum e typedef trabalhando em conjunto. O typedef cria um nome de tipo limpo e legível, Shape, em vez de escrever repetidamente enum ShapeType. As constantes de enum tornam as instruções switch autoexplicativas, mostrando claramente o que cada caso representa. Você praticará a definição de ambos os conceitos, seu uso em parâmetros de funções e a implementação de uma lógica que depende dos valores do enum.

Experimente você mesmo

#include <stdio.h>

// TODO: Defina seu enum ShapeType e typedef aqui

// TODO: Implemente a função calculateArea aqui

// TODO: Implemente a função printShapeInfo aqui

int main() {
    // Ler entrada
    int shapeChoice;
    float dim1, dim2;
    scanf("%d", &shapeChoice);
    scanf("%f", &dim1);
    scanf("%f", &dim2);
    
    // TODO: Escreva seu código abaixo
    // Declarar a variável selectedShape e atribuir com base em shapeChoice
    // Chamar a função printShapeInfo
    // Imprimir dimensões
    // Calcular e imprimir a área
    // Determinar e imprimir a categoria
    
    return 0;
}

Todas as lições de Lógica e Fluxo

Pratique por conta própria: Compilador de C online