Considere uma expressão aritmética qualquer com parênteses. Um dos indicativos de erro na definição da
expressão é o balanceamento dos parênteses. Para uma expressão estar balanceada quanto aos parênteses
algumas regras devem ser seguidas. Por exemplo, todo parênteses que fecha deve ter um outro parênteses
correspondente que abre. Não pode haver parênteses que fecha sem um prévio parênteses que abre e a
quantidade total de parênteses que abre deve ser igual a quantidade que fecha.
Sua tarefa: Escreva um algoritmo que leia uma expressão com no máximo 80 caracteres e conte quantos
pares abre-fecha parênteses estão validamente definidos, conforme as regras acima. Observe que pares de
parênteses podem estar aninhados dentro de outros pares. Importante: só os caracteres abre e fecha
parênteses devem ser analisados, o restante da expressão não deve ser considerado. Note que estamos
interessados em saber qu
Soluções para a tarefa
Respondido por
1
cadeia[80] de caracter
leia cadeia[]
conta_abres = 0 // quantos abre parenteses abertos
conta_pares = 0 // quantos pares encontrados
conta_erros = 0 // quantos pares com erro
para i = 1 até tam(cadeia) faça // vamos varrer a cadeia
pedaco = cadeia[i] // pegamos o i-ésimo caracter da cadeia
se pedaco = "(" então // se for um "(" abriu um parenteses
conta_abres = conta_abres +1 // contamos mais um aberto
senaose pedaco = ")" // se for um ")" vamos fechar os parenteses
se conta_abres > 0 então // mas só se tiver pelo menos 1 aberto
conta_pares = conta_pares + 1 // contamos mais um par
conta_abres = conta_abres -1 // menos um aberto
senao // não tinha parentese aberto, então é erro
conta_erros = conta_erros +1
fim-se
fim-se
fim-para
se conta_abres > 0 então // sobrou algum aberto ?
conta_erros = conta_erros+1 // sim! então é erro
fim-se
// exibir os resultados
Imprima "Total de pares válidos encontrados", conta_pares
Imprima "total de erros encontrados", conta_erros
leia cadeia[]
conta_abres = 0 // quantos abre parenteses abertos
conta_pares = 0 // quantos pares encontrados
conta_erros = 0 // quantos pares com erro
para i = 1 até tam(cadeia) faça // vamos varrer a cadeia
pedaco = cadeia[i] // pegamos o i-ésimo caracter da cadeia
se pedaco = "(" então // se for um "(" abriu um parenteses
conta_abres = conta_abres +1 // contamos mais um aberto
senaose pedaco = ")" // se for um ")" vamos fechar os parenteses
se conta_abres > 0 então // mas só se tiver pelo menos 1 aberto
conta_pares = conta_pares + 1 // contamos mais um par
conta_abres = conta_abres -1 // menos um aberto
senao // não tinha parentese aberto, então é erro
conta_erros = conta_erros +1
fim-se
fim-se
fim-para
se conta_abres > 0 então // sobrou algum aberto ?
conta_erros = conta_erros+1 // sim! então é erro
fim-se
// exibir os resultados
Imprima "Total de pares válidos encontrados", conta_pares
Imprima "total de erros encontrados", conta_erros
Perguntas interessantes