Solução Balanço de Parênteses I

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.


#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;
}