Solução por João Guilherme
Temos um problema clássico, o que precisamos checar são apenas duas condições: a primeira é se o número de parênteses abertos foi sempre maior que fechados e a segundo é se no final o número de fechados e abertos são iguais. Para checar isso usamos 2 variáveis para guardar a quantidade de parênteses abertos e fechados e outra para guardar se em algum momento o número de fechados foi maior que abertos, então lemos a entrada e para cada letra dela checamos se é um ( ou ), se for um deles modificamos a variável de acordo e checamos se o número de abertos é maior que o de fechados. Por fim imprimimos de acordo.
Segue o código para melhor entendimento.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <cstdio> | |
#include <cstdlib> | |
#include <cmath> | |
int main(){ | |
char a; | |
while(scanf(" %c", &a)!=EOF){ | |
int cor = 1 ,par=0, clospar=0; | |
while(1){ | |
if (a=='(') par++; | |
else if (a==')') clospar++; | |
if (clospar > par) cor = 0; | |
a=getchar(); | |
if(a=='\n'){ | |
break; | |
} | |
} | |
if(par == clospar && cor) printf("correct\n"); | |
else printf("incorrect\n"); | |
} | |
return 0; | |
} |