Ir para conteúdo
Fórum Script Brasil
  • 0

Erro de Compilação


Luis Henirque

Pergunta

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;
  }
}

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...