Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2019
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.29 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #include <windows.h>
  3. #define maxtam 10
  4. using namespace std;
  5.  
  6.  
  7. typedef struct {             // Definimos a estrutura de pilha
  8.     int pratos[maxtam];
  9.     int topo;
  10. } TPilha;
  11.  
  12. void TPilha_inicia (TPilha *p){    //Iniciamos a pilha com ponteiro pra retornar pra main
  13.      p->topo = -1;  //Iniciamos em -1 para deixar a pilha vazia
  14. }
  15.  
  16.  
  17. int TPilha_vazia(TPilha *p){   //Definimos uma função que recebera a pilha
  18.     if(p->topo == -1){      //Verifica se o topo está vazio "-1"
  19.         return 1;         // Sim = Retorna 1
  20.     }
  21.     else {
  22.         return 0;         //Não = Retorna 2
  23.     }
  24. }
  25.  
  26. int TPilha_cheia(TPilha *p){   // Criamos uma função que recebe a pilha como parametro em ponteiro
  27.     if(p->topo == maxtam-1){    // Verificamos se o topo estiver cheio "tamanho max - 1" ;
  28.         return 1;    // Sim = Retorna 1
  29.     }
  30.     else{
  31.         return 0;    // Não = Retorna 2
  32.     }
  33. }
  34.  
  35.  
  36. int TPilha_removetudo(TPilha *p){          //Definimos função que remove valor
  37.     int aux, i=0;
  38.     cout<<"Maquina Cheia! Removendo pratos!"<<endl;
  39.     for(i=0;i<10;i++){        
  40.                                      
  41.     aux = p->pratos[p->topo];           // Se nao tiver guarda o valor a ser retirado
  42.     p->topo--;  // Tira o topo
  43.     cout<<"Prato "<<i+1<<" removido! "<<endl;
  44.     Sleep(500);
  45.        
  46.             }
  47. }
  48.  
  49.  
  50. void TPilha_inserir(TPilha *p , int x){  //Passamos a pilha como referencia e um valor
  51.     if(TPilha_cheia(p)==1){  // Verificamos se a mesma está cheia
  52.         system("cls");
  53.         cout<<"Erro: Maquina cheia"<<endl;   // Se estiver imprime mensagem
  54.     }
  55.     else{                          //Caso contrario soma o topo e atribui o valor de x no vetor
  56.        
  57.         p->topo++;
  58.         p->pratos[p->topo]= x;
  59.         cout<<"Prato Inserido!!"<<endl;
  60.             if(p->topo==(maxtam-1)){
  61.         TPilha_removetudo(p);
  62.     }
  63.         Sleep(500);
  64.         system("cls");
  65.     }
  66. }  
  67.  
  68.  
  69. int TPilha_remove(TPilha *p){          //Definimos função que remove valor
  70.     int aux;        
  71.     if(TPilha_vazia(p)==1){  //Verifica se a pilha esta vazia
  72.        
  73.         cout<<"Erro: Maquina Vazia"<<endl;
  74.         Sleep(500);
  75.         system("cls");
  76.     }
  77.     else{                              
  78.     aux = p->pratos[p->topo];           // Se nao tiver guarda o valor a ser retirado
  79.     p->topo--;  // Tira o topo
  80.    
  81.     cout<<"Prato removido: "<<endl;
  82.     Sleep(500);
  83.     system("cls");
  84.     }
  85.     return aux;  //Retorna o valor retirado!
  86.            
  87. }
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94. void TPilha_inserirbloco(TPilha *p , int qt){  //Passamos a pilha como referencia e um valor
  95.     if(TPilha_cheia(p)==1){  // Verificamos se a mesma está cheia
  96.         cout<<"Erro: Maquina cheia"<<endl;   // Se estiver imprime mensagem
  97.     }
  98.     else{                          //Caso contrario soma o topo e atribui o valor de x no vetor
  99.         int i=0;
  100.     for(i=0;i<qt;i++){
  101.         p->topo++;
  102.         p->pratos[p->topo]= 1;
  103.         cout<<"Prato Inserido!!"<<endl;
  104.         Sleep(500);
  105.         if(p->topo==9){
  106.         TPilha_removetudo(p);
  107.         }
  108.        
  109.         }
  110.     }
  111.     system("cls");
  112. }
  113.  
  114.  
  115. void TPilha_removebloco(TPilha *p, int valor){          //Definimos função que remove valor
  116.     int calc=0, i=0, tp=0;
  117.     tp=p->topo;      
  118.     calc=((tp+1)-valor);   
  119.     if(calc<0){
  120.         cout<<"Quantidade maior do que a atual na maquina!"<<endl;
  121.         system("pause");
  122.     }
  123.     else{
  124.     for(i=0;i<valor;i++){
  125.     p->topo--;  // Tira o topo
  126.     cout<<"Prato removido!"<<endl;
  127.     Sleep(500);
  128.     }
  129.     system("cls");
  130.     }
  131.    
  132.            
  133. }
  134.  
  135.  
  136.  
  137.  
  138.  
  139. int menu(){
  140.     int x;
  141.     cout<<"Bem vindo a maquina automatica BrasTemp"<<endl;
  142.     cout<<"--Digite 1 para inserir um prato"<<endl;
  143.     cout<<"--Digite 2 para remover um prato"<<endl;
  144.     cout<<"--Digite 3 para empilhar bloco de pratos"<<endl;
  145.     cout<<"--Digite 4 para remover um bloco de pratos"<<endl;
  146.     cout<<"--Digite 5 para sair do programa"<<endl;
  147.     cout<<"-----------------------------------------..."<<endl;
  148.     cin>>x;
  149.     return x;
  150. }
  151.  
  152.  
  153.  
  154.  
  155. int main(int argc, char** argv)
  156. {
  157.    
  158.    
  159.     TPilha p;    //Define a pilha;
  160.     TPilha_inicia(&p); //Chama a pilha inicia e manda o enderçeo da pilha como parametro
  161.     int valor=1;
  162.    
  163.     while(1){
  164.         int mn=menu();
  165.     if(mn==1){
  166.         TPilha_inserir(&p , valor );
  167.     }      
  168.     if(mn==2){
  169.         TPilha_remove(&p);
  170.     }
  171.     if(mn==3){ 
  172.         cout<<"Digite a quantidade a ser inserida na maquina:"<<endl;
  173.         int qt=0;
  174.         cin>>qt;
  175.         TPilha_inserirbloco(&p, qt);
  176.     }
  177.     if(mn==4){
  178.         cout<<"Digite a quantidade a ser removida da maquina:"<<endl;
  179.         int qnt=0;
  180.         cin>>qnt;
  181.         TPilha_removebloco(&p, qnt);
  182.     }
  183.     if(mn==5){
  184.         return 0;
  185.     }
  186.     }
  187.    
  188.    
  189.    
  190.    
  191.     return 0;
  192. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement