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