public void AdicionarAoVetor(string valor) { if (!contas.EstaVazia()) { contas.Topo.Adicionar(valor); } }
private void PrintBinarios(Pilha <char> binarios) { var binario = new StringBuilder(); while (!binarios.EstaVazia()) { binario.Insert(0, binarios.Desempilhar()); } Console.WriteLine(binario.ToString()); }
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(); }
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); }
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(); }