Ir ao conteúdo
  • Cadastre-se

C++ Não entendi como fazer uma fila em C++


Posts recomendados

Boa noite, eu tenho que fazer um trabalho da faculdade e eu não entendi como fazer. O tópico do trabalho é esse.

 

a. A primeira linha da entrada conterá a reserva de dinheiro disponível no início dos atendimentos. 

b. A chegada de um cliente na fila é informada com a palavra "CLIENTE", seguida da operação ("SAQUE" OU "PAGAMENTO") e pelo valor. 

c. O atendimento do cliente é informado com a palavra "PAGAMENTO". 

d. A finalização dos atendimentos é informada com a palavra "FINAL". Neste caso, deve ser dado atendimento aos clientes restantes na fila. 

e. Os valores deverão ser impressos com duas casas decimais sem símbolos monetários.

ENTRADA:

500.00

CLIENTE

SAQUE

100.00

CLIENTE

SAQUE

500.00

 

SAÍDA:

Clientes atendidos: 4

Clientes nao-atendidos: 1

Clientes apos finalizacao: 1

Reserva em caixa: 1000.00

 

Poderiam por favor me dar uma luz e mostrar como isso seria feito ?isso me ajudaria muito

  • Confuso 1
Link para o comentário
Compartilhar em outros sites

Esse enunciado é meio b3st@ mesmo :( 
 
Eu não consigo entender como um sujeito ou grupo de sujeitos, podendo escrever qualquer tipo de exercício, e usando um modelo tão comum quanto uma fila chega a essa coisa.
 

Vamos imaginar que talvez seja ruim de propósito mesmo...
 

  • há dois usos para a mesma palavra, PAGAMENTO. Pra que isso? Não podia usar algo como ATENDIMENTO? 
  • Uma fila é formada pela chegada de clientes, mas nenhum é atendido automaticamente
  • PAGAMENTO na ocasião certa vai atender um único cliente
  • cada cliente representa 3 linhas na entrada. Use um arquivo, lógico, não há nenhuma razão esperta de ler isso do teclado.
  • FINAL encerra a entrada. Pode nem ter atendido ninguém, então nesse momento vai saber quantos caras não-atendidos tem na fila
  • DEPOIS do final todos que eventualmente ficaram na fila serão atendidos, e aí se terá apurado o saldo final do caixa.

EXEMPLO 1
 

4000.00
CLIENTE
PAGAMENTO
1.00
CLIENTE
PAGAMENTO
1.00
CLIENTE
PAGAMENTO
1.00
FINAL


Nesse exemplo ninguém foi atendido então a fila vai ficar com 3 clientes não atendidos. Ao final claro serão atendidos e vão entrar com 3 reais para o saldo final de 4003.

 

EXEMPLO 2

 

300.00
CLIENTE
SAQUE 
30.00
CLIENTE
PAGAMENTO
1.00
PAGAMENTO
PAGAMENTO
FINAL


Nesse exemplo atendeu todo mundo. 

 

Como implementar uma coisa assim?

Provavelmente o mais simples é usar uma máquina de estados, FSA. Tem um estado normal, iniciando uma operação. Um outro depois de ler CLIENTE, um outro depois de ler PAGAMENTO ou SAQUE, um outro para finalizar tudo.
 

Mas é bem simples.

  • Ler linha a linha, já se sabe o que esperar.
  • A entrada de um cliente tem sempre 3 linhas e se algo sair do esquema se pode simplesmente abortar, o enunciado nada diz.
  • Um loop:
    • aberte o sistema
    • processa os comandos
    • monta a fila
    • encerra o sistema
    •  atende quem sobrou
    • mostra os totais.

Pode ser feito com um simples vetor de clientes. Veja os dois exemplos e escreva de volta.

 

Não escreva código antes de entender o modelo...
 

Link para o comentário
Compartilhar em outros sites

Oi @Vilmar Vieira eu não pude entender a saída e entrada, logicamente.

 

A saída diz que foram 4 atendimentos, entretanto, a palavra CLIENTE aparece 2 vezes na entrada... e segue todas as informações discordantes porque não seriam obtidas da entrada.

 

Essa foi a tua dificuldade?

 

 

Estruturação dos dados de entrada não é necessário.

 

É uma calculadora com as operações de subtração e adição respectivamente chamadas por SAQUE e PAGAMENTO sobre o primeiro valor da sequência: reserva disponível, só isso!

 

A palavra FIM não interrompe as operações (subtração e adição) restantes na entrada, apenas inicia um contador diferente para essa ocasião que simula atendimentos após horário normal do banco (quando banco fecha com pessoas ainda na fila).

 

 

Tem perguntas?

 

 

 

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...