Menu
Coddy logo textTech

typedef com Structs

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

Uma das aplicações mais práticas de typedef é criar aliases para tipos struct. Isso elimina a necessidade de escrever repetidamente a palavra-chave struct sempre que você declara uma variável desse tipo, tornando seu código mais limpo e legível.

Quando você combina typedef com uma definição de struct, pode criar um novo nome de tipo que se refere diretamente à struct. Veja a sintaxe:

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

Agora, em vez de escrever struct Point p1; sempre que precisar de uma variável Point, você pode simplesmente escrever Point p1;. Ambas as declarações fazem exatamente a mesma coisa, mas a versão com typedef é mais concisa e fácil de ler.

Essa abordagem é especialmente valiosa em programas maiores, nos quais você trabalha frequentemente com tipos de dados personalizados. Ela faz com que seu código se pareça mais com o de outras linguagens de programação e reduz a poluição visual de digitar repetidamente struct ao longo do seu programa.

challenge icon

Desafio

Fácil

Crie um programa em C que demonstre o uso de typedef com structs para construir um sistema simples de inventário de livros. Seu programa deve:

  1. Definir uma struct chamada Book com os seguintes membros:
    • Um inteiro id
    • Um array de caracteres title com tamanho 50
    • Um float price
    • Um inteiro quantity
  2. Usar typedef para criar um alias de tipo chamado Book para a struct Book
  3. Na função main:
    • Declarar duas variáveis do tipo Book chamadas book1 e book2
    • Ler os dados do primeiro livro nesta ordem: ID, título, preço, quantidade
    • Atribuir esses valores aos membros de book1
    • Ler os dados do segundo livro nesta ordem: ID, título, preço, quantidade
    • Atribuir esses valores aos membros de book2
    • Imprimir as informações dos dois livros neste formato exato:
      • Book 1: ID=[id], Title=[title], Price=[price], Quantity=[quantity]
      • Book 2: ID=[id], Title=[title], Price=[price], Quantity=[quantity]
    • Calcular e imprimir o valor total do inventário de cada livro (preço × quantidade) neste formato exato:
      • Book 1 Total Value: [total_value]
      • Book 2 Total Value: [total_value]
    • Calcular e imprimir o valor combinado do inventário dos dois livros neste formato exato: Combined Inventory Value: [combined_value]
    • Determinar e imprimir qual livro tem o maior valor total:
      • Se o valor total de book1 for maior: imprimir Book 1 has higher value
      • Se o valor total de book2 for maior: imprimir Book 2 has higher value
      • Se ambos tiverem o mesmo valor: imprimir Both books have equal value

Este desafio demonstra como o uso de typedef com structs elimina a necessidade de escrever repetidamente struct Book em todo o programa. Em vez de declarar variáveis como struct Book book1;, você pode simplesmente escrever Book book1;, tornando seu código mais limpo e legível. Você praticará a combinação da definição de uma struct com typedef, o trabalho com membros de structs e a realização de cálculos usando dados de structs.

Experimente você mesmo

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

// TODO: Defina sua struct e typedef aqui

int main() {
    // TODO: Declare suas variáveis Book aqui
    
    // Ler a entrada para o primeiro livro
    int id1, quantity1;
    char title1[50];
    float price1;
    
    scanf("%d", &id1);
    scanf("%s", title1);
    scanf("%f", &price1);
    scanf("%d", &quantity1);
    
    // TODO: Atribua valores aos membros de book1
    
    // Ler a entrada para o segundo livro
    int id2, quantity2;
    char title2[50];
    float price2;
    
    scanf("%d", &id2);
    scanf("%s", title2);
    scanf("%f", &price2);
    scanf("%d", &quantity2);
    
    // TODO: Atribua valores aos membros de book2
    
    // TODO: Imprima as informações do livro, calcule os valores e compare
    
    return 0;
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

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

Pratique por conta própria: Compilador de C online