예제 #1
0
        //JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET:
        //ORIGINAL LINE: public static void TesteCalcular() throws Exception
        public static void TesteCalcular()
        {
            try
            {
                // 2x^2 - 2
                Polinomio pol = new Polinomio();
                Expressao expressao = new Expressao();

                pol.Expressao = expressao;
                Termo termo = new Termo();
                expressao.addTermo(termo);
                termo.addElementos(new Elemento(Sinal.Positivo, 2, 1));
                termo.addElementos(new Elemento(Sinal.Positivo, 'X', 2));

                termo = new Termo();
                expressao.addTermo(termo);
                termo.Sinal = Sinal.Negativo;
                termo.addElementos(new Elemento(Sinal.Positivo, 2, 1));

                double result = 0;

                var mapa = new Dictionary<char, int>();

                mapa['X'] = 1;
                result = pol.calcular(mapa);
                if (result != 0)
                {
                    throw new Exception("Teste 1 falhou. Esperava '0', recebeu '" + result + "'");
                }

                mapa['X'] = -5;
                result = pol.calcular(mapa);
                if (result != 48)
                {
                    throw new Exception("Teste 2 falhou. Esperava '48', recebeu '" + result + "'");
                }

                mapa['X'] = 100;
                result = pol.calcular(mapa);
                if (result != 19998)
                {
                    throw new Exception("Teste 3 falhou. Esperava '19998', recebeu '" + result + "'");
                }

                mapa['X'] = 0;
                result = pol.calcular(mapa);
                if (result != -2)
                {
                    throw new Exception("Teste 4 falhou. Esperava '-2', recebeu '" + result + "'");
                }

                Console.WriteLine("Calculo terminou com sucesso!");

            }
            catch (Exception ex)
            {
                throw new Exception("Teste de calculo falhou. " + ex.Message);
            }
        }
예제 #2
0
        public virtual bool EhEquivalente(Polinomio pol)
        {
            // Verifica se possui a mesma quantidade de variáveis
            if (this.Variaveis.Count != pol.Variaveis.Count)
            {
                return false;
            }

            // Verifica se as variáveis são as mesmas
            foreach (KeyValuePair<char, int> entry in this.Variaveis.SetOfKeyValuePairs())
            {
                if (!pol.Variaveis.ContainsKey(entry.Key))
                {
                    return false;
                }
            }

            int contador = 0;

            // Faz um teste substituindo as variáveis por números primos
            foreach (char item in Variaveis.Keys)
            {
                Variaveis[item] = PRIMOS[contador++];
            }
            if (this.calcular(this.Variaveis) != pol.calcular(this.Variaveis))
            {
                return false;
            }

            // Faz o mesmo teste com outros números primos
            foreach (char item in Variaveis.Keys)
            {
                Variaveis[item] = PRIMOS[contador++];
            }
            if (this.calcular(this.Variaveis) != pol.calcular(this.Variaveis))
            {
                return false;
            }

            // Faz o teste com tudo zero
            foreach (char item in Variaveis.Keys)
            {
                Variaveis[item] = 0;
            }
            if (this.calcular(this.Variaveis) != pol.calcular(this.Variaveis))
            {
                return false;
            }

            // Faz o teste com primos negativos
            foreach (char item in Variaveis.Keys)
            {
                Variaveis[item] = -PRIMOS[contador++];
            }
            if (this.calcular(this.Variaveis) != pol.calcular(this.Variaveis))
            {
                return false;
            }

            return true;
        }