Quello che stai cercando di costruire è un parser di espressioni, documentati in rete, c'è un sacco di materiale in proposito; in particolare, per i tuoi scopi potrebbe andare bene un parser a discesa ricorsiva (recursive descent parser), relativamente semplice da implementare e dal funzionamento chiaro.

Un appunto al volo sul codice: quando scrivi cose di questo genere:
codice:
if( (funzione[b]>=48)&&(funzione[b]<=57) ) { // 48 = codice ASCII 0 , 57 = codice ASCII 9
puoi più semplicemente scrivere
codice:
if( (funzione[b]>='0')&&(funzione[b]<='9') ) {
che ha il vantaggio di essere portabile e più chiara, o anche meglio,
codice:
if(isnum(funzione[b])) {
con isnum dall'header <cctype>.

Per inciso, il linguaggio di riferimento va specificato nel titolo come "tag", qui aggiusto io.