private void escreverSeq(FilaLista <string> inf, FilaLista <string> pos) { char letra = 'A'; string[] vet = pos.ToArray(); //lista de pósfixa lblExpres.Text += "Posfixa: "; for (int i = 0; i < vet.Length; i++) //enquanto não acabou o vetor { if (IsOp(vet[i])) //se for operação { lblExpres.Text += vet[i]; //armazena na string } else //se não for operação { lblExpres.Text += letra++; //armazena a letra e incrementa } } lblExpres.Text += "\n" + "Infixa: "; letra = 'A'; vet = inf.ToArray(); //lista de infixa for (int i = 0; i < vet.Length; i++) //enquanto não acabou o vetor { if (IsOp(vet[i])) //se for operação { lblExpres.Text += vet[i]; //armazena na string } else //se não for operação { lblExpres.Text += letra++; //armazena a letra e incrementa } } }
private void escreverSeq(FilaLista <string> inf, FilaLista <string> pos) { char letra = 'A'; string[] vet = pos.ToArray(); lblExpres.Text += "Posfixa: "; for (int i = 0; i < vet.Length; i++) { if (IsOp(vet[i])) { lblExpres.Text += vet[i]; } else { lblExpres.Text += letra++; } } lblExpres.Text += "\n" + "Infixa: ";; letra = 'A'; vet = inf.ToArray(); for (int i = 0; i < vet.Length; i++) { if (IsOp(vet[i])) { lblExpres.Text += vet[i]; } else { lblExpres.Text += letra++; } } }
private double CalcularResultado(FilaLista <string> expre) { PilhaLista <double> valores = new PilhaLista <double>(); double v1 = 0, v2 = 0, result = 0; string[] vet = expre.ToArray(); for (int c = 0; c < vet.Length; c++) //for até o fim do vetor { if (!IsOp(vet[c])) //se não for operação { valores.Empilhar(double.Parse(vet[c].Replace('.', ','))); //empilha e troca ponto por vírgula } else { v1 = valores.Desempilhar(); //desempilha o 1º valor v2 = valores.Desempilhar(); //desempilha o 2º valor switch (vet[c]) //switch do valor caso seja operção { case "+": result = v2 + v1; break; //se for + soma case "-": result = v2 - v1; break; //se for - subtrai case "*": result = v2 * v1; break; //se for * multiplica case "/": //se for divisão if (v1 == 0) { throw new DivideByZeroException("Divisão por 0"); //se for 0 joga exceção } result = v2 / v1; break; //se não for zero calcula case "^": result = Math.Pow(v2, v1); break; //se for ^ faz potência } valores.Empilhar(result); //empilha o resultado } } return(valores.Desempilhar()); //no fim desempilha o resultado final }
private double CalcularResultado(FilaLista <string> expre) { PilhaLista <double> valores = new PilhaLista <double>(); double v1 = 0, v2 = 0, result = 0; string[] vet = expre.ToArray(); for (int c = 0; c < vet.Length; c++) { if (!IsOp(vet[c])) { valores.Empilhar(double.Parse(vet[c].Replace('.', ','))); } else { v1 = valores.Desempilhar(); v2 = valores.Desempilhar(); switch (vet[c]) { case "+": result = v2 + v1; break; case "-": result = v2 - v1; break; case "*": result = v2 * v1; break; case "/": if (v1 == 0) { throw new DivideByZeroException("Divisão por 0"); } result = v2 / v1; break; case "^": result = Math.Pow(v2, v1); break; } valores.Empilhar(result); } } return(valores.Desempilhar()); }