Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- typedef struct {
- char parenthesis[255];
- int quantity;
- } parenthesis_list;
- /**
- * Adiciona um novo parentese de abertura que foi encontrado à lista
- */
- void push_parenthesis_list(parenthesis_list *list)
- {
- // Incrementa a lista de quantidade e atribui o caractere
- list->parenthesis[list->quantity++] = '(';
- }
- /**
- * Remove um parentese de abertura existente da lista
- */
- void pop_parenthesis_list(parenthesis_list *list)
- {
- // Decrementa a lista de quantidade e atribui nulo
- list->parenthesis[list->quantity--] = 0;
- }
- /**
- * Carrega a estrutura contando os parenteses
- */
- void populate_parenthesis_list(parenthesis_list *list, char inserted_string[])
- {
- int i;
- for (i = 0; i < strlen(inserted_string); i++) {
- switch (inserted_string[i]) {
- case '(':
- // Encontrou parentese de abertura
- push_parenthesis_list(list);
- break;
- case ')':
- // Encontrou parentese de fechamento
- pop_parenthesis_list(list);
- break;
- }
- }
- }
- /**
- * Retorna o resultado da parentização da expressão na lista
- */
- int parenthetical_status(parenthesis_list *list)
- {
- if (list->quantity == 0) {
- // Se a quantidade de parenteses abertos é igual a quantidade de perenteses fechados
- return 0;
- } else if (list->quantity < 0) {
- // Se a quantidade de parenteses abertos é menor que a quantidade de parenteses fechados
- return -1;
- } else if (list->quantity > 0) {
- // Se a quantidade de parenteses fechados é menor que a quantidade de parenteses abertos
- return 1;
- }
- return 0;
- }
- int main()
- {
- parenthesis_list paren_list = {0};
- char inserted_string[255] = {0};
- puts("Insira a expressao com parenteses: ");
- gets(inserted_string);
- puts("-----");
- populate_parenthesis_list(&paren_list, inserted_string);
- puts("Resultado: ");
- switch (parenthetical_status(&paren_list)) {
- case 0:
- puts("Parentizacao esta correta.");
- break;
- case 1:
- puts("Ha mais parenteses abrindo do que fechando.");
- break;
- case -1:
- puts("Ha mais parenteses fechando do que abrindo.");
- break;
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment