Ir para conteúdo
Fórum Script Brasil

Luis Henirque

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre Luis Henirque

  • Data de Nascimento 06/05/1994

Perfil

  • Gender
    Male
  • Location
    Campo Grande

Luis Henirque's Achievements

0

Reputação

  1. Olá tenho tido problemas com a compilação no programa abaixo em C, ele é um programa que faz o cadastro de produtos de uma loja, quando recebe uma proposta, faz a busca do produto no estoque, verificando se o pedido pode ser atendido e caso haja produtos suficientes ele desconta do estoque a quantidade comprada pelo cliente, além de atualizar o estoque(colocar mais produtos no estoque). Programo em linux pelo gcc e tem dado o seguinte problema: ex23-lista2.c: Na função ‘le_pedido’: ex23-lista2.c:80:3: aviso: formato ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[51]’ [-Wformat] O erro está na função le_pedido após a main. #include <stdio.h> #define TAM 1000 #define NOME 51 typedef struct { int codigo_produto; int quantidade_disponivel; float preco_unitario; char nome[NOME]; char marca[NOME]; } produto; typedef struct { int codigo; int quantidade; char cliente[NOME]; } pedido; void cadastrar_produto(produto v[TAM], int *n); void executa_venda(pedido p, produto v[TAM], int n); int verifica_estoque(pedido p, produto v[TAM], int n); void atualizar_estoque(produto vet[TAM], int n); void le_pedido(pedido *proposta); int main () { int n=0, opcao, resp; produto v[TAM]; pedido proposta; do { printf("1 - Cadastrar produto\n"); printf("2 - Solicitar produtos\n"); printf("3 - Atualizar Estoque\n"); printf("4 - Sair\n"); scanf("%d\n", &opcao); if(opcao == 1) cadastrar_produto(v, &n); else if(opcao == 2){ le_pedido(&proposta); resp=verifica_estoque(proposta, v, n); if(resp == -1) printf("Produto não existe\n"); else if(resp == -2) printf("Quantidade insuficiente\n"); else executa_venda(proposta, v, resp); } else if(opcao == 3){ atualizar_estoque(v, n); } }while(opcao != 4); return 0; } void cadastrar_produto(produto v[TAM], int *n) { v[*n].codigo_produto=*n; scanf("%[^\n]", v[*n].nome); scanf("%[^\n]", v[*n].marca); scanf("%f", &v[*n].preco_unitario); scanf("%d", &v[*n].quantidade_disponivel); (*n)++; } int verifica_estoque(pedido proposta, produto v[TAM], int n) { int i; for(i=0; i<n; i++){ if(proposta.codigo==v[i].codigo_produto){ if(proposta.quantidade<=v[i].quantidade_disponivel) return i; else return -2; } } return -1; } void le_pedido(pedido *proposta) { scanf("%d", &(*proposta).codigo); scanf("%d", &(*proposta).quantidade); scanf(" %s", &(*proposta).cliente); } void executa_venda(pedido p, produto v[TAM], int i) { if(v[i].codigo_produto==p.codigo){ printf("%s\n", p.cliente); printf("%d\n", p.codigo); printf("%s\n", v[i].nome); printf("%.2f\n", v[i].preco_unitario); printf("%.2f\n", (v[i].preco_unitario*p.quantidade)); v[i].quantidade_disponivel-=p.quantidade; } } void atualizar_estoque (produto v[TAM], int n) { int cod, qtde, i; scanf("%d", &cod); scanf("%d", &qtde); for(i=0; i<n; i++){ if(cod==v[i].codigo_produto) v[i].quantidade_disponivel+=qtde; } }
×
×
  • Criar Novo...