Advertisement
argentinapb

Untitled

May 2nd, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.47 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4.  
  5. #define max 5 //Altere o valor de max para controlar o numero de letras que o vetor terá;
  6.  
  7. struct Pilha{
  8. char letra[max];
  9. int topo;
  10. };
  11.  
  12. struct Letra{
  13. int cont[max];
  14. char c[max];
  15. };
  16.  
  17. typedef struct Pilha pilha;
  18. typedef struct Letra letr;
  19.  
  20. void menu(){
  21. printf("------------------------ MENU -----------------------\n");
  22. printf("| 1 para adcionar uma letra |\n");
  23. printf("| 2 para excluir uma letra |\n");
  24. printf("| 3 para exibir as letras cadastradas |\n");
  25. printf("| 4 para exibir a quantidade de movimentos |\n");
  26. printf("| 5 para sair |\n");
  27. printf("-----------------------------------------------------\n\n-->");
  28. }
  29.  
  30. void inicia(pilha *p, letr *l){
  31. for(int i = 0; i < max; i++){
  32. l->cont[i] = 0;
  33. p->letra[i] = 0;
  34. }
  35. }
  36.  
  37. void push(pilha *p, char x ){
  38.  
  39. if(p->topo < 0)
  40. p->topo = 0;
  41.  
  42. p->letra[p->topo] = x;
  43. p->topo = p->topo +1;
  44. }
  45.  
  46. char pop(pilha *p){
  47.  
  48. char y;
  49. y = p->letra[p->topo-1];
  50. p->topo = p->topo - 1;
  51.  
  52. return y;
  53. }
  54.  
  55. void show(pilha *p){
  56.  
  57. pilha p2;
  58. p2.topo = 0;
  59. int y;
  60.  
  61.  
  62.  
  63. printf("Valores contidos na pilha : \n\n");
  64. while(p->topo > 0){
  65. y = pop(p);
  66. push(&p2, y);
  67. }
  68. while(p2.topo > 0){
  69. y = pop(&p2);
  70. push(p, y);
  71. printf(" |%c|\n", p->letra[p->topo-1]);
  72. }
  73. printf("\n");
  74. printf("*Observacao: estamos printando a fila de forma invertida para melhor visualizacao*\n");
  75. }
  76.  
  77. void cont(letr *l, char x){
  78.  
  79. for(int i = 0; i < max ; i++){
  80. if(l->c[i] == x)
  81. l->cont[i]++;
  82. }
  83. }
  84.  
  85.  
  86. void pushO(char x, pilha *p, letr *l, int count ){
  87.  
  88.  
  89. char y;
  90. int k = 0;
  91. pilha aux;
  92. aux.topo = 0;
  93.  
  94. if(p->topo == max){
  95. printf("A pilha ja esta cheia!\n");
  96. return;
  97. }
  98. if(p->topo == 0){
  99. push(p, x);
  100. cont(l, x);
  101. }
  102. else{
  103. for(int i = 0; i < p->topo; i++){
  104. while(k < count){
  105. if(p->letra[p->topo-1] > x){
  106. y = pop(p);
  107. cont(l, y);
  108. push(&aux, y);
  109. }
  110. k++;
  111. }
  112. }
  113. push(p, x);
  114. cont(l, x);
  115.  
  116.  
  117. while(aux.topo > 0){
  118. y = pop(&aux);
  119. push(p, y);
  120. cont(l, y);
  121. }
  122.  
  123. }
  124. }
  125.  
  126. void popE(pilha *p, letr *l, char x){
  127.  
  128. pilha aux;
  129. aux.topo = 0;
  130.  
  131. int z, count = 0;
  132.  
  133. if(p->topo == 0)
  134. printf("A pilha esta vazia!\n");
  135. else{
  136. while(p->letra[p->topo-1] != x && p->topo > 0){
  137. z = pop(p);
  138. cont(l, z);
  139. count++;
  140. p
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement