Last active
November 12, 2016 02:39
-
-
Save Sulunia/01225657b590d622b696dfe81c96df97 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ConsoleApplication1.cpp : Defines the entry point for the console application. | |
// VISUAL STUDIO CACILDA AYY | |
#include <cstdio> | |
#include <iostream> | |
//Giovannio e poleizo -q | |
//BRINGING PAIN AND HORRIBLE CODES SINCE null | |
using namespace std; | |
typedef struct No { | |
char nome[30]; | |
int numIngresso; | |
char cpf[11]; | |
char tamCamiseta; | |
bool isCamarote; | |
struct No *prox; | |
}no; | |
no *camisas = NULL; | |
no *compras = NULL; //isso nem fila é, é uma lista mesmo (pedro) | |
no *aux; | |
no *aux2; //talvez não seja usado (pedro) | |
int isEmpty(no*p) { //Verifica se um struct ta vazio | |
if (p == NULL) { | |
cout << "Esta porra esta vazia" << endl; | |
return 1; | |
} | |
else return 0; | |
} | |
no *push(no *p, no *val) { | |
if (p == NULL) { | |
p = val; | |
} | |
else { | |
val->prox = p; | |
p = val; | |
} | |
return p; | |
} | |
no *pop(no *p) { //Remove da pilha. Se chamada com fila, remove o primeiro elemento! Cuidado! | |
if (isEmpty(p) == 1) cout << "Pilha vazia!" << endl; | |
else { | |
aux = p->prox; | |
free(p); | |
p = aux; | |
} | |
return p; | |
} | |
void printStruct(no* p) {//Imprime ou lista ou fila, depende do que foi dado | |
aux = p; | |
int sla = isEmpty(p); | |
if (sla == 0) { | |
while (aux != NULL) { | |
//SEU CÓDIGO DE PRINTING AQUI (pedro) | |
aux = aux->prox; | |
} | |
} | |
} | |
int contaStruct(no* p) { //Retorna o tamanho da pilha ou lista, dada sua origem! | |
aux = p; | |
int count = 0; | |
int sla = isEmpty(p); | |
if (sla == 0) { | |
while (aux != NULL) { | |
aux = aux->prox; | |
count += 1; | |
} | |
} | |
return count; | |
} | |
no *addFila(no *p, no *val) { | |
aux = p; | |
if (p == NULL) { | |
val->prox = NULL; | |
p = val; | |
} | |
else { | |
while (aux->prox != NULL) { | |
aux = aux->prox; | |
} | |
val->prox = NULL; | |
aux->prox = val; | |
} | |
return p; | |
} | |
no *removeFila(no *lista, int numIngresso) { //A fila na verdade é uma lista, se considerarmos que qualquer um pode retornar o ingresso | |
no* ant = NULL; | |
no* p = lista; //Essa é a implementação feita na sala, modificada pro algoritmo pedido. Minha implementação inicial morria se tentasse tirar o primeiro da lista.. (pedro) | |
while (p != NULL && p->numIngresso != numIngresso) { | |
ant = p; | |
p = p->prox; | |
} | |
if (p == NULL) | |
return lista; /* não achou: retorna lista original */ //São os comentários originais do programa | |
if (ant == NULL) { | |
/* retira elemento do inicio */ | |
lista = p->prox; | |
} | |
else { | |
/* retira elemento do meio da lista */ | |
ant->prox = p->prox; | |
} | |
//Agora vem o pulo do gato, verificamos se o cara ganhou ou não a camiseta! | |
if (p->numIngresso < 100) { | |
//Tiramos uma camiseta da pilha | |
camisas = pop(camisas); | |
//Mais uma dúvida, se o cliente 100 devolve a camiseta, o cliente 101 deve ganhá-la? Ou o próximo que comprar um ingresso após o 100 realizar a devolução? (pedro) | |
//...o que basicamente implicaria que eu poderia devolver uma camiseta a pilha pra qualquer posição, assim ela seria uma lista..? | |
} | |
free(p); //Libera o blob | |
return lista; | |
} | |
int main() | |
{ | |
int op; | |
int count = 1; | |
char nome[30]; | |
int numIngresso; | |
char cpf[11]; | |
char tamCamiseta; | |
bool isCamarote; | |
do { | |
system("cls"); | |
cout << "Show do ganz" << endl; | |
cout << "1 - Cadastrar novo criente" << endl; | |
cout << "2 - Listar clientes" << endl; | |
cout << "3 - Devolver ingresso de cliente" << endl; //Detalhe interessante: não foi informado como funciona a devolução.. (pedro) | |
cout << "Qualquer valor - Cometer harakiri" << endl; | |
cin >> op; | |
switch (op) | |
{ | |
case 1: | |
{ | |
system("cls"); | |
cout << "Nome: "; | |
cin >> nome; | |
cout << endl << "CPF(sem pontos): "; | |
cin >> cpf; | |
cout << endl << "Tamanho da camiseta: "; | |
cin >> tamCamiseta; | |
cout << endl << "Camarote? (S/N): "; | |
cin >> isCamarote; | |
//Aloca espaço | |
no *novoCliente = (no*)malloc(sizeof(no)); | |
novoCliente->cpf; //Vc precisa copiar os vetores caracter por caracter.. | |
novoCliente->nome; | |
novoCliente->tamCamiseta = tamCamiseta; | |
novoCliente->numIngresso = count; | |
count++; | |
novoCliente->isCamarote = isCamarote; | |
novoCliente->prox = NULL; | |
//Insere o cliente na fila | |
compras = addFila(compras, novoCliente); | |
if (contaStruct(camisas) < 100) { | |
camisas = push(camisas, novoCliente);//Insere o cliente que ganhou a camisa na pilha de camisas | |
} | |
cin.clear(); | |
} | |
break; | |
case 2: | |
{ | |
} | |
break; | |
case 3: | |
{ | |
} | |
break; | |
default: | |
{ | |
} | |
break; | |
} | |
} while (op >= 1 && op <= 3); | |
cout << "Fim da execucao." << endl; | |
cin.ignore(); | |
return 0; | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment