static void Main(string[] args) { /* Interpreter * Usado para avaliar uma arvore de Expressoes * * EXEMPLO COM UMA EXPRESSAO MATEMATICA: * * ( 2 + 30 ) + ( 35 - 15) + + - + 2 e 30 35 e 15 + (Resultado: 32) (Resultado: 20) + */ IExpressao esquerda; IExpressao direita; IExpressao soma; esquerda = new Soma(new Numero(2), new Numero(30)); // ( 2 + 30 ) = 32 direita = new Subtracao(new Numero(35), new Numero(15)); // ( 35 - 15 ) = 20 soma = new Soma(esquerda, direita); // ( 32 ) + ( 20 ) Console.WriteLine($" ( 2 + 30 ) + ( 35 - 15 ) = {soma.Avaliar()}"); Console.WriteLine(); // AUMENTANDO A COMPLEXIDADE // ( ( ( 2 + 20 ) + ( 20 - 10 ) ) * 4 ) / 2 esquerda = new Soma(new Numero(2), new Numero(20)); direita = new Subtracao(new Numero(20), new Numero(10)); soma = new Soma(esquerda, direita); // (2 + 20) + (20 - 10) = 32 IExpressao multiplicao = new Multiplicao(soma, new Numero(4)); // 32 * 4 IExpressao divisao = new Divisao(multiplicao, new Numero(2)); // ( 32 * 4 ) / 2 Console.WriteLine($" ( ( ( 2 + 20 ) + ( 20 - 10 ) ) * 4 ) / 2 = {divisao.Avaliar()}"); Console.ReadKey(); }
public static void Main(string[] args) { // (1+2) + (20-10) var esquerda = new Soma(new Numero(1), new Numero(2)); var direita = new Subtracao(new Numero(20), new Numero(10)); var soma = new Soma(direita, esquerda); Console.WriteLine(soma.Avalia()); Console.ReadKey(); //nativo c# var expression = Expression.Divide(Expression.Constant(10m), Expression.Constant(2m)); var funcao = Expression.Lambda <Func <decimal> >(expression).Compile(); //Console.WriteLine(funcao()); //Console.ReadKey(); }
static void Main(string[] args) { // A(5) = (5+5) - 5 Expressao A = new Subtracao(new Soma(new Numero(5), new Numero(5)), new Numero(5)); //B(5) = 10 - 5 Expressao B = new Subtracao(new Numero(10), new Numero(5)); //conta(10) = Raiz( (5+5) ) Expressao conta = new Soma(B, A); Visitor visitor = new Impressora(); conta.aceita(visitor); /*double resultado = new RaizQuadrada(new Soma(B, A)).avalia(); * * Console.WriteLine(resultado);*/ }
static void Main(string[] args) { Console.WriteLine("Resolvendo a expressão (2 + 3) - 2 = 3"); var soma = new Soma(new Numero(2), new Numero(3)); var substracao = new Subtracao(soma, new Numero(2)); Console.WriteLine("Resultado: {0}", substracao.Avalia()); Console.WriteLine("Resolvendo a expresao ((4 * 10) / (1 + 1)) = 20"); var multiplicacao = new Multiplicacao(new Numero(4), new Numero(10)); soma = new Soma(new Numero(1), new Numero(1)); var divisao = new Divisao(multiplicacao, soma); Console.WriteLine("Resultado: {0}", divisao.Avalia()); Console.WriteLine("Resolvendo raiz quadrada de 8 + 10 = 12.8284"); var raizquadrada = new RaizQuadrada(new Numero(8)); soma = new Soma(raizquadrada, new Numero(10)); Console.WriteLine("Resultado: {0}", soma.Avalia()); }