Menu
Coddy logo textTech

typedef con structs

Parte de la sección Lógica y Flujo del Journey de C de Coddy. Lección 59 de 63.

Una de las aplicaciones más prácticas de typedef es crear alias para tipos struct. Esto elimina la necesidad de escribir repetidamente la palabra clave struct cada vez que declaras una variable de ese tipo, lo que hace que tu código sea más limpio y legible.

Cuando combinas typedef con una definición de estructura, puedes crear un nuevo nombre de tipo que se refiere directamente a la estructura. Esta es la sintaxis:

typedef struct Point {
    int x;
    int y;
} Point;

Ahora, en lugar de escribir struct Point p1; cada vez que necesites una variable Point, puedes escribir simplemente Point p1;. Ambas declaraciones logran exactamente lo mismo, pero la versión con typedef es más concisa y fácil de leer.

Este enfoque es especialmente valioso en programas más grandes en los que trabajas con frecuencia con tipos de datos personalizados. Hace que tu código se parezca más al de otros lenguajes de programación y reduce el desorden visual de escribir repetidamente struct en todo tu programa.

challenge icon

Desafío

Fácil

Crea un programa en C que demuestre el uso de typedef con estructuras para crear un sistema sencillo de inventario de libros. Tu programa debe:

  1. Definir una struct llamada Book con los siguientes miembros:
    • Un entero id
    • Un arreglo de caracteres title con tamaño 50
    • Un número de coma flotante price
    • Un entero quantity
  2. Usar typedef para crear un alias de tipo llamado Book para la struct Book
  3. En la función principal:
    • Declarar dos variables de tipo Book llamadas book1 y book2
    • Leer la entrada del primer libro en este orden: ID, título, precio, cantidad
    • Asignar estos valores a los miembros de book1
    • Leer la entrada del segundo libro en este orden: ID, título, precio, cantidad
    • Asignar estos valores a los miembros de book2
    • Imprimir la información de ambos libros en este formato exacto:
      • Book 1: ID=[id], Title=[title], Price=[price], Quantity=[quantity]
      • Book 2: ID=[id], Title=[title], Price=[price], Quantity=[quantity]
    • Calcular e imprimir el valor total del inventario de cada libro (precio × cantidad) en este formato exacto:
      • Book 1 Total Value: [total_value]
      • Book 2 Total Value: [total_value]
    • Calcular e imprimir el valor combinado del inventario de ambos libros en este formato exacto: Combined Inventory Value: [combined_value]
    • Determinar e imprimir qué libro tiene el valor total más alto:
      • Si el valor total de book1 es mayor: imprimir Book 1 has higher value
      • Si el valor total de book2 es mayor: imprimir Book 2 has higher value
      • Si ambos tienen el mismo valor: imprimir Both books have equal value

Este desafío demuestra cómo typedef con estructuras elimina la necesidad de escribir repetidamente struct Book en todo el programa. En lugar de declarar variables como struct Book book1;, puedes escribir simplemente Book book1;, lo que hace que tu código sea más limpio y fácil de leer. Practicarás cómo combinar la definición de una estructura con typedef, trabajar con miembros de estructuras y realizar cálculos usando datos de estructuras.

Pruébalo tú mismo

#include <stdio.h>
#include <string.h>

// TODO: Define tu struct y typedef aquí

int main() {
    // TODO: Declara tus variables Book aquí
    
    // Lee la entrada del primer libro
    int id1, quantity1;
    char title1[50];
    float price1;
    
    scanf("%d", &id1);
    scanf("%s", title1);
    scanf("%f", &price1);
    scanf("%d", &quantity1);
    
    // TODO: Asigna valores a los miembros de book1
    
    // Lee la entrada del segundo libro
    int id2, quantity2;
    char title2[50];
    float price2;
    
    scanf("%d", &id2);
    scanf("%s", title2);
    scanf("%f", &price2);
    scanf("%d", &quantity2);
    
    // TODO: Asigna valores a los miembros de book2
    
    // TODO: Imprime la información del libro, calcula los valores y compara
    
    return 0;
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y Flujo

Practica por tu cuenta: Compilador de C online