Ir ao conteúdo
  • Cadastre-se

C Programação em C, sistema de vendas


Posts recomendados

Preciso adicionar uma parte ao código que emita um relatório final com as seguintes informações:
    - numero total de itens vendidos de cada produto
    - total pago para cada produto
    - total arrecadado
    - média de valor pago por pedido

 

Estou em dúvida se crio uma funcão e nela adiciono os dados para quando o pedido é encerrado/solicitada uma nova venda, ou se adiciono mais um while ao inicio do código, para caso a opção de finalizar/nova venda seja selecionada, os dados armazenados nas variaveis sejam apresentados conforme solicitado, poderiam me auxiliar?
 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define ITENS_MENU 5


  int codigos[ITENS_MENU] = { 100,101,102,103,104 } ;
  char *produtos[ITENS_MENU] = { "Refrigerante", "Casquinha Simples", "Casquinha Dupla", "Sundae", "Banana Split" } ;
  float precos[ITENS_MENU] = { 3.5, 4, 5, 6, 8.5 } ;
  int ped_prod[ITENS_MENU]; // o pedido máximo terá ITENS_MENU itens
  int ped_qtde[ITENS_MENU];
  int tot_itens;          // total de itens no pedido corrente


// essa função exibe o cardápio
void exibe_menu() {
  int i;
  printf("\nMenu\n\nCod        Produto       Preco\n");
  for (i=0;i<5;i++){
    printf("%3d %18s %6.2f\n",codigos[i],produtos[i],precos[i]);
  };
};

// essa função adicione um novo item (se a quantidade for > 0)
// se o item já existir, altera a quantidade
// se o item não existir e a quantidade for >0, adiciona
// se o item existir e a quantidade for 0, remove o item

void novo_item( int produto, int qtde) {
  int i;
  int j;
  int nao_achou = 1;
  for (i=0;i<tot_itens;i++) {
    if ( ped_prod[i] == produto) {    // achou 
      nao_achou =0;                   // avisa que achou
      if (qtde >0) {                  // qtde > 0 
        ped_qtde[i] = qtde;           // altera qtde
        break;
      }
      else {
        for (j=i;j<tot_itens;j++){      // qtde = 0 !! vamos tirar
          ped_prod[j] = ped_prod[j+1];  // tira o elemento do vetor
          ped_qtde[j] = ped_prod[j+1];
        };
        tot_itens--;                  // diminui o número de itens pedidos
        break;
      };
    };
  };
  if (nao_achou) {                // não achou, vamos incluir o item no pedido
    if (qtde>0) {                 // mas só se a qtde for > 0
       ped_prod[tot_itens] = produto;
       ped_qtde[tot_itens] = qtde;
       tot_itens++;               // incluimos +1 item no pedido
    };
  };
}

// exibe os itens do pedido até o momento

void exibe_pedido() {
  int i;
  int wint;           // para calcular o índice dos itens
  float subtotal =0;
  printf("\nSeu pedido atual eh: \n");
  for (i=0;i<tot_itens;i++) {
    wint = ped_prod[i]-100;
    printf("%3d %18s %6.2f X %3d = %6.2f\n",ped_prod[i],produtos[wint],precos[wint],ped_qtde[i],precos[wint]*ped_qtde[i]);
    subtotal +=precos[wint]*ped_qtde[i];
  };
  printf("                              Total %8.2f\n",subtotal);
}
int main() {
  int wopcao =1;
  int i;
  int wqtde;
  int continua =1;
  float total;
  int wint;
  int geralPedido;
  while (continua) { 
    wopcao = 1;
    // zerar o pedido
    printf("\nIniciando novo pedido\n");
    total = 0;
    tot_itens =0;
    for (i=0;i<100;i++){
      ped_prod[i] = 0;
      ped_qtde[i] = 0;
      
    };
    while (wopcao) {
      if (tot_itens) {
        exibe_pedido();
      }
      else {
         exibe_menu();
      };
      printf("\nInforme um codigo de produto ou selecione a opcao desejada\n");
      printf("0=fechar, 1=revisar o pedido 2=exibir menu -> ");
      scanf("%d",&wopcao);
      switch (wopcao) {
        case 1:
          exibe_pedido();
          break;
        case 2:
          exibe_menu();
          break;
        case 0:
          printf("\n--Pedido encerrado--\n");
          break;
        default:
          if (wopcao < codigos[0]  || wopcao > codigos[ITENS_MENU-1]) {
              printf("Opcao errada. Informe um codigo valido\n");
          }
          else {
            do  {
               printf("Informe a quantidade desejada: ");
               scanf("%d",&wqtde);
               if (wqtde >=0) {
                  novo_item( wopcao,wqtde);
               };
            } while (wqtde <0);
          };
      };
    };
    if (tot_itens) {
      exibe_pedido();
      total = 0;
      for (i=0;i<tot_itens;i++){
        wint = ped_prod[i]-100;
        total += precos[wint] * ped_qtde[i];
      };
      printf("\nSeu pedido vai custar %6.2f.\n",total);
    };
    printf ("Tecle 1 para novo pedido ou 0 para fechar o caixa: \n");
    scanf("%d",&continua);
    
    
  };
}

 

Link para o comentário
Compartilhar em outros sites

19 horas atrás, Bruno carlos disse:

numero total de itens vendidos de cada produto

Existe um controle de produtos vendidos?

 

Pode ser um vetor, cujo valores são códigos de produtos vendidos, e daí eles se repetem dentro, basta ordenar para saber a quantidade de cada.

 

Ou um vetor de vendidos, cujo os índices são relacionados ao códigos dos produtos, e cada em cada índice é a quantidade de vendas respectivamente.

 

p. Ex.

Código 100 por exemplo, é associado ao índice 0 desse vetor, então o valor no índice 0 é a quantidade de vendas do produto de código 100.

 

Isso faz sentido?  De qualquer maneira, acho que é assim que se resolve essa questão.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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!