/// <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; }
/// <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); } }
/// <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); }