Desenvolver um programa para simulação de um supermercado com 3 caixas de cobrança, não consigo sair

1. Desenvolver um programa para simulação de um supermercado com 3 caixas de cobrança, não consigo sair

Ian Souza
adytys

(usa Ubuntu)

Enviado em 13/10/2018 - 22:49h


Preciso desenvolver um programa para simulação de um supermercado com 3 caixas de cobrança. O sistemas deve considerar 3 caixas de cobrança nomeados como 1, 2 e 3. Cada caixa possui sua própria fila de clientes.

O programa aguarda o usuário informar qual caixa deseja executar a simulação (1, 2 ou 3).

Com um caixa válido informado, o programa deve aguardar a simulação a ser feita. Existem três possíveis.:

-Adicionar cliente na fila.

-Receber o pagamento de um cliente.

-Finalizar simulação.

Aí ele tem que falar o custo da compra e o troco do cliente.

Eu já consegui isso aqui:

#include <stdio.h>

#include <stdlib.h>

typedef struct cliente {

int cod;

char nome [40];

} Cliente;

typedef struct fila {

Clientes clientes [1000];

int inicio;

int fim;

} Fila;

typedef struct registro {

Cliente c;

float vlpago;

float vlcobrado;

float troco;

}

Registro;

Fila caixa1;

Fila caixa2;

Fila caixa3;

Registro reg_caixa1 [1000];

Registro reg_caixa2 [1000];

Registro reg_caixa3 [1000];

// inicialização das variaveis

int caixa1, caixa2, caixa3;

printf("MENU DE opções:\n\n");

printf("Escolha o caixa no qual deseja fazer a simulacao\n");

printf("1 para caixa 1 | 2 para o caixa 2 | 3 para o caixa 3 | 4 para sair\n");

Op:

printf("Opcao: ");fflush(stdin);

switch(getche())

{

case '1' : caixa1();

break;

case '2' : caixa2();

break;

case '3' : caixa3();

break;

case '4' : exit(0);

break;

case '5' : gravar();

break;

default : printf("Invalido!\n\n");

system("PAUSE");

return 0;

}&#65279;


Estaguinei e num consigo avançar mais, alguém me ajuda?


  


2. Re: Desenvolver um programa para simulação de um supermercado com 3 caixas de cobrança, não consigo sair

Paulo
paulo1205

(usa Ubuntu)

Enviado em 14/10/2018 - 14:52h

Não entendi muito bem o propósito do programa, então eu vou me deter mais no código que você mostrou.

Você parece ter parado bem no início mesmo, pois nem mesmo colocou no código nenhuma função — nem mesmo main(). Isso é muito pouco até para que possamos dar uma ajuda mais direcionada.

Pela descrição do problema, não me pareceu que você precise de uma estrutura para os clientes. Tome cuidado para não gastar tempo tentando fazer mais do que o necessário. (Se você tiver omitido a parte do enunciado que faz com que ela seja relevante, ignore o comentário, mas não o conselho.)

Na estrutura que você chamou de registro (que, por sinal, é um nome genérico demais, não descrevendo o que o tipo de dados realmente representa), se valer sempre a relação de que o troco é igual ao valor pago menos o valor cobrado, então você não precisa guardar os três valores ao mesmo tempo, pois o terceiro sempre poderá ser calculado a partir dos outros dois. Você só vai precisar dos três se existir alguma outra relação, que seria um quarto valor, que precise dos três ao mesmo tempo para ser inferida (por exemplo: um desconto, multas, arredondamento de troco etc.).

O uso de que você faz de typedef no seu programa é geralmente considerado um mau uso em C. Quando as estruturas têm nomes próprios (como têm as suas) e, principalmente, quando elas são enxergadas como estruturas pelo programa (isto é: quando os campos que a compõem são manipulados individualmente), a boa prática do C geralmente recomenda que você não use typedefs, mas que deixe claro que está usando dados cujos tipos são estrutura, explicitamente usando, por exemplo, “struct fila nome_da_variavel” em lugar de “Fila nome_da_variavel”.

(Eu creio que o vício de fazer os estudantes (ab)usarem de typedef em C é uma herança de linguagens como Pascal e da falta de real intimidade com a linguagem por parte dos professores dos cursos (que possivelmente são velhos usuários de Pascal). Em Pascal, os records (análogos aos structs do C) não tinham nomes próprios, e o programador era obrigado a usar declarações de tipos sempre que queria usar uma determinada variedade record em mais de um ponto do programa. Como o C permite dar nome a cada estrutura num espaço de nomes reservado especificamente para isso (que é separado do espaço de nomes usado por outros elementos da sintaxe da linguagem), é redundante criar também um tipo para ela no espaço de nomes geral.

Outra coisa que eu notei é que você declarou os nomes caixa1, caixa2 e caixa3 como dados do tipo struct fila mas, mais tarde, tentou usá-los como se fossem nomes de funções. Isso obviamente não vai funcionar.


3. Esse aqui é enunciado completo:

Ian Souza
adytys

(usa Ubuntu)

Enviado em 14/10/2018 - 17:38h

são atendidos quando chega a sua vez.
O que deve ser realizado na questão:
1) Primeiramente defina um tipo abstrato de dados (TAD) para comportar os dados de um carrinho: um identificador numérico, o nome do cliente (com máximo de 30 caracteres); o número de produtos; e o valor total da compra.
2) Em seguida, crie um tipo abstrato de dados (TAD) que define a “fila” de carrinhos, para comportar um máximo de 10 clientes.
3) E, por último, crie três filas de carrinhos (os caixas), como três variáveis globais: caixa1, caixa2 e caixa3.
4) De posse desse trecho de código, faça as seguintes rotinas ou funções:
• Crie a função “enqueue” ou “insert”, que recebe por parâmetro os dados de um carrinho (encapsulados em um tad) e insere na fila escolhida pelo cliente, verificando se existe espaço na fila, e emitindo mensagem de erro caso a fila esteja cheia.
• Crie uma função “inicializa”, que esvazia as 3 filas no inicio do dia de trabalho.
• Crie a função “remove”, que retira um cliente de uma fila indicada.
• Crie também uma função “total”, que recebe uma fila de carrinhos como parâmetro e retorna o valor total arrecadado pelo supermercado nela.
5) No main, chame estas rotinas para:
o Inicializar as filas
o Colocar alguns clientes nas filas (4 ou 5 em cada uma bastam).
o Retirar pelo menos um cliente de uma das filas.
o E por ultimo calcular seus valores totais.







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts