예제 #1
0
        static bool ValidarSequencia(string sequencia)
        {
            Pilha pilha = new Pilha();

            for (int pos = 0; pos < sequencia.Length; pos++)
            {
                if (pilha.Vazia())
                {
                    pilha.Empilhar(new Caracter(sequencia[pos]));
                }
                else
                {
                    Caracter caracterTopoPilha = (Caracter)pilha.ConsultarTopo();

                    if (ComplementaParenteses(caracterTopoPilha.Letra, sequencia[pos]))
                    {
                        pilha.Desempilhar(); //completar, retira
                    }
                    else
                    {
                        pilha.Empilhar(new Caracter(sequencia[pos])); //senão, insere
                    }
                }
            }

            return(pilha.Vazia()); //Se a pilha estiver vazia, todos os parentesês se complementam
        }
예제 #2
0
        private void btnSqrt_Click(object sender, EventArgs e) //evento das operacoes
        {
            Button btn = (sender as Button);

            if (btn.Text.Contains("log") || btn.Text.Contains("√"))
            {
                calculadora.AdicionarAoVetor("(");
                infixaMostrada += btn.Text + "(";
                operacoesAColocar.Empilhar(btn.Text);
                quandoColocarOperacao.Empilhar(1);
            }
            else if (btn.Text.Equals("-"))    // 1 - 1     -1 + 1     - (1 + 1)
            {
                if (infixaMostrada.Length == 0)
                {
                    infixaMostrada += btn.Text;
                }
                else if (infixaMostrada.Length > 0 && infixaMostrada[infixaMostrada.Length - 1] == '(')
                {
                    infixaMostrada += btn.Text;
                }
                else
                {
                    infixaMostrada += " " + btn.Text;
                }
                calculadora.AdicionarAoVetor("-");
            }
            else if (!btn.Text.Contains("!"))
            {
                infixaMostrada += " " + btn.Text.Substring(btn.Text.Length - 1);
                calculadora.AdicionarAoVetor(btn.Text);
            }
            else
            {
                infixaMostrada += btn.Text.Substring(btn.Text.Length - 1);
                calculadora.AdicionarAoVetor("!");
            }
            HabilitarBotoes();
            AtualizarVisor();
        }