Jump to content
Fórum Script Brasil
  • 0

Erro de Compilação


Luis Henirque
 Share

Question

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 to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.9k
    • Total Posts
      648.8k
×
×
  • Create New...