Guest User

Untitled

a guest
Mar 22nd, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.25 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. typedef struct {
  6. char parenthesis[255];
  7. int quantity;
  8. } parenthesis_list;
  9.  
  10.  
  11. /**
  12. * Adiciona um novo parentese de abertura que foi encontrado à lista
  13. */
  14. void push_parenthesis_list(parenthesis_list *list)
  15. {
  16. // Incrementa a lista de quantidade e atribui o caractere
  17. list->parenthesis[list->quantity++] = '(';
  18. }
  19.  
  20. /**
  21. * Remove um parentese de abertura existente da lista
  22. */
  23. void pop_parenthesis_list(parenthesis_list *list)
  24. {
  25. // Decrementa a lista de quantidade e atribui nulo
  26. list->parenthesis[list->quantity--] = 0;
  27. }
  28.  
  29. /**
  30. * Carrega a estrutura contando os parenteses
  31. */
  32. void populate_parenthesis_list(parenthesis_list *list, char inserted_string[])
  33. {
  34. int i;
  35.  
  36. for (i = 0; i < strlen(inserted_string); i++) {
  37. switch (inserted_string[i]) {
  38. case '(':
  39. // Encontrou parentese de abertura
  40. push_parenthesis_list(list);
  41. break;
  42. case ')':
  43. // Encontrou parentese de fechamento
  44. pop_parenthesis_list(list);
  45. break;
  46. }
  47. }
  48. }
  49.  
  50. /**
  51. * Retorna o resultado da parentização da expressão na lista
  52. */
  53. int parenthetical_status(parenthesis_list *list)
  54. {
  55. if (list->quantity == 0) {
  56. // Se a quantidade de parenteses abertos é igual a quantidade de perenteses fechados
  57. return 0;
  58. } else if (list->quantity < 0) {
  59. // Se a quantidade de parenteses abertos é menor que a quantidade de parenteses fechados
  60. return -1;
  61. } else if (list->quantity > 0) {
  62. // Se a quantidade de parenteses fechados é menor que a quantidade de parenteses abertos
  63. return 1;
  64. }
  65.  
  66. return 0;
  67. }
  68.  
  69. int main()
  70. {
  71. parenthesis_list paren_list = {0};
  72. char inserted_string[255] = {0};
  73.  
  74. puts("Insira a expressao com parenteses: ");
  75. gets(inserted_string);
  76. puts("-----");
  77.  
  78. populate_parenthesis_list(&paren_list, inserted_string);
  79.  
  80. puts("Resultado: ");
  81.  
  82. switch (parenthetical_status(&paren_list)) {
  83. case 0:
  84. puts("Parentizacao esta correta.");
  85. break;
  86. case 1:
  87. puts("Ha mais parenteses abrindo do que fechando.");
  88. break;
  89. case -1:
  90. puts("Ha mais parenteses fechando do que abrindo.");
  91. break;
  92. }
  93.  
  94. return 0;
  95. }
Add Comment
Please, Sign In to add comment