Pessoal, tenho o seguinte código que retorna o resultado de uma expressão numérica a partir de uma string. O meu problema é que o código não trabalha com valores double, apenas inteiros. Alguém sabe como fazer o código identificar valores double?
#ifndef AVALIAR_H
#define AVALIAR_H
using namespace std;
namespace matematica {
class Avaliar {
private:
char* expressao;
public:
Avaliar(char* expressao) {
this->expressao = expressao;
}
char get_expressao() {
return *this->expressao;
}
char get() {
return *this->expressao++;
}
double numero() {
double resultado = get()-'0';
while (get_expressao() >= '0' && get_expressao() <= '9') {
resultado = 10*resultado+get()-'0';
}
return resultado;
}
double fator() {
if (get_expressao() >= '0' && get_expressao() <= '9') {
return numero();
} else if (get_expressao() == '(') {
get();
double resultado = valor_expressao();
get();
return resultado;
} else if (get_expressao() == '-') {
get();
return -fator();
}
return 0;
}
double termo() {
double resultado = fator();
while (get_expressao() == '*' || get_expressao() == '/') {
if (get() == '*') {
resultado *= fator();
} else {
resultado /= fator();
}
}
return resultado;
}
double valor_expressao() {
double resultado = termo();
while (get_expressao() == '+' || get_expressao() == '-') {
if (get() == '+') {
resultado += termo();
} else {
resultado -= termo();
}
}
return resultado;
}
double resultado() {
return valor_expressao();
}
};
}
#endif