Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #include <windows.h>
- #define maxtam 10
- using namespace std;
- typedef struct { // Definimos a estrutura de pilha
- int pratos[maxtam];
- int topo;
- } TPilha;
- void TPilha_inicia (TPilha *p){ //Iniciamos a pilha com ponteiro pra retornar pra main
- p->topo = -1; //Iniciamos em -1 para deixar a pilha vazia
- }
- int TPilha_vazia(TPilha *p){ //Definimos uma função que recebera a pilha
- if(p->topo == -1){ //Verifica se o topo está vazio "-1"
- return 1; // Sim = Retorna 1
- }
- else {
- return 0; //Não = Retorna 2
- }
- }
- int TPilha_cheia(TPilha *p){ // Criamos uma função que recebe a pilha como parametro em ponteiro
- if(p->topo == maxtam-1){ // Verificamos se o topo estiver cheio "tamanho max - 1" ;
- return 1; // Sim = Retorna 1
- }
- else{
- return 0; // Não = Retorna 2
- }
- }
- int TPilha_removetudo(TPilha *p){ //Definimos função que remove valor
- int aux, i=0;
- cout<<"Maquina Cheia! Removendo pratos!"<<endl;
- for(i=0;i<10;i++){
- aux = p->pratos[p->topo]; // Se nao tiver guarda o valor a ser retirado
- p->topo--; // Tira o topo
- cout<<"Prato "<<i+1<<" removido! "<<endl;
- Sleep(500);
- }
- }
- void TPilha_inserir(TPilha *p , int x){ //Passamos a pilha como referencia e um valor
- if(TPilha_cheia(p)==1){ // Verificamos se a mesma está cheia
- system("cls");
- cout<<"Erro: Maquina cheia"<<endl; // Se estiver imprime mensagem
- }
- else{ //Caso contrario soma o topo e atribui o valor de x no vetor
- p->topo++;
- p->pratos[p->topo]= x;
- cout<<"Prato Inserido!!"<<endl;
- if(p->topo==(maxtam-1)){
- TPilha_removetudo(p);
- }
- Sleep(500);
- system("cls");
- }
- }
- int TPilha_remove(TPilha *p){ //Definimos função que remove valor
- int aux;
- if(TPilha_vazia(p)==1){ //Verifica se a pilha esta vazia
- cout<<"Erro: Maquina Vazia"<<endl;
- Sleep(500);
- system("cls");
- }
- else{
- aux = p->pratos[p->topo]; // Se nao tiver guarda o valor a ser retirado
- p->topo--; // Tira o topo
- cout<<"Prato removido: "<<endl;
- Sleep(500);
- system("cls");
- }
- return aux; //Retorna o valor retirado!
- }
- void TPilha_inserirbloco(TPilha *p , int qt){ //Passamos a pilha como referencia e um valor
- if(TPilha_cheia(p)==1){ // Verificamos se a mesma está cheia
- cout<<"Erro: Maquina cheia"<<endl; // Se estiver imprime mensagem
- }
- else{ //Caso contrario soma o topo e atribui o valor de x no vetor
- int i=0;
- for(i=0;i<qt;i++){
- p->topo++;
- p->pratos[p->topo]= 1;
- cout<<"Prato Inserido!!"<<endl;
- Sleep(500);
- if(p->topo==9){
- TPilha_removetudo(p);
- }
- }
- }
- system("cls");
- }
- void TPilha_removebloco(TPilha *p, int valor){ //Definimos função que remove valor
- int calc=0, i=0, tp=0;
- tp=p->topo;
- calc=((tp+1)-valor);
- if(calc<0){
- cout<<"Quantidade maior do que a atual na maquina!"<<endl;
- system("pause");
- }
- else{
- for(i=0;i<valor;i++){
- p->topo--; // Tira o topo
- cout<<"Prato removido!"<<endl;
- Sleep(500);
- }
- system("cls");
- }
- }
- int menu(){
- int x;
- cout<<"Bem vindo a maquina automatica BrasTemp"<<endl;
- cout<<"--Digite 1 para inserir um prato"<<endl;
- cout<<"--Digite 2 para remover um prato"<<endl;
- cout<<"--Digite 3 para empilhar bloco de pratos"<<endl;
- cout<<"--Digite 4 para remover um bloco de pratos"<<endl;
- cout<<"--Digite 5 para sair do programa"<<endl;
- cout<<"-----------------------------------------..."<<endl;
- cin>>x;
- return x;
- }
- int main(int argc, char** argv)
- {
- TPilha p; //Define a pilha;
- TPilha_inicia(&p); //Chama a pilha inicia e manda o enderçeo da pilha como parametro
- int valor=1;
- while(1){
- int mn=menu();
- if(mn==1){
- TPilha_inserir(&p , valor );
- }
- if(mn==2){
- TPilha_remove(&p);
- }
- if(mn==3){
- cout<<"Digite a quantidade a ser inserida na maquina:"<<endl;
- int qt=0;
- cin>>qt;
- TPilha_inserirbloco(&p, qt);
- }
- if(mn==4){
- cout<<"Digite a quantidade a ser removida da maquina:"<<endl;
- int qnt=0;
- cin>>qnt;
- TPilha_removebloco(&p, qnt);
- }
- if(mn==5){
- return 0;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement