Menu
Coddy logo textTech

Revisão: Array de Structs

Parte da seção Logic & Flow do Journey de C da Coddy — lição 62 de 63.

challenge icon

Desafio

Fácil

Crie um programa em C que gerencie um sistema de inventário de produtos usando um array de structs. Seu programa deve:

  1. Definir uma struct chamada Product com os seguintes membros:
    • Um array de caracteres name com tamanho 30
    • Um float price
    • Um inteiro stock
  2. Escrever uma função chamada findMostExpensive que:
    • Recebe um array de struct Product e um inteiro size como parâmetros
    • Retorna um inteiro representando o índice do produto com o preço mais alto
    • Usa um loop para iterar por todos os produtos e comparar seus preços
    • Retorna o índice do primeiro produto encontrado com o preço máximo
  3. Escrever uma função chamada calculateTotalValue que:
    • Recebe um array de struct Product e um inteiro size como parâmetros
    • Retorna um float representando o valor total do inventário
    • Calcula o valor total somando (preço × estoque) para cada produto
  4. Escrever uma função chamada findLowStock que:
    • Recebe um array de struct Product, um inteiro size e um inteiro threshold como parâmetros
    • Retorna um inteiro representando a contagem de produtos com estoque abaixo do limite (threshold)
    • Usa um loop para contar os produtos onde o estoque é menor que o valor do limite
  5. Na função principal (main):
    • Criar um array de 3 struct Product chamado inventory
    • Ler a entrada para cada produto nesta ordem: nome, preço, estoque
    • Preencher o array com os dados de entrada
    • Imprimir as informações de cada produto neste formato exato: Product [index]: [name] - Price: [price], Stock: [stock]
    • Chamar a função findMostExpensive e imprimir o resultado neste formato exato: Most expensive product: [name]
    • Chamar a função calculateTotalValue e imprimir o resultado com exatamente 2 casas decimais neste formato exato: Total inventory value: [total_value]
    • Ler um inteiro representando o limite de estoque baixo (threshold)
    • Chamar a função findLowStock com o limite e imprimir o resultado neste formato exato: Products with low stock: [count]
    • Verificar se o produto mais caro tem estoque maior que 10:
      • Se sim: imprimir Most expensive product is well stocked
      • Se não: imprimir Most expensive product needs restocking

Este desafio testa sua habilidade de trabalhar com arrays de structs, implementar funções que processam arrays de structs e realizar vários cálculos e comparações em dados estruturados. Você praticará a indexação de arrays com structs, o design de funções para processamento de dados e a combinação de múltiplas operações para analisar informações de inventário.

Experimente você mesmo

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

// TODO: Defina a struct Product aqui

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

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

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

int main() {
    // Cria um array de 3 produtos
    struct Product inventory[3];
    
    // Lê a entrada para cada produto
    for (int i = 0; i < 3; i++) {
        scanf("%s", inventory[i].name);
        scanf("%f", &inventory[i].price);
        scanf("%d", &inventory[i].stock);
    }
    
    // TODO: Imprime as informações de cada produto
    
    // TODO: Encontra e imprime o produto mais caro
    
    // TODO: Calcula e imprime o valor total do inventário
    
    // Lê o limite de estoque baixo
    int threshold;
    scanf("%d", &threshold);
    
    // TODO: Encontra e imprime produtos com estoque baixo
    
    // TODO: Verifica se o produto mais caro está com bom estoque
    
    return 0;
}

Todas as lições de Logic & Flow