Thiago Adams,
O bom de analisar os seus algoritmos é verificar os seus links que mostram outras ferramentas interessantes que existem na internet.
Parece ser bacana esse site que você usou para demonstrar/ilustrar a sua solução. Vou ver com mais paciencia esse site
Mas ficou uma dúvida: Não apareceu o símbolo ' ^ ' para mostrar a posição que falta fechar o parênteses, mesmo clicando no link que
você forneceu.
Seria erro de formatação do output gerado pelo site ou algum erro no algoritmo que você forneceu como resposta ?
Outra dúvida:
Seria válido na sua opinião encerrar o processamento do algoritmo quando encontra o caractere ";" ao invés de encerrar apenas quando
encontra o "\0" ?
Suponha que seja passado a string abaixo:
"x = a[0] * (a[1] + a[2];)";
O seu algoritmo iria encontrar o parênteses que foi aberto após o caractere de multiplicação. Certo? Mas acho que a expressão em si estaria errada porque o
ponto e vírgula indica fim de instrução.
De qualquer forma é interessante essa abordagem usando funções recursivas. Para avaliação de pequenas cadeias de expressão, realmente é uma boa abordagem.
Sinceramente pensei num primeiro momento na abordagem usada pelo Fábio, que usa o conceito de pilha e um loop central. Como boa parte da minha experiência vem
de sistemas embutidos, fui orientado a nunca usar funções recursivas devido ao consumo de pilha gerado pela execução de chamadas recursivas.
Mas no geral ambas soluções, a do Fábio como a do Thiago, são boas.
Fui