Exemple #1
0
        public Dados Retirar()
        {
            if (this.prim.prox != null)
            {
                Elemento aux = this.prim.prox;

                if (aux == this.ult)
                {
                    this.ult = this.prim;
                }

                this.prim.prox = aux.prox;
                aux.prox       = null;
                return(aux.d);
            }
            else
            {
                return(null);
            }
        }
Exemple #2
0
        public Dados Desempilhar()
        {
            if (topo.prox != null)
            {
                Elemento aux = topo.prox;

                if (aux == this.final)
                {
                    this.final = this.topo;
                }

                this.topo.prox = aux.prox;
                aux.prox       = null;
                return(aux.d);
            }
            else
            {
                return(null);
            }
        }
Exemple #3
0
 public Fila()
 {
     this.prim = new Elemento(null);
     this.ult  = this.prim;
 }
Exemple #4
0
        private void btnAbre_Click(object sender, EventArgs e)
        {
            if ((sender as Button).Text == "CE" && qtd != 0)                            // CASO O USUÁRIO DECIDA APAGAR O ÚLTIMO DADO DIGITADO
            {
                if (txtResultado.Text.Substring(txtResultado.TextLength - 1, 1) == "(") // caso seja abre parentenses diminui um na variavel que controla o número de abre
                {
                    qtdParenteses1--;
                }
                if (txtResultado.Text.Substring(txtResultado.TextLength - 1, 1) == ")")     // caso seja fecha parenteses diminui um na variavel que controla o número de fecha
                {
                    qtdParenteses2--;
                }
                txtResultado.Text = txtResultado.Text.Remove(txtResultado.TextLength - 1);
                ex[qtd]           = null;
                qtd--;
                btn0.Enabled       = true;
                btn1.Enabled       = true;
                btn2.Enabled       = true;
                btn3.Enabled       = true;
                btn4.Enabled       = true;
                btn5.Enabled       = true;
                btn6.Enabled       = true;
                btn7.Enabled       = true;
                btn8.Enabled       = true;
                btn9.Enabled       = true;
                btnAbre.Enabled    = true;
                btnFecha.Enabled   = false;
                btnDividir.Enabled = true;
                btnElevado.Enabled = true;
                btnMais.Enabled    = true;
                btnMenos.Enabled   = true;
                btnPonto.Enabled   = true;
            }
            else if ((sender as Button).Text == "C")    // APAGAR TODA A EXPRESSÃO E RESETAR AS VARIÁVEIS DA INTÂNCIA EXPRESSÃO
            {
                txtResultado.Text = "";
                lblPos.Text       = "Pósfixa: ";
                for (int i = 0; i <= qtd; i++)
                {
                    ex[i] = null;
                }
                qtdParenteses1     = 0;
                qtdParenteses2     = 0;
                txtResult.Text     = "";
                qtd                = 0;
                btn0.Enabled       = true;
                btn1.Enabled       = true;
                btn2.Enabled       = true;
                btn3.Enabled       = true;
                btn4.Enabled       = true;
                btn5.Enabled       = true;
                btn6.Enabled       = true;
                btn7.Enabled       = true;
                btn8.Enabled       = true;
                btn9.Enabled       = true;
                btnAbre.Enabled    = true;
                btnFecha.Enabled   = true;
                btnDividir.Enabled = true;
                btnElevado.Enabled = true;
                btnMais.Enabled    = true;
                btnMenos.Enabled   = true;
                btnPonto.Enabled   = true;
            }
            else if ((sender as Button).Text != "CE")
            {
                txtResultado.Text += (sender as Button).Text;
                Elemento ele = new Elemento((sender as Button).Text, ex.DecidirPreferencia((sender as Button).Text));     // Um novo elemento para adicionar a expressão

                if (txtResultado.Text != "")
                {
                    if (ele.Prefe > 2)     // caso seja um operador, os outros operadores seram desabilitados
                    {
                        btnDividir.Enabled = false;
                        btnElevado.Enabled = false;
                        btnMais.Enabled    = false;
                        btnPonto.Enabled   = false;
                        btnAbre.Enabled    = true;
                        btnFecha.Enabled   = false;
                        btnVezes.Enabled   = false;
                    }
                    else
                    {
                        if (ele.Ele != "(")     // caso seja um abre todos os operadores com excessão do - e + serão desabilitados
                        {
                            btnDividir.Enabled = true;
                            btnElevado.Enabled = true;
                            btnMais.Enabled    = true;
                            btnPonto.Enabled   = true;
                            btnVezes.Enabled   = true;
                            btnFecha.Enabled   = true;
                        }
                        else
                        {
                            btnDividir.Enabled = false;
                            btnElevado.Enabled = false;
                            btnMais.Enabled    = false;
                            btnPonto.Enabled   = false;
                            btnFecha.Enabled   = true;
                            btnVezes.Enabled   = false;
                        }
                    }
                }
                else
                {
                    btnDividir.Enabled = false;
                    btnElevado.Enabled = false;
                    btnMais.Enabled    = false;
                    btnPonto.Enabled   = false;
                    btnVezes.Enabled   = false;
                    btnAbre.Enabled    = true;
                    btnFecha.Enabled   = true;
                }
                if (ele.Ele == ")")     // adiciona um no controle de abre parenteses
                {
                    qtdParenteses2++;
                }
                else if (ele.Ele == "(")     // adiciona um no controle de fecha parenteses
                {
                    qtdParenteses1++;
                }


                if (qtd != 0 && ex[qtd - 1].Prefe == 1 && ele.Prefe == 1)     // espera um sinal para decidir o fim do elemento, fazendo com que possa ter mais de um dígito no número
                {
                    if (ex[qtd - 1].Prefe == 1 || ex[qtd - 1].Ele == "-")
                    {
                        ex[qtd - 1].Ele += ele.Ele;
                    }
                }
                else if (qtd == 0 || ex[qtd - 1].Prefe != 1)
                {
                    if (ele.Prefe == 3)
                    {
                        ele.Prefe = 1;
                    }
                    ex[qtd] = ele;
                    qtd++;
                }
                else
                {
                    if (ex[qtd - 1].Ele == "-" && ex[qtd - 1].Prefe == 1 && ele.Ele == "(")
                    {
                        ex[qtd - 1].Prefe = 3;
                    }
                    ex[qtd] = ele;
                    qtd++;
                }
                if (qtd == 20)    // tamanho máximo de valores que pode se adicionar
                {
                    MessageBox.Show("O máximo de dados da calculadora foi alcançado", "Máximo alcançado", MessageBoxButtons.OK);
                    btn0.Enabled       = false;
                    btn1.Enabled       = false;
                    btn2.Enabled       = false;
                    btn3.Enabled       = false;
                    btn4.Enabled       = false;
                    btn5.Enabled       = false;
                    btn6.Enabled       = false;
                    btn7.Enabled       = false;
                    btn8.Enabled       = false;
                    btn9.Enabled       = false;
                    btnAbre.Enabled    = false;
                    btnFecha.Enabled   = false;
                    btnDividir.Enabled = true;
                    btnElevado.Enabled = false;
                    btnMais.Enabled    = false;
                    btnMenos.Enabled   = false;
                    btnPonto.Enabled   = false;
                    qtd--;
                }
                if (ex[qtd - 1] != null && ex[qtd - 1].Prefe == 1 && ex[qtd - 1].Ele != "-")
                {
                    btnAbre.Enabled = false;
                }
                else
                {
                    btnAbre.Enabled = true;
                }
            }
        }
Exemple #5
0
 public Elemento(Dados d)
 {
     this.d = d;
     prox   = null;
 }
Exemple #6
0
 public Pilha()
 {
     topo           = new Elemento(null);
     this.topo.prox = null;
     this.final     = this.topo;
 }