Repaso: Práctica de typedef y enums
Parte de la sección Lógica y Flujo del Journey de C de Coddy. Lección 60 de 63.
Desafío
FácilCrea un programa en C que combine enum y typedef para construir una calculadora sencilla de formas geométricas. Tu programa debe:
- Definir un
enumllamadoShapeTypecon las siguientes constantes en este orden exacto:CIRCLERECTANGLETRIANGLE
- Usar
typedefpara crear un alias de tipo llamadoShapepara elenum ShapeType - Escribir una función llamada
calculateAreaque:- Reciba un parámetro
Shapellamadoshape - Reciba dos parámetros
floatllamadosdimension1ydimension2 - Devuelva un
floatque represente el área calculada - Use una instrucción
switchpara calcular el área según el tipo de forma:- Para
CIRCLE: área = 3.14159 * dimension1 * dimension1 (dimension1 es el radio) - Para
RECTANGLE: área = dimension1 * dimension2 (longitud × anchura) - Para
TRIANGLE: área = 0.5 * dimension1 * dimension2 (0.5 × base × altura)
- Para
- Reciba un parámetro
- Escribir una función llamada
printShapeInfoque:- Reciba un parámetro
Shapellamadoshape - No devuelva nada (void)
- Use una instrucción
switchpara imprimir información sobre la forma:- Para
CIRCLE: imprimirShape: Circle - Para
RECTANGLE: imprimirShape: Rectangle - Para
TRIANGLE: imprimirShape: Triangle
- Para
- Reciba un parámetro
- En la función main:
- Declarar una variable de tipo
ShapellamadaselectedShape - Declarar dos variables
floatllamadasdim1ydim2 - Leer tres valores de la entrada: un entero que represente la opción de forma (0, 1 o 2), y dos valores float para las dimensiones
- Asignar el valor enum correspondiente a
selectedShapesegún la entrada - Asignar los valores de las dimensiones a
dim1ydim2 - Llamar a la función
printShapeInfoconselectedShape - Imprimir las dimensiones en este formato exacto:
Dimensions: [dim1] [dim2] - Calcular el área llamando a la función
calculateArea - Imprimir el área calculada con exactamente 2 decimales en este formato exacto:
Area: [area] - Determinar e imprimir la categoría de la forma según el área calculada:
- Si el área es menor que 10.0: imprimir
Category: Small - Si el área está entre 10.0 y 50.0 (inclusive): imprimir
Category: Medium - Si el área es mayor que 50.0: imprimir
Category: Large
- Si el área es menor que 10.0: imprimir
- Declarar una variable de tipo
Este desafío demuestra la potente combinación de enum y typedef trabajando conjuntamente. typedef crea un nombre de tipo limpio y legible, Shape, en lugar de escribir repetidamente enum ShapeType. Las constantes de enum hacen que las instrucciones switch sean autoexplicativas, mostrando claramente qué representa cada caso. Practicarás la definición de ambos conceptos, su uso en parámetros de funciones y la implementación de lógica que depende de los valores del enum.
Pruébalo tú mismo
#include <stdio.h>
// TODO: Define tu enum ShapeType y typedef aquí
// TODO: Implementa la función calculateArea aquí
// TODO: Implementa la función printShapeInfo aquí
int main() {
// Leer entrada
int shapeChoice;
float dim1, dim2;
scanf("%d", &shapeChoice);
scanf("%f", &dim1);
scanf("%f", &dim2);
// TODO: Escribe tu código a continuación
// Declara la variable selectedShape y asígnala basándote en shapeChoice
// Llama a la función printShapeInfo
// Imprimir dimensiones
// Calcular e imprimir el área
// Determinar e imprimir la categoría
return 0;
}Todas las lecciones de Lógica y Flujo
1Fundamentos de Punteros
¿Qué es un puntero?Declaración de punterosEl operador de dirección (&)El operador de desreferencia (*)Punteros NULLResumen: Conceptos básicos de punteros4Proyecto: Utilidad de texto simple
Descripción general del proyectoContar caracteres7Estructuras (structs)
¿Qué es un struct?Declaración de un structCreación de variables de tipo structAcceso a los miembros de un structInicialización de structsResumen: Struct de datos de estudiantes10Enums y Typedef
enum para constantes con nombreDeclaración y uso de enumsEnums en sentencias switchUso de typedef para alias de tipostypedef con structsRepaso: Práctica de typedef y enums2Punteros y Arrays
Nombres de Arrays como PunterosElementos de un Array - PunterosAritmética de PunterosComparación de PunterosResumen: Recorrido de Arrays con Punteros5Punteros y funciones
Paso por valorPasar punteros a funcionesModificar variables mediante punterosUn ejemplo clásico: Intercambio (Swap)Pasar arrays a funcionesResumen: Argumentos de punteros a funciones3Arreglos de caracteres y cadenas
Cadenas como arreglos de charEl terminador nuloEntrada de cadenas con scanfUso de strlen()Uso de strcpy()Uso de strcat()Uso de strcmp()Resumen: Funciones básicas de cadenasPractica por tu cuenta: Compilador de C online