コード例 #1
0
        /// <summary>
        /// Botão para calcular função ou Defini-la
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BtnEqual_Click(object sender, EventArgs e)
        {
            // Se a função digitada não possuir "x" ou "x",
            //será cálculado o valor real da equação
            if (Display.Text.IndexOf("X") == -1 && Display.Text.IndexOf("x") == -1)
            {
                double aux = Convert.ToDouble(EvalCSCode.Eval(Display.Text));
                aux          = Math.Round(aux, 6);
                Display.Text = aux.ToString();
            }
            // Se possuir, será "levado" para o álculo do
            //Bolzano e da Bissecção
            else
            {
                groupBox3.Enabled = true;
            }

            // Compartilhamento de dados entre formulários
            DadosCompartilhados.formula = Display.Text;
        }
コード例 #2
0
        /// <summary>
        /// Botão para calcular Bolzano
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BtnBolzano_Click(object sender, EventArgs e)
        {
            BtnBolzano.UseWaitCursor = true;
            comboBox1.Items.Clear();
            Raizes.Clear();


            // Controle de Exceção para a entrada em "double"
            try
            {
                double E = Double.Parse(comboBox2.Text);
                label7.Visible = true;

                // double divisorA = 0, divisorB = 0;
                double a = 0, b = 0;

                //Identifica se o número tem vírgula no número "a"
                if (textBox3.Text.IndexOf(',') != -1)
                {
                    //Lógica ainda não utilizada!
                    //divisorA = Math.Pow(10.00, (textBox3.Text.Length - (textBox3.Text.IndexOf(',') + 1.00)));
                    a = Convert.ToDouble(textBox3.Text);
                }
                else
                {
                    a = double.Parse(textBox3.Text);
                }

                //Identifica se o número tem vírgula no número "b"
                if (textBox4.Text.IndexOf(',') != -1)
                {
                    //Lógica ainda não utilizada!
                    // divisorB = Math.Pow(10.00, (textBox4.Text.Length - (textBox3.Text.IndexOf(',') + 1.00)));
                    b = Convert.ToDouble(textBox4.Text);
                }
                else
                {
                    b = double.Parse(textBox4.Text);
                }

                // Verifica se o "a" é maior do que o "b",
                //se for, apaga as textBox's e abre uma mes-
                //sageBox avisando para digitar corretamente.
                if (a > b)
                {
                    MessageBox.Show("Digite um valor de 'a' menor do que o valor de 'b'!!!", "ERRO", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                // Se não for, realiza o cálculo!
                else
                {
                    double i = a + E;


                    do
                    {
                        // Substituição da "," por  "." para não dar erro
                        string x = i.ToString().Replace(",", ".");
                        string y = (i - E).ToString().Replace(",", ".");

                        // Definições das funções utilizando os valores do
                        //intervalo pré-estabelecidos
                        string alfa = Display.Text.Replace("X", x);
                        string beta = Display.Text.Replace("X", y);

                        double aux1a, aux1b;

                        // Utilização da Classe "Eval" para trasnformar a
                        //função do formato "string" para o seu valor real
                        aux1a = Convert.ToDouble(EvalCSCode.Eval(alfa));
                        aux1b = Convert.ToDouble(EvalCSCode.Eval(beta));

                        // Lógicas para definir o maior e o menor
                        if (aux1a >= 0 && aux1b < 0)
                        {
                            Raizes.Add($"{i - E}; {i}");
                        }
                        else if (aux1a < 0 && aux1b >= 0)
                        {
                            Raizes.Add($"{i}; {i - E}");
                        }

                        i += E;
                    } while (i <= b); // O laço termina quando atingir o maior
                                      //valor estabelecido pelo usuário

                    // Laço para adicionar as raízes na comboBox
                    for (int j = 0; j < Raizes.Count; j++)
                    {
                        comboBox1.Items.Add(Raizes.ElementAt(j));
                    }

                    label7.Visible           = false;
                    BtnBolzano.UseWaitCursor = false;
                    BtnTabela.Enabled        = true;

                    // Adiciona os valores da primeira Raíz encontrada nas
                    //textBox para facilitar o novo calculo do Bolzano.
                    // Se não houver raíz no intervalo selecionado, entrará
                    //no controle de exceção
                    try
                    {
                        string[] valores = Raizes[0].Split(';');
                        textBox3.Text = valores[1].Trim();
                        textBox4.Text = valores[0].Trim();
                    }
                    catch
                    {
                        MessageBox.Show("Não foi possível encontrar raízes no intervalo selecionado. Tente outro!", "ERRO!", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                    }
                }
            }
            catch
            {
                MessageBox.Show("Digite um valor válido", "ERRO!", MessageBoxButtons.OK, MessageBoxIcon.Hand);
            }
        }
コード例 #3
0
        /// <summary>
        /// Método para chamar a classe eval e transformar
        /// a função (em string) em um valor em double
        /// </summary>
        /// <param name="entrada"></param>
        /// <returns valor em double></returns>
        public double UsoEval(string entrada)
        {
            double saida = Convert.ToDouble(EvalCSCode.Eval(entrada));

            return(saida);
        }