Página principal   Lista de namespaces   Hierarquia de classes   Lista de componentes   Lista de ficheiros   Componentes   Declarações  

teste.C

Ir para a documentação deste ficheiro.
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     // Mapa para guardar definições de constantes:
00019     map<string, double> constantes;
00020 
00021     // Definições de algumas constantes:
00022     constantes["pi"] = atan2(1.0, 0.0) * 2.0;;
00023     constantes["e"] = exp(1.0);
00024 
00025     // Mapa para guardar definições de funções:
00026     map<string, Funcao> funcoes;
00027 
00028     // Definições de funções:
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     // (*) Esta função recursiva não funciona!  Deve passar a funcionar quando a
00038     // análise gramatical for separada do cálculo.
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 }

Gerado em Mon Apr 15 15:57:08 2002 para Calculo por doxygen1.2.6 escrito por Dimitri van Heesch, © 1997-2001