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 quantos pares são válidos de acordo com as regras e não se a expressão toda está
correta.
Soluções para a tarefa
Respondido por
0
Eu faria assim
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
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
Perguntas interessantes
Português,
8 meses atrás
Matemática,
8 meses atrás
História,
8 meses atrás
Geografia,
1 ano atrás
Contabilidade,
1 ano atrás
Matemática,
1 ano atrás
Matemática,
1 ano atrás
Física,
1 ano atrás