Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package eqsegundograu;
- import java.util.ArrayList;
- import java.util.List;
- import javax.swing.JOptionPane;
- public class Eq1grauNOVO {
- static List <Double> numeros; //array para armazenar todos os números inteiros
- static List <Double> numerosX; //array para armazenar todos os números X
- static List <Integer> ParentesesXouINT; //verifica se o número dentro do parenteses é um Inteiro ou uma incógnita.
- static List <Double> Parenteses; //array para armazenar todos os números inteiros dentro de parenteses
- static List <Double> MultiplicadorParenteses; //para armazenar todos os multiplicadores de parenteses
- static List <Integer> MultiplicadorParentesesXouINT; //verifico se o número dentro do parenteses é um X ou INT
- static List <Integer> InverterSinalParentesesInt;
- static List <Integer> InverterSinalParentesesX;
- static boolean NaoInverterSinal = false; //no caso de um cálculo como 2x(2 + 5x) = 14, com o multiplicador sendo X, o sinal do
- //int não pode ser invertido. Essa variável previne que isso aconteça!
- static int PosicaoVetorParentesesInt = 0;
- static int PosicaoVetorParentesesX = 0;
- //exemplo: 2 (3x + 4);
- //2 = multiplicador ~ 3x = ParentesesX ~ 4 = ParentesesInt
- public static void main (String[] args){
- /*
- CÁLCULOS JÁ TESTADOS (e que funcionam):
- a) 18x - 43 = 65 ~~~~ Resultado: X = 6
- b) 23x - 16 = 14 - 17x ~~~~ Resultado: X = 3/4 = 0,75
- c) 10X - 5 (1 + 1x) = 3 (2x - 2) - 20 ~~~~ Resultado: X = -21
- d) 5x (1 + 1x) = 3x (2x - 2) + 12 + 55 (6x - 7) ~~~~ x = 1.165625
- e) 2x(2 + 5x) = 14 ~~~~ Resultado: X = 1
- f) 8x - (x + 3) = 11 ~~~~ Resultado: X = 2
- IDEIAS:
- 1. Quando abrir parenteses ver se o X ou INT foi adicionado primeiro para exibir depois no passo-a-passo
- BUGS:
- 1. Não reconhece o X sozinho valendo como 1. Para fazer um cálculo como: X +2 = 3, você deve digitar 1x + 2 = 3
- UPDATES PRETENDIDOS:
- 1. Trabalhar com frações. Exemplo: (1x - 5)/10 + (1 - 2x)/5 = (3-1x)/4
- 2. Trabalhar com potências. Exemplo: 1x(1x + 4) + 1x(1x + 2) = 2x² + 12
- 3.
- CÁLCULOS QUE DEVERÁ RESOLVER:
- a)18x - 43 = 65 --------- X = 6
- b) 23x - 16 = 14 - 17x --------------- X = 3/4 = 0,75
- c) 10X - 5 (1 + 1x) = 3 (2x - 2) - 20 ----------------- X = -21
- d) 1x(1x + 4) + 1x(1x + 2) = 2x² + 12
- e) (1x - 5)/10 + (1 - 2x)/5 = (3-1x)/4
- f) 4x (1x + 6) - 1x² = 5x²
- -- outros --
- vários exercícios:
- http://rachacuca.com.br/quiz/2717/equacao-de-1-grau/
- exercícios de eq1grau resolvidos passo - a - passo:
- http://www.nilsong.com.br/index.php?option=com_content&view=article&id=110:exercicios-resolvidos-de-equacoes-do-1o-grau&catid=61:resumo-da-6o-serie&Itemid=93
- como fazer + exemplos de eq1grau com 2 variáveis, X & Y:
- http://www.somatematica.com.br/fundam/equacoes2v.php
- Exercícios resolvidos passo a -passo:
- http://sabermatematica.com.br/equacoesprimeirograuer.html
- http://jmpmat7.blogspot.com.br/
- */
- int InverterSinalNaHoraDosCalculosInt = 0;
- int InverterSinalNaHoraDosCalculosX = 0; //quando multiplica-se o número dentro do parenteses não pode inverter
- //o sinal dele (antes/depois do =).
- boolean ExibeCalculosComParenteses = false;
- String aux1 = JOptionPane.showInputDialog(null, "digite: ", "4 (3x + 8) + 5x (1 + 1x) = 3x (2x - 2) + 12 + 55 (6x - 7) "); //recebe equação do usuário
- String s = aux1.toLowerCase(); //converte string inteira para letras minúsculas
- s = s.replaceAll("\\s", ""); //remove todos os espaços da String;
- int AuxCalculos;
- char [] AuxiliarS; //usado como auxiliar para quando encontrar um sentença como 2+(3x+4) = 2, por exemplo. o parenteses
- //nesse caso tem que desaparecer e os sinais devem ser somados!
- AuxiliarS = s.toCharArray();
- for(int i=0; i < s.length() - 1; i++){ //procura na string por sinais de '(' & X sozinhos, como "x + 2 = 4"
- if(s.charAt(i) == 'x'){ //se encontrar,
- if (!Character.isDigit(s.charAt(i-1))){ //verifica se é uma multiplicação
- System.out.println("X SOZINHO");
- }
- }
- if(s.charAt(i) == '('){ //se encontrar,
- if (Character.isDigit(s.charAt(i-1)) || s.charAt(i-1) == 'x'){ //verifica se é uma multiplicação
- System.out.println("MULTIPLICADOR");
- ExibeCalculosComParenteses = true;
- }
- else if (s.charAt(i-1) == '-'){ //se não for uma multiplicação, for algo como 8x - (1x + 3) = 11
- System.out.println("TRAP");
- AuxCalculos = i; //atribuo o valor da posição para uma variável e faço outro teste para inverter sinais!
- //System.out.print("VALOR DO I: " + i);
- int b = 0;
- for (int a = AuxCalculos; a >= 0; a++){
- if(s.charAt(a) == '-'){ //se encontrar sinal de - substituo por +
- System.out.print("ENCONTREI UM - : ");
- AuxiliarS[a] = '+';
- }
- if(s.charAt(a) == '+'){ //se encontrar sinal de + substituo por -
- System.out.print("ENCONTREI UM + : ");
- AuxiliarS[a] = '-';
- }
- if(s.charAt(a) == ')'){ //quando encontrar o final do parenteses
- AuxiliarS[i] = ' '; //elimina o parenteses '('
- AuxiliarS[a] = ' '; //elimina o parenteses ')'
- break;
- }
- }
- }
- }
- } //fim do for
- s = new String(AuxiliarS); //converte o char para string novamente depois de realizar as alterações
- s = s.replaceAll("\\s", ""); //remove todos os espaços da String novamente
- s = " " + s; //adicionando uma gambiarra para quando o número iniciar com inteiro, como por exemplo 2 +2x = 4
- System.out.println(s); //simplesmente exibe a equação para analise
- Eq1grauNOVO.AnalisaNumeros(s, InverterSinalNaHoraDosCalculosInt,InverterSinalNaHoraDosCalculosX); //analisa se o número é X ou int e faz todas as conversões
- if(ExibeCalculosComParenteses == true){
- Eq1grauNOVO.ExibeCalculosParenteses(InverterSinalNaHoraDosCalculosInt, InverterSinalNaHoraDosCalculosX, aux1);
- }
- else{
- Eq1grauNOVO.ExibeCalculos(aux1); //mostra os cálculos realizados passo-a-passo
- }
- } //fim Main
- public static void AnalisaNumeros(String s, int InverterSinalNaHoraDosCalculosInt, int InverterSinalNaHoraDosCalculosX ){
- int i; //usado como contador do For
- int j = 0, sinalDeIgual = 0;
- int b = 0; //usado com contadores para encontrar sinais de =, atribuir valores positivos/negativos, entre outros!
- int encontrado; //simplesmente recebe valor de I + J. é usado com laço For para ver se variável está antes ou depois do
- //sinal de = para inverter o sinal se preciso. Por exemplo: 10x + 2 = 2 ~> 10x = 2 - 2 (inverteu sinal)
- int ParentesesEncontrado = 0; //quando encontrar um parenteses começa a adicionar em outro arraylist!
- //com o valor 0, o programa utiliza os métodos AdicionaNumeroVetorX & AdicionaNumeroVetor
- //com o valor 1, é utilizado AdicionaNumeroVetorParentesesInt & AdicionaNumeroVetorParentesesX
- int NumeroMultiplicador = 0; //se o número anteceder um parenteses ele é um número multiplicador. São responsáveis
- //por multiplicar os números dentro do parenteses, e são armazenados num Array diferente
- //0 = Número NÃO é multiplicador ~ 1 = Número é Multiplicador. ~ 2 Número é um Multiplicador X.
- //Exemplos:
- //Valor 0 -> 2 + (5x + 4)
- //Valor 1 -> 2(5x + 4)
- //Valor 2 -> 2x(5x + 4)
- int limite = s.length() -1; //limite da equação do usuário
- numeros = new ArrayList<>(); //array contendo todos os números da string já convertidos para double
- numerosX = new ArrayList<>(); //array contendo todos os números COM X da string já convertidos para double
- Parenteses = new ArrayList<>();
- MultiplicadorParenteses = new ArrayList<>(); //armazena o número que multiplica valores dentro do parenteses
- MultiplicadorParentesesXouINT= new ArrayList<>();
- InverterSinalParentesesInt = new ArrayList<>();
- InverterSinalParentesesX = new ArrayList<>();
- ParentesesXouINT = new ArrayList<>();
- //ParentesesXouINT = tem a função de ver se o número dentro do parenteses é uma incógnita ou um inteiro.
- //valor 0 = Inteiro &
- //valor 1 = Incógnita ~
- //valor 2 = se for um inteiro e estiver ANTES do sinal de =
- //valor 3 = se for uma incógnita & estiver depois do sinal de =
- //MultiplicadorParentesesXouINT = Quando receber o valor de 0, é um Inteiro, ou seja, não mostra o X na tela. Quando receber
- //o valor de 1, é uma incógnita, e exibe o X na tela.
- for(i=0; i < limite; i++){
- try{
- String Auxiliar = ""; //Se encontrar na string um número com 2+ dígitos, quando convertido o programa ainda
- //subentende como "1 & 8", e não "18", por exemplo. Para isso, eu uso uma string auxiliar para concatenar tudo e
- //depois simplesmente converter para double!
- //ENCONTRA UM NÚMERO (ou conjunto de números) NA EQUAÇÃO
- while(Character.isDigit(s.charAt(i + j))){ //se encontrar um número, verifica se o próximo é um número também. enquanto o
- //próximo for um número, permanece no while
- s += " "; //adiciona espaço vazio no final da equação para não estourar o Catch
- Auxiliar += s.charAt(i + j); //concatena número para um String
- if(s.charAt(i + j + 1) == '(' ){
- NumeroMultiplicador = 1;
- }
- else if(s.charAt(i + j + 1) == 'x'){
- if(s.charAt(i+j+2) == '('){
- //System.out.print("~~~~~~~~NÚMERO MULTIPLICADOR X~~~~~~");
- NumeroMultiplicador = 2;
- ParentesesEncontrado = 1;
- }
- }
- j += 1; //incrementa o J para poder ver o próximo caractere
- } //fim da procura de números
- encontrado = i+j; //simplesmente recebe valor do i + j
- boolean Negativando = false; //usado como auxiliar para encontrar sinais de =. Serve para "não ativar um if".
- boolean SinaldeIgual = false;
- double Numero = Double.parseDouble(String.valueOf(Auxiliar)); //converte string auxiliar concatenada para Double
- //analisa se o número é X ou Inteiro
- Eq1grauNOVO.VerificaX(InverterSinalNaHoraDosCalculosX, NumeroMultiplicador, ParentesesEncontrado, s, encontrado, b, SinaldeIgual, Negativando, Numero); //verifica se o número é X
- Eq1grauNOVO.VerificaInteiro(InverterSinalNaHoraDosCalculosInt, NumeroMultiplicador,ParentesesEncontrado, s, encontrado, b, SinaldeIgual, Negativando, Numero); //verifica se o número é Int
- if(s.charAt(i + j) == '('){ //quando encontrar um sinal de ( começa a armazenar em arraylist de parenteses!
- //System.out.println("ABRINDO Parenteses! próximo char: " + s.charAt(i+j + 1));
- ParentesesEncontrado = 1;
- }
- else if (s.charAt(i + j) == ')' || s.charAt(i + j + 1) == ')'){ //quando encontrar o sinal de ')' volta a armazenar nos outros arraylists
- //System.out.println("FECHANDO Parenteses! Próximo: " + s.charAt(i+j-1) );
- ParentesesEncontrado = 0;
- }
- NumeroMultiplicador = 0; //depois de ativar a variável e fazer os testes necessários "reseta" ela.
- } //fim do Try
- //capturando erros
- catch(StringIndexOutOfBoundsException | NumberFormatException | NullPointerException e){
- System.out.print("");
- }
- } //final do for
- } //final do método AnalisaNumero
- public static void VerificaInteiro(int InverterSinalNaHoraDosCalculosInt, int NumeroMultiplicador, int ParentesesEncontrado, String s, int encontrado, int b, boolean SinaldeIgual, boolean Negativando, double Numero){
- //ANALISA SE É NÚMERO INTEIRO (não é incógnita)
- if (s.charAt(encontrado) != 'y' && s.charAt(encontrado) != 'x'){ //caso não seja incógnita
- //VERIFICA SE NÚMERO ESTÁ DEPOIS DO SINAL DE =
- for(b = encontrado; b >= 0; b--){ //pesquisa reversamente a string iniciando do número que encontrou.
- if(s.charAt(b) == '=' && SinaldeIgual == false){ //se encontrar um sinal de =, mantém sinal, por que ele tem que ficar do lado direito!
- Negativando = true;
- SinaldeIgual = true;
- }
- } //fim do for
- for(b = encontrado; b >= 0; b--){
- //System.out.print(s.charAt(b-1)); //mostrando os caracteres
- if(s.charAt(b) == '='){ //apenas previne bugs em relação ao sinal de =, para inverter o sinal quando necessário!
- Negativando = false;
- }
- if(s.charAt(b-1) == '-'){ //se encontrar um sinal de -, dá o valor negativo para o nº e encerra o laço o programa
- Numero *= -1;
- System.out.print(Numero + " [NEGATIVO]");
- break;
- } //fim da análise de números negativos
- //considerar colocar um ELSE ao invés de condições.
- if(s.charAt(b-1) == '+' || s.charAt(b-1) == '*' || s.charAt(b-1) == '/' || s.charAt(b-1) == '=' || s.charAt(b-1) == '(' || s.charAt(b-1) == ' ') { //se encontrar um sinal de positivo, deixa o número positivo mesmo :)
- System.out.print(Numero +" [POSITIVO]");
- break;
- }
- } //final do for
- //ADICIONANDO PARA O ARRAYLIST
- Eq1grauNOVO.AnalisandoIgualInt(NumeroMultiplicador, Numero, Negativando, ParentesesEncontrado, SinaldeIgual);
- }//final da análise de Inteiros
- }
- public static void VerificaX(int InverterSinalNaHoraDosCalculosX, int NumeroMultiplicador, int ParentesesEncontrado, String s, int encontrado, int b, boolean SinaldeIgual, boolean Negativando, double Numero){
- //ANALISA SE É INCÓGNITA X
- if (s.charAt(encontrado) == 'x'){ //se possuir a letra X após o número (se for uma incógnita)
- //VERIFICA SE NÚMERO ESTÁ DEPOIS DO SINAL DE =
- for(b = encontrado; b >= 0; b--){ //pesquisa reversamente a string iniciando do número que encontrou.
- if(s.charAt(b) == '=' && SinaldeIgual == false){ //se encontrar um sinal de =, mantém sinal, por que ele tem que ficar do lado direito!
- Negativando = true;
- SinaldeIgual = true;
- }
- } //fim do for
- for(b = encontrado; b >= 0; b--){ //pesquisa a string reversamente
- //System.out.print(s.charAt(b) ); //mostrando os caracteres
- if(s.charAt(b) == '-'){ //se encontrar um sinal de -, dá o valor negativo para o nº e encerra o laço o programa
- Numero *= -1;
- System.out.print(Numero + "x [NEGATIVO]");
- break;
- }
- if(s.charAt(b) == '+' || s.charAt(b) == '*' || s.charAt(b) == '/' || s.charAt(b) == '=' || s.charAt(b) == '(' ) { //se encontrar um sinal de positivo, deixa o número positivo mesmo :)
- //o s.charAt(b) == '=' é caso a equação esteja assim: 2x + 10 = 18x
- //nesse caso o 18x seria negativado
- System.out.print(Numero + "x [POSITIVO]");
- break;
- }
- } //final do for de procura de sinais
- if(NumeroMultiplicador == 2){
- AdicionaNumeroMultiplicador(Numero);
- NumeroMultiplicadorXouINT(1);
- System.out.print(Numero + "x Adicionado em: AdicionaNumeroMultiplicador");
- ParentesesEncontrado = 3;
- NaoInverterSinal = true;
- }
- //VERIFICA SE NÚMERO ESTÁ ANTES DO SINAL DE =, SE SIM, MANTÉM SINAL
- Eq1grauNOVO.AnalisandoIgualX(NumeroMultiplicador, Numero, Negativando, ParentesesEncontrado, SinaldeIgual);
- } //final da análise de incógnitas
- }
- public static void AnalisandoIgualX(int NumeroMultiplicador, double Numero, boolean Negativando, int ParentesesEncontrado, boolean SinaldeIgual){
- if (Negativando == false && NumeroMultiplicador == 0){
- if(ParentesesEncontrado == 0){
- AdicionaNumeroVetorX(Numero);
- System.out.print(Numero + "x [número ANTES DO IGUAL] adicionado em: AdicionaNumeroVetorX"); //exibe na tela para teste
- }
- else if (ParentesesEncontrado == 1){
- AdicionaNumeroVetorParenteses(Numero);
- ParentesesXouInt(1); //atribui o valor 1 por que é uma incógnita
- System.out.print(Numero + "x ~ adicionado em: AdicionaNumeroVetorParenteses [INCÓGNITA X]");
- }
- }
- //VERIFICA SE NÚMERO ESTÁ DEPOIS DO SINAL DE =, SE SIM, INVERTE SINAL
- if (Negativando == true && SinaldeIgual == true){
- if(ParentesesEncontrado == 0){
- AdicionaNumeroVetorX(Numero * -1); //adiciona no arraylist
- System.out.print(Numero * -1 + " [número DEPOIS DO IGUAL] adicionado em: AdicionaNumeroVetorX"); //exibe na tela para teste
- }
- else if(ParentesesEncontrado == 1){
- //AdicionaNumeroVetorParentesesX(Numero);
- AdicionaNumeroVetorParenteses(Numero);
- ParentesesXouInt(3); //se for uma incógnita & estiver depois do sinal de =, recebe o valor 3
- InverterSinaldoParentesesX(PosicaoVetorParentesesX);
- System.out.println(Numero + "x ~ [SINAL MANTIDO] adicionado em: AdicionaNumeroVetorParentesesX. Posição: "+ PosicaoVetorParentesesX);
- PosicaoVetorParentesesX++;
- }
- }
- System.out.print("\n");
- }
- public static void AnalisandoIgualInt(int NumeroMultiplicador, double Numero, boolean Negativando, int ParentesesEncontrado, boolean SinaldeIgual){
- if(NumeroMultiplicador == 1){
- AdicionaNumeroMultiplicador(Numero);
- NumeroMultiplicadorXouINT(0);
- System.out.print("~~~~~~NÚMERO MULTIPLICADOR~~~~~~~~~~");
- }
- if (Negativando == false && NumeroMultiplicador == 0){ //SE ESTIVER ANTES DO =, INVERTE O SINAL
- if (ParentesesEncontrado == 0){ //se não encontrar nenhum parenteses
- AdicionaNumeroVetor(Numero * -1);
- System.out.print(Numero*-1 + " [número ANTES DO IGUAL] adicionado em: AdicionaNumeroVetor ");//exibe na tela para teste
- }
- else if(ParentesesEncontrado == 1){//se encontrar parenteses
- AdicionaNumeroVetorParenteses(Numero);
- ParentesesXouInt(2); //recebe o valor 2 pq está dentro do parenteses e é INT & tem q inverter o sinal depois
- InverterSinaldoParentesesInt(PosicaoVetorParentesesInt);
- System.out.println(Numero+ "[SINAL MANTIDO] adicionado em: AdicionaNumeroVetorParenteses [INTEIRO]");
- PosicaoVetorParentesesInt++;
- }
- }
- //SE ESTIVER DEPOIS DO =, MANTÉM O SINAL
- if(Negativando == true && SinaldeIgual == true && NumeroMultiplicador == 0){
- if (ParentesesEncontrado == 0 ){
- AdicionaNumeroVetor(Numero);
- System.out.print(Numero + " [número DEPOIS DO IGUAL] adicionado em: AdicionaNumeroVetor"); //exibe na tela para teste
- }
- else if (ParentesesEncontrado == 1){
- AdicionaNumeroVetorParenteses(Numero);
- ParentesesXouInt(0); //recebe o valor 0 pq está depois do =, dentro do parenteses e é INT
- System.out.print(Numero + " adicionado em: AdicionaNumeroVetorParenteses [INTEIRO]");
- }
- }
- System.out.print("\n");
- }
- public static void ExibeCalculos(String aux1){
- System.out.print("\n\n1º Passo: " + aux1 +" [String digitada pelo usuário]") ;
- System.out.print("\n2º Passo: ");
- for (int k = 0; k < numerosX.size(); k++){//for para exibir tudo q está dentro do arraylist
- if (numerosX.get(k) < 0){ //analisando se número é negativo para adicionar parenteses
- if(k == numerosX.size() - 1){
- if (numerosX.get(k) < 0)
- System.out.print("(" + Math.round(numerosX.get(k)) + "x)");
- }
- else
- System.out.print("(" +Math.round(numerosX.get(k)) + "x) + ");
- } //fim da análise de negativos
- else if (numerosX.get(k) > 0){
- if(k == numerosX.size() - 1){ //se for o último número não exibe o "+" no final
- System.out.print(Math.round(numerosX.get(k)) + "x"); //mostra todos os números
- }
- else
- System.out.print(Math.round(numerosX.get(k)) + "x + "); //mostra todos os números
- }
- }
- System.out.print(" = ");
- for (int k = 0; k < numeros.size(); k++){//for para exibir tudo q está dentro do arraylist
- if (numeros.get(k) < 0){ //analisando se número é negativo para adicionar parenteses
- if(k == numeros.size() - 1){
- if (numeros.get(k) < 0)
- System.out.print("(" + Math.round(numeros.get(k)) + ")");
- }
- else
- System.out.print("(" +Math.round(numeros.get(k)) + ") + ");
- } //fim da análise de negativos
- else if (numeros.get(k) > 0){
- if(k == numeros.size() - 1){ //se for o último número não exibe o "+" no final
- System.out.print(Math.round(numeros.get(k))); //mostra todos os números
- }
- else
- System.out.print(Math.round(numeros.get(k)) + " + "); //mostra todos os números
- }
- }
- System.out.print(" [Números convertidos para Double, incógnitas para esquerda & números para direita]");
- double soma = 0;
- double somaX = 0;
- for(int somando=0; somando<numerosX.size(); somando++){
- somaX+=(double) Math.round(numerosX.get(somando));
- }
- for(int somando=0; somando<numeros.size(); somando++){
- soma+=(double) Math.round(numeros.get(somando));
- }
- System.out.print("\n3º Passo: " + Math.round(somaX) +"x = " + Math.round(soma));
- System.out.print("\n4º Passo: x = " + Math.round(soma) + " / " + Math.round(somaX));
- System.out.print("\n5º Passo: x = " + (soma / somaX) + "\n");
- //System.out.print(somaX + " = " + soma);
- } //final do método de exibição de cálculos
- public static void ExibeCalculosParenteses(int InverterSinalNaHoraDosCalculosX, int InverterSinalNaHoraDosCalculosInt,String aux1){
- System.out.print("Valores dentro do InverterSinalParentesesX: " + InverterSinalParentesesX + "\nValores dentro do InverterSinalParentesesInt: " + InverterSinalParentesesInt);
- System.out.print("Conteúdo do parenteses: ");
- for(int k = 0; k < Parenteses.size(); k++){
- System.out.print("\nValor: " + ParentesesXouINT.get(k)+ " - Número: " +Parenteses.get(k) + " ~ ");
- }
- System.out.print("\n\n1º Passo: " + aux1 +" [String digitada pelo usuário]") ;
- System.out.println("\n\n2º Passo: [Multiplicando o valor dos parenteses com o sinal já invertido]\n");
- int numeroDoParenteses = 1;
- int cont = 0;
- for (int k = 0; k < MultiplicadorParenteses.size(); k++){ //pego todos números que são multiplicadores
- System.out.print((numeroDoParenteses) + "º Parenteses: "); //mostrando os parenteses sendo resolvidos
- if(MultiplicadorParentesesXouINT.get(k) == 0){ //exibe números com Multiplicadores INT
- for(int CompletandoParenteses = 0; CompletandoParenteses <2; CompletandoParenteses++){
- System.out.print("(" +Math.round(MultiplicadorParenteses.get(k)) + " * "); //exibindo o multiplicador INT
- if(ParentesesXouINT.get(cont) == 0 || ParentesesXouINT.get(cont) == 2){ //verificando se o número dentro do parenteses é um INT
- System.out.print(Math.round(Parenteses.get(cont)));
- if(ParentesesXouINT.get(cont) == 2){
- System.out.print("[INVERTE SINAL]");
- AdicionaNumeroVetor(MultiplicadorParenteses.get(k) * (Parenteses.get(cont) * -1));
- }
- else{
- AdicionaNumeroVetor(MultiplicadorParenteses.get(k) * Parenteses.get(cont));
- }
- cont++;
- }
- else if(ParentesesXouINT.get(cont) == 1 || ParentesesXouINT.get(cont) == 3){ //verificando se o número dentro do parenteses é X
- System.out.print(Math.round(Parenteses.get(cont)) + "x");
- if(ParentesesXouINT.get(cont) == 3){
- System.out.print("[VIRA X & INVERTE SINAL]");
- AdicionaNumeroVetorX(MultiplicadorParenteses.get(k) * (Parenteses.get(cont) * -1));
- }
- else{
- AdicionaNumeroVetorX(MultiplicadorParenteses.get(k) * Parenteses.get(cont));
- }
- cont++;
- }
- if(CompletandoParenteses == 1){ //apenas exibindo os parenteses que fecham
- System.out.print(")");
- }
- else{
- System.out.print(") + ");
- }
- }
- cont--;
- }
- else if (MultiplicadorParentesesXouINT.get(k) == 1){ //exibe números com Multiplicadores X
- for(int CompletandoParenteses = 0; CompletandoParenteses <2; CompletandoParenteses++){
- System.out.print("("+Math.round(MultiplicadorParenteses.get(k)) + "x * "); //exibindo o multiplicador X
- if(ParentesesXouINT.get(cont) == 0 || ParentesesXouINT.get(cont) == 2){ //verificando se o número dentro do parenteses é um Int
- System.out.print(Math.round(Parenteses.get(cont)));
- if(ParentesesXouINT.get(cont) == 0){
- System.out.print("[VIRA X & INVERTE SINAL]");
- AdicionaNumeroVetorX(MultiplicadorParenteses.get(k) * (Parenteses.get(cont) * -1));
- }
- else{
- System.out.print("[VIRA X]");
- AdicionaNumeroVetorX(MultiplicadorParenteses.get(k) * Parenteses.get(cont));
- }
- cont++;
- }
- else if(ParentesesXouINT.get(cont) == 1 || ParentesesXouINT.get(cont) == 3){ //verificando se o número dentro do parenteses é X
- System.out.print(Math.round(Parenteses.get(cont)) + "x");
- if(ParentesesXouINT.get(cont) == 3){
- System.out.print("[INVERTE SINAL]");
- AdicionaNumeroVetorX(MultiplicadorParenteses.get(k) * (Parenteses.get(cont) * -1));
- }
- else{
- AdicionaNumeroVetorX(MultiplicadorParenteses.get(k) * Parenteses.get(cont));
- }
- cont++;
- }
- if(CompletandoParenteses == 1){
- System.out.print(")");
- }
- else{
- System.out.print(") + ");
- }
- }//fim do for
- cont--;
- }
- System.out.println(); numeroDoParenteses++;
- //MultiplicadorParentesesX.remove(k);
- cont++;
- } //final do for
- System.out.print("\n\n3º Passo: ");
- for (int k = 0; k < numerosX.size(); k++){//for para exibir tudo q está dentro do arraylist
- if (numerosX.get(k) < 0){ //analisando se número é negativo para adicionar parenteses
- if(k == numerosX.size() - 1){
- if (numerosX.get(k) < 0)
- System.out.print("(" + Math.round(numerosX.get(k)) + "x)");
- }
- else
- System.out.print("(" +Math.round(numerosX.get(k)) + "x) + ");
- } //fim da análise de negativos
- else if (numerosX.get(k) > 0){
- if(k == numerosX.size() - 1){ //se for o último número não exibe o "+" no final
- System.out.print(Math.round(numerosX.get(k)) + "x"); //mostra todos os números
- }
- else
- System.out.print(Math.round(numerosX.get(k)) + "x + "); //mostra todos os números
- }
- }
- System.out.print(" = ");
- for (int k = 0; k < numeros.size(); k++){//for para exibir tudo q está dentro do arraylist
- if (numeros.get(k) < 0){ //analisando se número é negativo para adicionar parenteses
- if(k == numeros.size() - 1){
- if (numeros.get(k) < 0)
- System.out.print("(" +Math.round(numeros.get(k)) + ")");
- }
- else
- System.out.print("(" +Math.round(numeros.get(k)) + ") + ");
- } //fim da análise de negativos
- else if (numeros.get(k) > 0){
- if(k == numeros.size() - 1){ //se for o último número não exibe o "+" no final
- System.out.print(Math.round(numeros.get(k))); //mostra todos os números
- }
- else
- System.out.print(Math.round(numeros.get(k)) + " + "); //mostra todos os números
- }
- }
- System.out.print(" [Números convertidos para Double, incógnitas para esquerda & números para direita]");
- double soma = 0;
- double somaX = 0;
- for(int somando=0; somando<numerosX.size(); somando++){
- somaX+=(double) Math.round(numerosX.get(somando));
- }
- for(int somando=0; somando<numeros.size(); somando++){
- soma+=(double) Math.round(numeros.get(somando));
- }
- System.out.print("\n4º Passo: " + Math.round(somaX) +"x = " + Math.round(soma));
- System.out.print("\n5º Passo: x = " + Math.round(soma) + " / " + Math.round(somaX));
- System.out.print("\n6º Passo: x = " + (soma / somaX) + "\n");
- }
- public static void AdicionaNumeroVetor(double AdicionarNumero){ //método para adicionar números
- numeros.add(AdicionarNumero);
- }
- public static void AdicionaNumeroVetorX(double AdicionarNumero){ //método para adicionar números
- numerosX.add(AdicionarNumero);
- }
- public static void AdicionaNumeroVetorParenteses(double AdicionarNumero){ //método para adicionar números
- Parenteses.add(AdicionarNumero);
- }
- /* public static void AdicionaNumeroVetorParentesesX(double AdicionarNumero){ //método para adicionar números
- ParentesesX.add(AdicionarNumero);
- }*/
- public static void AdicionaNumeroMultiplicador(double AdicionarNumero){ //método para adicionar números
- MultiplicadorParenteses.add(AdicionarNumero);
- }
- public static void ParentesesXouInt(int AdicionarNumero){ //método para adicionar números
- ParentesesXouINT.add(AdicionarNumero);
- }
- public static void InverterSinaldoParentesesInt(int AdicionarNumero){ //método para adicionar números
- InverterSinalParentesesInt.add(AdicionarNumero);
- }
- public static void InverterSinaldoParentesesX(int AdicionarNumero){ //método para adicionar números
- InverterSinalParentesesX.add(AdicionarNumero);
- }
- public static void NumeroMultiplicadorXouINT(int AdicionarNumero){ //método para adicionar números
- MultiplicadorParentesesXouINT.add(AdicionarNumero);
- }
- } //fim classe
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement