Ejemplo n.º 1
0
 public void AdicionarAoVetor(string valor)
 {
     if (!contas.EstaVazia())
     {
         contas.Topo.Adicionar(valor);
     }
 }
Ejemplo n.º 2
0
        private void PrintBinarios(Pilha <char> binarios)
        {
            var binario = new StringBuilder();

            while (!binarios.EstaVazia())
            {
                binario.Insert(0, binarios.Desempilhar());
            }
            Console.WriteLine(binario.ToString());
        }
Ejemplo n.º 3
0
        private void btnAbreParenteses_Click(object sender, EventArgs e)
        {
            Button btn = (sender as Button);

            if (infixaMostrada.Length > 0 && btn.Text.Equals("("))
            {
                infixaMostrada += " " + btn.Text;
                calculadora.AdicionarAoVetor(btn.Text);

                if (!quandoColocarOperacao.EstaVazia()) // Afasta a colocação da operação
                {
                    quandoColocarOperacao.Empilhar(quandoColocarOperacao.Pop() + 1);
                }
            }
            else if (btn.Text.Equals("("))
            {
                infixaMostrada += btn.Text;
                calculadora.AdicionarAoVetor(btn.Text);
            }
            else if (btn.Text.Equals(")"))
            {
                infixaMostrada += btn.Text;
                calculadora.AdicionarAoVetor(btn.Text);

                if (!quandoColocarOperacao.EstaVazia()) // Aproxima a colocação da operação
                {
                    quandoColocarOperacao.Empilhar(quandoColocarOperacao.Pop() - 1);
                    if (quandoColocarOperacao.Topo == 0) // Quando chega a 0, a operação deve ser colocada, e suas informações podem ser retiradas das pilhas
                    {
                        calculadora.AdicionarAoVetor(operacoesAColocar.Pop());
                        quandoColocarOperacao.Pop();
                    }
                }
            }
            HabilitarBotoes();
            AtualizarVisor();
        }
Ejemplo n.º 4
0
        private bool VerificarOrdem(Pilha <char> parenteses)
        {
            if (parenteses.Topo() == '(')
            {
                return(false);
            }

            int control = 0;

            while (!parenteses.EstaVazia())
            {
                if (parenteses.Desempilhar() == ')')
                {
                    control++;
                    continue;
                }
                control--;
            }
            return(control == 0 && parenteses.Tamanho % 2 == 0);
        }
Ejemplo n.º 5
0
        private void btnApagar_Click(object sender, EventArgs e)
        {
            char ultimoCaractere = ' ';

            do
            {
                infixaMostrada = infixaMostrada.Substring(0, infixaMostrada.Length - 1);
                if (infixaMostrada.Length > 0)
                {
                    ultimoCaractere = infixaMostrada[infixaMostrada.Length - 1];
                }
                else
                {
                    break;
                }
            } while (ultimoCaractere.Equals(' '));

            if (ultimoCaractere == '√')
            {
                infixaMostrada = infixaMostrada.Substring(0, infixaMostrada.Length - 1);
            }
            else if (ultimoCaractere == 'g' && infixaMostrada.Length > 2 && infixaMostrada.Substring(infixaMostrada.Length - 3) == "log")
            {
                infixaMostrada = infixaMostrada.Substring(0, infixaMostrada.Length - 3);
            }

            string qualApagou = " ";

            qualApagou = calculadora.Infixa[calculadora.QtdElementosUltimaConta - 1];
            if (IsNumeric(qualApagou) || qualApagou == "." || qualApagou == ",")
            {
                qualApagou = qualApagou[qualApagou.Length - 1].ToString();
                string ultimoNumero = calculadora.Infixa[calculadora.QtdElementosUltimaConta - 1];
                calculadora.Infixa[calculadora.QtdElementosUltimaConta - 1] = ultimoNumero.Substring(0, ultimoNumero.Length - 1);
                if (ultimoNumero.Length <= 1)
                {
                    calculadora.ExcluirDoVetor();
                }
            }
            else
            {
                if (qualApagou == "√")
                {
                    operacoesAColocar.Empilhar("√");
                    quandoColocarOperacao.Empilhar(1);

                    calculadora.ExcluirDoVetor();
                }
                else if (qualApagou == "log")
                {
                    operacoesAColocar.Empilhar("log");
                    quandoColocarOperacao.Empilhar(1);

                    calculadora.ExcluirDoVetor();
                }

                calculadora.ExcluirDoVetor();

                if (qualApagou == "(" && !operacoesAColocar.EstaVazia())
                {
                    quandoColocarOperacao.Empilhar(quandoColocarOperacao.Pop() - 1); // Significa que a operação está mais próxima de ser colocada
                    if (quandoColocarOperacao.Topo == 0)                             // Quer dizer que o parênteses que deu origem à operação - Ex: log( - foi apagado
                    {
                        operacoesAColocar.Pop();
                        quandoColocarOperacao.Pop();
                    }
                }
                else if (qualApagou == ")" && !operacoesAColocar.EstaVazia()) // Afasta a operação de poder ser colocada
                {
                    quandoColocarOperacao.Empilhar(quandoColocarOperacao.Pop() + 1);
                }
            }
            HabilitarBotoes();
            AtualizarVisor();
        }