Ir ao conteúdo
  • Cadastre-se

Arthur Denner_437487

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

Reputação

0
  1. Meu Deus! Passei 3 dias pensando e tentando resolver esse problema e não passou pela minha cabeça que seria isso. Agora vou só colocar as restrições para não haver código repetido ou inválido e etc, e terminarei essa bagaça. Muito obrigado!! <3
  2. Olá, pessoal. Então, eu to fazendo um trabalho para faculdade, onde devo criar um programa em C que gerencie um estoque. O programa deve ter as seguintes funções: 1. Cadastrar produto; 2. Mostrar catalogo; 3. Mostrar estoque; 4. Aumentar estoque; 5. Diminuir estoque; As 3 primeiras eu fiz de boa, o problema ta na função 4, pois eu consigo mudar o atributo de quantidade (qntd) dentro da função, mas não consigo mante-lo fora dela (no resto do código). Eu sei que tenho que usar ponteiro (como usei no catalogo), mas não consegui escrever o código pra isso (ponteiro de vetor de estrutura). Segue o código: PS: Deixei a função com parâmetros que não são ponteiros de propósito, já que não sei como declara. #include <stdio.h> #define MAX 100 typedef struct { int codigo; char nome[50]; float valor; }Produto; typedef struct { Produto prod; int qntd; }Item; int menu(Produto catalogo[], int *tam_catalogo, Item estoque[]); void cadastrar_produto(Produto catalogo[], int *tam_catalogo); void mostrar_catalogo(Produto catalogo[], int *tam_catalogo); void mostrar_estoque(Item estoque[], Produto catalogo[], int *tam_catalogo); void aumentar_estoque(Item estoque[]); int main() { Produto catalogo[MAX]; Item estoque[MAX]; int i; for (i = 0; i < MAX; i++) { estoque.qntd = 0; } int tam_catalogo = 0; int *ptc = &tam_catalogo; int continuar; do { continuar = menu(catalogo, &ptc, estoque); } while (continuar); return 0; } int menu(Produto catalogo[], int *tam_catalogo, Item estoque[]) { int opcao; printf ("\n-- MENU DE opções --\n"); printf ("\n1. Cadastrar produto"); printf ("\n2. Mostrar catalogo"); printf ("\n3. Mostrar estoque"); printf ("\n4. Aumentar estoque"); printf ("\n5. Diminuir estoque"); printf ("\n0. Sair\n"); printf ("\nSelecione uma opcao: "); scanf ("%d", &opcao); switch (opcao) { case 1: { cadastrar_produto(catalogo, *tam_catalogo); break; } case 2: { mostrar_catalogo(catalogo, *tam_catalogo); break; } case 3: { mostrar_estoque(estoque, catalogo, *tam_catalogo); break; } case 4: { aumentar_estoque(estoque); break; } case 5: { //ainda vou fazer, pois preciso da função 4 pronta; } case 0: { system ("cls || clear"); printf ("Obrigado por usar! Ate a proxima!\n"); break; } default: { printf ("\nOpcao invalida!\n"); } } return opcao; } void cadastrar_produto(Produto catalogo[], int *tam_catalogo) { printf ("\nDigite o codigo do produto: "); scanf ("%d", &catalogo[*tam_catalogo].codigo); printf ("Digite o nome do produto: "); fflush(stdin); gets(catalogo[*tam_catalogo].nome); printf ("Digite o valor do produto: R$ "); scanf ("%f", &catalogo[*tam_catalogo].valor); *tam_catalogo = *tam_catalogo + 1; } void mostrar_catalogo(Produto catalogo[], int *tam_catalogo) { int i; printf ("\n ---------- CATALOGO DE PRODUTOS ----------\n"); printf ("\n COD - NOME - VALOR\n"); for (i = 0; i < *tam_catalogo; i++) { printf (" %2d - %20s - R$ %6.2f\n", catalogo.codigo, catalogo.nome, catalogo.valor); } } void mostrar_estoque(Item estoque[], Produto catalogo[], int *tam_catalogo) { int i; for (i = 0; i < *tam_catalogo; i++) { estoque.prod = catalogo; } printf ("\n ---------- ESTOQUE DE PRODUTOS ----------\n"); printf ("\n COD - NOME - VALOR - ESTOQUE\n"); for (i = 0; i < *tam_catalogo; i++) { printf (" %2d - %20s - R$ %6.2f - %d\n", estoque.prod.codigo, estoque.prod.nome, estoque.prod.valor, estoque.qntd); } } void aumentar_estoque(Item estoque[]) { int escolha, quantidade; printf ("\nDe qual produto deseja adicionar estoque? "); scanf ("%d", &escolha); printf ("\nQuantos itens do produto deseja adicionar: "); scanf ("%d", &quantidade); estoque[escolha].qntd += quantidade; printf ("\n"); } Desde já agradeço.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!