Informática, perguntado por biasantiiago6487, 1 ano atrás


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 bokomoko
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
Perguntas interessantes