00001 #include <cmath>
00002 #include <map>
00003 #include <string>
00004 #include <vector>
00005 #include <iostream>
00006
00007 using namespace std;
00008
00009 #include "funcao.H"
00010 #include "formula.H"
00011
00012 using namespace Calculo;
00013
00016 int main()
00017 {
00018
00019 map<string, double> constantes;
00020
00021
00022 constantes["pi"] = atan2(1.0, 0.0) * 2.0;;
00023 constantes["e"] = exp(1.0);
00024
00025
00026 map<string, Funcao> funcoes;
00027
00028
00029 funcoes["pi"] = Funcao(vector<string>(), "%pi");
00030 funcoes["factorial"] = Funcao(vector<string>(1, "n"),
00031 "%n == 0 ? 1 : %n * factorial(%n - 1)");
00032 funcoes["tangente"] = Funcao(vector<string>(1, "a"), "sen(%a) / cos(%a)");
00033 vector<string> arg2;
00034 arg2.push_back("a");
00035 arg2.push_back("b");
00036 funcoes["max"] = Funcao(arg2, "%a > %b ? %a : %b");
00037
00038
00039
00040 while(true) {
00041 cout << "Introduza uma formula (vazia para terminar): ";
00042 string formula;
00043 getline(cin, formula);
00044 if(formula == "")
00045 return 0;
00046 try {
00047 cout << formula << " = "
00048 << Formula(formula).valor(constantes, funcoes) << endl;
00049 } catch(Erros::Erro& erro) {
00050 cerr << string(erro) << endl;
00051 }
00052 };
00053 }