Revisão: Array de Structs
Parte da seção Lógica e Fluxo do Journey de C da Coddy. Lição 62 de 63.
Desafio
FácilCrie um programa em C que gerencie um sistema de inventário de produtos usando um array de structs. Seu programa deve:
- Definir uma
structchamadaProductcom os seguintes membros:- Um array de caracteres
namecom tamanho 30 - Um float
price - Um inteiro
stock
- Um array de caracteres
- Escrever uma função chamada
findMostExpensiveque:- Receba um array de
struct Producte um inteirosizecomo parâmetros - Retorne um inteiro representando o índice do produto com o maior preço
- Use um loop para iterar por todos os produtos e comparar seus preços
- Retorne o índice do primeiro produto encontrado com o preço máximo
- Receba um array de
- Escrever uma função chamada
calculateTotalValueque:- Receba um array de
struct Producte um inteirosizecomo parâmetros - Retorne um float representando o valor total do inventário
- Calcule o valor total somando (preço × estoque) de cada produto
- Receba um array de
- Escrever uma função chamada
findLowStockque:- Receba um array de
struct Product, um inteirosizee um inteirothresholdcomo parâmetros - Retorne um inteiro representando a quantidade de produtos cujo estoque está abaixo do limite
- Use um loop para contar os produtos cujo estoque é menor que o valor do limite
- Receba um array de
- Na função principal:
- Crie um array de 3
struct Productchamadoinventory - Leia a entrada de cada produto nesta ordem: nome, preço, estoque
- Preencha o array com os dados de entrada
- Imprima as informações de cada produto neste formato exato:
Product [index]: [name] - Price: [price], Stock: [stock] - Chame a função
findMostExpensivee imprima o resultado neste formato exato:Most expensive product: [name] - Chame a função
calculateTotalValuee imprima o resultado com exatamente 2 casas decimais neste formato exato:Total inventory value: [total_value] - Leia um inteiro representando o limite de estoque baixo
- Chame a função
findLowStockcom o limite e imprima o resultado neste formato exato:Products with low stock: [count] - Verifique se o produto mais caro tem estoque maior que 10:
- Se sim: imprima
Most expensive product is well stocked - Se não: imprima
Most expensive product needs restocking
- Se sim: imprima
- Crie um array de 3
Este desafio testa sua capacidade de trabalhar com arrays de structs, implementar funções que processem arrays de structs e realizar diversos cálculos e comparações em dados estruturados. Você praticará a indexação de arrays com structs, o projeto de funções para processamento de dados e a combinação de várias operações para analisar informações do 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 Lógica e Fluxo
1Fundamentos de Ponteiros
O que é um Ponteiro?Declarando PonteirosO Operador de Endereço (&)O Operador de Desreferência (*)Ponteiros NULLRecapitulação: Fundamentos de Ponteiros4Projeto: Utilitário de Texto Simples
Visão Geral do ProjetoContando Caracteres2Ponteiros e Arrays
Nomes de Arrays como PonteirosElementos de Array - PonteirosAritmética de PonteirosComparando PonteirosRecapitulação: Percorrendo Arrays com Ponteiros5Ponteiros e Funções
Passagem por ValorPassando Ponteiros para FunçõesModificando Variáveis via PonteirosUm Exemplo Clássico: SwapPassando Arrays para FunçõesRecapitulação: Ponteiros como Argumentos8Structs e Ponteiros
Ponteiros para StructsO Operador Seta (->)Passagem de Structs por ValorPassagem de Ponteiros para StructsAlocação Dinâmica de StructsRecapitulação: Modificando Struct - Ptr11Desafios de Revisão Final
Revisão: Concatenação Dinâmica de StringsRevisão: Array de StructsRevisão: Contador de Frequência de Palavras3Arrays de Caracteres e Strings
Strings como Arrays de charO Terminador NuloEntrada de Strings com scanfUsando strlen()Usando strcpy()Usando strcat()Usando strcmp()Recapitulação: Funções Básicas de Strings6Gerenciamento de Memória
Memória Stack vs. HeapAlocação Dinâmica - malloc()Usando sizeof() para AlocaçãoVerificando Falhas de AlocaçãoLiberando Memória com free()Alocando com calloc()Recapitulação: Array Dinâmico9Projeto: Cadastro Simples de Contatos
Projeto: Definir a Struct de ContatoFunção para Criar um ContatoPratique por conta própria: Compilador de C online