Faça um programa que gerencie o estoque de um mercado e:
  • Crie e leia um vetor de 5 produtos, com os dados: código (inteiro), nome (máximo 15 letras), preço e quantidade.
  • Leia um pedido, composto por um código de produto e a quantidade. Localize este código no vetor e, se houver quantidade suficiente para atender ao pedido integralmente, atualize o estoque e informe o usuário. Repita este processo até ler um código igual a zero.
Se por algum motivo não for possível atender ao pedido, mostre uma mensagem informando qual erro ocorreu.

Passo 1

A questão pede um programa em linguagem C que gerencie o estoque de um mercado: primeiro a gente vai ler um vetor com 5 produtos (cada um com código, nome, preço e quantidade) e depois repetidamente processar pedidos (código e quantidade) até que o código lido seja zero. Se o produto existir e houver estoque suficiente, atualizamos a quantidade e avisamos que o pedido foi atendido; caso contrário mostramos a mensagem de erro correspondente.

Passo 2

Vamos definir um tipo abstrato para o produto usando struct em C e um vetor de 5 posições. Esse struct terá os campos int código, char nome[16], float preço e int quantidade.
Fazemos um laço de repetição (for) de 0 a 4 para ler os dados de cada produto usando scanf: código, nome (até 15 caracteres), preço e quantidade.

Passo 3

Depois de carregar o estoque, entramos num loop infinito que só termina quando o usuário digitar código de pedido igual a zero. Dentro desse loop, lemos códigoPedido e qtdPedido.
Buscamos o produto no vetor percorrendo de 0 a 4. Se não encontrarmos, imprimimos “Produto nao encontrado”. Se encontrarmos mas a quantidade em estoque for menor que qtdPedido, imprimimos “Quantidade insuficiente no estoque”. Se encontrar e tiver estoque, subtraímos qtdPedido de produto.quantidade e imprimimos “Pedido atendido com sucesso. Estoque atualizado.”

Passo 4

Quando o usuário digita código zero, saímos do loop e finalizamos o programa retornando 0 na main().

Resposta

#include <stdio.h>\n\n#define N 5\n\ntypedef struct {\n int codigo;\n char nome[16];\n float preco;\n int quantidade;\n} Produto;\n\nint main() {\n Produto estoque[N];\n int i;\n\n // 1) Leitura dos 5 produtos\n for (i = 0; i < N; i++) {\n printf(“Digite codigo, nome, preco e quantidade do produto %d:\n”, i + 1);\n scanf("%d %15s %f %d", &estoque[i].codigo, estoque[i].nome, &estoque[i].preco, &estoque[i].quantidade);\n }\n\n // 2) Processamento dos pedidos até codigo 0\n while (1) {\n int codigoPedido, qtdPedido;\n printf(“Digite codigo do produto (0 para sair) e quantidade desejada:\n”);\n scanf("%d %d", &codigoPedido, &qtdPedido);\n if (codigoPedido == 0) {\n break;\n }\n\n int encontrado = 0;\n for (i = 0; i < N; i++) {\n if (estoque[i].codigo == codigoPedido) {\n encontrado = 1;\n if (estoque[i].quantidade >= qtdPedido) {\n estoque[i].quantidade -= qtdPedido;\n printf(“Pedido atendido com sucesso. Estoque atualizado.\n”);\n } else {\n printf(“Quantidade insuficiente no estoque.\n”);\n }\n break;\n }\n }\n if (!encontrado) {\n printf(“Produto nao encontrado.\n”);\n }\n }\n\n return 0;\n}

Exercícios relacionados