Enviado em 26/06/2017 - 12:29h
Olá, bom eu estou estudando pra minha prova de estrutura de dados e peguei uma questão pra fazer q diz q: devemos simular o controle de um cliente em um bar. Ao chegar, cada cliente recebe uma comanda e ao consumir um produto, este é anotado na sua comanda. Ao fechar a conta, o valor total é mostrado ao clientee após o pagamento a sua comnanda é descartada (desalocar memória)#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
struct cliente{
char produto[10];
int codigo;
struct cliente *prox;
};typedef struct cliente *lista;
lista inicio = NULL;
bool listavazia(){
if(inicio){
return false;
}else{
return true;
}
}
struct comanda{
float preco;
struct comando *prox;
};typedef struct comanda *lista2;
28-void gerar_codigo{
29- srand((unsigned)time(0));
30- int maior = 100;
31- int menor = 0;
32- int aleatorio = rand()%(maior-menor+1)+menor;
33- cout<<"\nO Codigo do cliente eh: "<<aleatorio;
}
void inserir_inicio(){
lista p=inicio;
p = new cliente;
if(listavazia()){
gerar_codigo();
p->codigo = aleatorio;
p->prox = NULL;
inicio = p;
}else if(!listavazia()){
gerar_codigo();
p->codigo = aleatorio;
p->prox = inicio;
inicio = p;
}
}
void inserir_final(){
lista p=inicio, aux=inicio;
p = new cliente;
if(listavazia()){
gerar_codigo();
p->codigo = aleatorio;
p->prox = NULL;
inicio = p;
}else if(!listavazia()){
gerar_codigo();
p->codigo = aleatorio;
p->prox = NULL;
while(aux->prox!=NULL){
aux = aux->prox;
}
p->prox = NULL;
aux->prox = p;
}
}
void inserir_cliente(){
lista p=inicio;
p = new cliente;
if(listavazia()){
cout<<"\n\nAinda nao ha clientes!";
gerar_codigo();
p->codigo = aleatorio;
p->prox = NULL;
inicio = p;
}else if(!listavazia()){
int op;
do{
switch(op){
case 1: inserir_inicio();
break;
case 2: inserir_final();
break;
}
}while(op!=0);
}
}
void inserir_produto(){
lista p=inicio, lista2 p2;
int codigo_aux;
p2 = new comanda;
if(listavazia()){
cout<<"\n\nA lista esta vazia";
}else if(!listavazia()){
while(p!=NULL){
cout<<"\n\nQual o codigo do cliente? ";
cin>>codigo_aux;
if(codigo_aux == p->codigo){
cout<<"\n\nQual o valor do produto a ser pedido? ";
cin>>p2->preco;
}else if(codigo_aux!=p->codigo){
p = p->prox;
}
}
}
}
void menu(int op){
int op;
do{
cout<<"\t\t----MENU----\n\n";
cout<<"--1--Inserir cliente.\n\n";
cout<<"--2--Inserir produto na comanda.\n\n";
cout<<"--0--Sair.\n\n";
switch(op){
case 1: inserir_cliente();
break;
case 2: inserir_produto();
break;
}
} while(op!=0);
}
int main(){
int op;
menu(op);
}
Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
Instalar e Configurar o Slackware Linux em 2025
Como configurar os repositórios do apt no Debian 12 em 2025
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Muitas dificuldades ao instalar distro Linux em Notebook Sony Vaio PCG-6131L (VPCEA24FM)
Slackpkg+ (Slackpkg Plus) está de volta!
Como dividir duas janelas igualmente e lado-a-lado na sua tela
Configurando o Conky para iniciar corretamente no sistema
3 configurações básicas que podem melhorar muito a sua edição pelo editor nano
Minha rede tem um espaço invisível que não dá pra digitar o nome da re... (1)
Pedagogia no brasil não passa de alfabetização por m4sturbação mental ... (2)
compilação samba 4.22 rock linux 9.5 (3)
Erro de segmentação «Segmentation fault (core dumped)» ao retornar obj... (7)