private void btnIgual_Click(object sender, EventArgs e) // Método para resolver a expressão { try { Operacao operacao = null; // objeto responsável por resolver a sequencia if (!string.IsNullOrEmpty(txtVisor.Text) && TemNumero() && // caso a expressão não esteja vazia, tenha números e o ultimo caracter é válido (txtVisor.Text[txtVisor.Text.Length - 1] == ')' || !Operacao.EhOperador(txtVisor.Text[txtVisor.Text.Length - 1].ToString()))) { if (EstaBalanceada(txtVisor.Text)) // Verifica se a expressão está balanceada { operacao = new Operacao(txtVisor.Text); // instanciação do objeto txtResultado.Text = operacao.CalcularExpressao() + ""; // método que retorna o resultado lbInfixa.Text = "Infixa: " + operacao.SequenciaInfixa; // mostramos as sequencias ao usuário lbPosfixa.Text = "Posfixa: " + operacao.SequenciaPosfixa; } else { MessageBox.Show("O número de '(' deve ser igual ao número de ')'", "Expressão não balanceada", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } catch (DivideByZeroException) // Exceção de divisão por 0 { MessageBox.Show("Impossível calcular", "Divisão por 0", MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (NotFiniteNumberException) // Exceção de raiz negativa { MessageBox.Show("Impossível calcular", "Raiz negativa", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void btnRadiciacao_Click(object sender, EventArgs e) // Método de quando a raiz quadrada é selecionada { if (string.IsNullOrEmpty(txtVisor.Text) || (Operacao.EhOperador(txtVisor.Text[txtVisor.Text.Length - 1].ToString()) && txtVisor.Text[txtVisor.Text.Length - 1] != ')')) { txtVisor.Text += ((Button)sender).Text + "("; jaTemVirgula = false; } }
private bool TemNumero() //verifica se há número na expressão { foreach (char possivelNumero in txtVisor.Text) { if (!Operacao.EhOperador(possivelNumero + "")) { return(true); } } return(false); }
private void btnFechaParenteses_Click(object sender, EventArgs e) // Método de quando o ) é selecionado { if (!string.IsNullOrEmpty(txtVisor.Text) && txtVisor.Text[txtVisor.Text.Length - 1] != '.' && (txtVisor.Text[txtVisor.Text.Length - 1] == ')' || !Operacao.EhOperador(txtVisor.Text[txtVisor.Text.Length - 1] + ""))) { txtVisor.Text += ((Button)sender).Text; jaTemVirgula = false; } }
private void btnAbreParenteses_Click(object sender, EventArgs e) // Método de quando o ( é selecionado { if (string.IsNullOrEmpty(txtVisor.Text) || (txtVisor.Text[txtVisor.Text.Length - 1] != ')' && Operacao.EhOperador(txtVisor.Text[txtVisor.Text.Length - 1].ToString()) && txtVisor.Text[txtVisor.Text.Length - 1] != '.')) { txtVisor.Text += ((Button)sender).Text; jaTemVirgula = false; } }
private void btnMultiplicacaoDivisao_Click(object sender, EventArgs e) // Método de quando * ou / é selecionado { if (!string.IsNullOrEmpty(txtVisor.Text) && txtVisor.Text[txtVisor.Text.Length - 1] != '(' && (!Operacao.EhOperador(txtVisor.Text[txtVisor.Text.Length - 1].ToString()) || txtVisor.Text[txtVisor.Text.Length - 1] == ')') && txtVisor.Text[txtVisor.Text.Length - 1] != '.') { txtVisor.Text += ((Button)sender).Text; jaTemVirgula = false; } }
private void btnAdicaoSubtracao_Click(object sender, EventArgs e) // Método de quando + ou - é selecionado { if (string.IsNullOrEmpty(txtVisor.Text) || (txtVisor.Text[txtVisor.Text.Length - 1] == 'V' || txtVisor.Text[txtVisor.Text.Length - 1] == '(' || !Operacao.EhOperador(txtVisor.Text[txtVisor.Text.Length - 1].ToString()) && txtVisor.Text[txtVisor.Text.Length - 1] != '.')) { txtVisor.Text += ((Button)sender).Text; jaTemVirgula = false; } }
private void btnPonto_Click(object sender, EventArgs e) // Método de quando o . é selecionado { if (txtVisor.Text != "" && !jaTemVirgula && txtVisor.Text[txtVisor.Text.Length - 1] != '.' && !Operacao.EhOperador(txtVisor.Text[txtVisor.Text.Length - 1] + "")) { txtVisor.Text += "."; jaTemVirgula = true; } }