SHARE
TWEET

MAPAEDI

MarcoScofield3 May 26th, 2019 343 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <locale.h>
  3. #define TAMANHO_PILHA 5
  4. #define TAMANHO_TEXTO 20
  5. #define PID_MAXSIZE 5
  6. struct pilha
  7. {
  8.     char pilhaa[TAMANHO_PILHA][TAMANHO_TEXTO];
  9.     int pid[TAMANHO_PILHA];
  10.     int top;
  11. };
  12. typedef struct pilha PILHA;
  13. PILHA p;
  14.  
  15. void push(void);
  16. void  pop(void);
  17. void display(void);
  18.  
  19. int main ()
  20. {
  21.     setlocale(LC_ALL,"PORTUGUESE");  
  22.     p.top = -1;    
  23.     menu();
  24.      
  25.     return 0;
  26. }
  27. /* Função para adicionar um elemento à pilha */
  28. void push()
  29. {
  30.     char value[TAMANHO_TEXTO];
  31.      int i;
  32.      int vpid[PID_MAXSIZE];
  33.    
  34.     if (p.top == (TAMANHO_PILHA - 1))
  35.     {
  36.         printf ("\nPilha cheia, impossível empilhar mais elementos.\n");
  37.         system("PAUSE");
  38.         return;
  39.     }
  40.     else
  41.     {
  42.         printf ("\nEntre com o nome do processo: ");
  43.         scanf ("%s", value);       
  44.         p.top = p.top + 1;        
  45.         for (i=0; i < TAMANHO_TEXTO; i++) {        
  46.           p.pilhaa[p.top][i] = value[i];
  47.           p.pid[p.top] = p.top + 1000;        
  48.           if(value[i] == '\0') break;          
  49.         }      
  50.     }
  51. }
  52.  
  53. //Menu
  54. void menu(){
  55.     char op;
  56.      do{
  57.        
  58.        system("cls");
  59.        display();
  60.        printf ("\n");
  61.        printf ("-------------------------------------------\n");
  62.        printf (" MARCOS ANTONIO RAMOS - ADS - 2017\n");
  63.        printf (" (43) 98802-7403 \n");
  64.        printf("O complexo não passa de um amontoado de coisas fáceis mal interpretadas.\n");
  65.        printf ("-------------------------------------------\n");
  66.        printf (" MAPA ESTRUTURA DE DADOS I");
  67.        printf ("\n(1)Inserir um elemento na pilha\n");
  68.        printf ("(2)Remover um elemento na pilha\n");
  69.        printf ("(3)Esvaziar a pilha\n");
  70.        printf ("(0)Sair do Programa\n\n");
  71.        printf ("Digite a opcao: ");
  72.        op=toupper(getche());
  73.        switch(op){
  74.                   case'1':
  75.                   push();                              
  76.                   break;
  77.                   case'2':  
  78.                   pop();                 
  79.                   break;
  80.                   case'3':esvazia();
  81.                   break;
  82.                   case'0': exit(0);
  83.                   default: printf ("\n\nOpcao invalida, digite novamente.\n\n");
  84.                   system("PAUSE");
  85.                   }  
  86.    }while (op!='S');   
  87. }
  88. /* Função para excluir um elemento da pilha */
  89. void pop()
  90. {
  91.     char num[TAMANHO_TEXTO];
  92.     if (p.top == - 1)
  93.     {
  94.         printf ("\nPilha vazia, impossível desempilhar elementos.\n");
  95.         system("PAUSE");
  96.     }
  97.     else
  98.     {
  99.         printf ("\n O PID: %d - NOME: %s foi removido.\n",p.pid[p.top], p.pilhaa[p.top]);
  100.         system("PAUSE");
  101.         p.top = p.top - 1;
  102.     }
  103. }
  104. void esvazia(){
  105. char num[TAMANHO_TEXTO];
  106.     if (p.top == - 1)
  107.     {
  108.         printf ("\nPilha vazia, impossível desempilhar elementos.\n");
  109.         system("PAUSE");
  110.     }
  111.     else
  112.     {      
  113.      while(p.top != - 1)
  114.      {  
  115.         p.top = p.top - 1;
  116.      }
  117.         printf ("\nPilha esvaziada com sucesso!.\n\n");
  118.         system("PAUSE");
  119.     }
  120. }
  121.  
  122. /* Função para exibir o status da pilha */
  123. void display()
  124. {
  125.     int i;
  126.     if (p.top == -1)
  127.     {
  128.        // printf ("Estado Atual da Pilha: Vazia\n");
  129.         return;
  130.     }
  131.     else
  132.     {
  133.         printf ("--------------------------------\n");
  134.         printf ("    PID    :      Nome\n");
  135.         printf ("--------------------------------\n");
  136.         for (i = p.top; i >= 0; i--)
  137.         {
  138.            
  139.          printf ("    %d   :     %s\n",p.pid[i],p.pilhaa[i]);          
  140.         }      
  141.     }
  142.     printf ("\n");
  143. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top