Boa tarde rapaz.
Sua questão é interessante. Tenta fazer assim… Cria uma lista secundária e dentro de um laço de repetição vai adicionando os valores de sua lista. Antes de adicionar faça uma verificação, se aquele valor já existe na sua lista, se sim, incrementa um contador e remove esse valor da lista, se não apenas adicione o valor.
A questão de remover o valor assim que detectar o par é para que caso exista um segundo par desse valor, seja possível achá-lo também.
R
Rodrigo_Marden1 like
Ordene sua list e depois compare o valor com o próximo, assim você conseguirá saber se existe ou não valores iguais. (i == i+1)
R
raphaeloneves1 like
Engraçado que a tendência é a gente ficar naquele pensamento dentro da caixa. A primeira coisa que me veio à cabeça foi entrar num for, comparando valor, incrementado e o paranauê todo. kkkk
Solução bem elegante e prática essa!!!
Valeu por abrir minha mente.
L
LUISHTF
Opa valeu irmão estou junto com o Rodrigo eu fiz um for e fui incrementando, mas ta rolando algo que não estou vendo pq não tras as informações que preciso, mas irei testar sua ideia.
Valeu!
R
Rodrigo_Marden
Só tome cuidado na hora de realizar a comparação, pois por utilizar o i+1, pode ser que estoure a list, então o seu for deve ser i<list.length e não <=.
D
darlan_machado
Cara, lendo isso:
Pensei: pega o valor da iésima posição e divide por 2, se o resto for zero, é par.
Porém, só lendo as respostas é que entendi que o tal “par” é a combinação de dois valores iguais em posições distintas.
A pergunta que não quer calar é: o que você está estudando? Especificamente, sobre o quê é este exercício?
Explico: existe mais de uma forma de obter esta resposta, por isso preciso entender exatamente o cenário.
L
LUISHTF
O exercicio é tenho uma caixa cheio de luvas, mas só podem sair da caixa pares do mesmo tamanho.
desenvolva um algortimo que receba a quantidade de luvas e o tamanho a quantidade maximo de pares.
exemplo de resposta
3 - pares sendo ele (10 e 10; 20 e 20; 10 e 10)
Deu para entender? é trabalho da Facul!
D
darlan_machado
Agora ficou mais fácil.
Porém, você está estudando estrutura de repetição (for/while/do-while)? Ou está vendo a classe Array?
L
LUISHTF
public class Logica {
privateintquantidadeLuvas=0;privateArrayList<Integer>tamanhos=newArrayList<Integer>();privateintflag=0;privateinty=0;publicintgetQuantidadeLuvas(){returnquantidadeLuvas;}publicintinsereQuantidade(){do{Scannerscan=newScanner(System.in);System.out.println("Entre com uma quantidade de luvas na caixa");try{quantidadeLuvas=scan.nextInt();if(quantidadeLuvas<1||quantidadeLuvas>100){System.out.println("Quantidade invalida entre com um valor de 1 a 100");}}catch(InputMismatchExceptione){System.out.println("Digite apenas numeros");}}while(quantidadeLuvas<1||quantidadeLuvas>100);returnquantidadeLuvas;}publicList<Integer>insereTamanho(){do{Scannerscanner=newScanner(System.in);System.out.println("Entre com os Tamanhos");try{y=scanner.nextInt();if(y<1||y>100){System.out.println("Tamanhos invalido entre com um tamanho de 1 a 100");}else{tamanhos.add(y);flag++;}}catch(InputMismatchExceptione){System.out.println("Digite apenas numeros");}}while(flag<quantidadeLuvas);returntamanhos;}
}
Isso foi oq fiz, mas to travado aqui é um desafio não importa como eu faço!
D
diego12
Vc poderia usar um Map<Integer, Integer> ou um List<int[]>.
Seria melhor criar uma classe e usar um List<Luvas> ou Map<int,Luvas> assim:
privateintquantidade=0;privateintflag=0;privateArrayList<Integer>tamanho=newArrayList<Integer>();privateinty=0;privateintpares=0;publicintgetQuantidade(){returnquantidade;}publicintinserirQuantidade(){do{Scannerscan=newScanner(System.in);try{System.out.println("Entre com uma quantidade");quantidade=scan.nextInt();if(quantidade<1||quantidade>100){System.out.println("Quantidade invalida entre com uma quantidade de 1 a 100");}}catch(InputMismatchExceptione){System.out.println("Digite apenas numeros");}}while(quantidade<1||quantidade>100);returnquantidade;}publicList<Integer>inserirTamanho(){do{Scannerscan=newScanner(System.in);System.out.println("Digite um tamanho");try{y=scan.nextInt();if(y<1||y>100){System.out.println("Numero invalido entre com um numero de 1 a 100");}else{tamanho.add(y);flag++;}}catch(InputMismatchExceptione){System.out.println("Digite apenas numeros");}}while(flag<quantidade);returntamanho;}publicList<Integer>mostraPares(){Map<Integer,Integer>pairs=newHashMap<Integer,Integer>();for(inti=0;i<tamanho.size();i++){if(!pairs.containsKey(tamanho.get(i))){pairs.put(tamanho.get(i),1);}else{inttotal=pairs.get(tamanho.get(i));pairs.put(tamanho.get(i),++total);}}for(Map.Entry<Integer,Integer>item:pairs.entrySet()){if(item.getValue()>1){pares+=(int)item.getValue()/2;}}returntamanho;}publicList<Integer>mostraLista(){for(inti=0;i<tamanho.size();i++){System.out.print(tamanho.get(i)+" ");}returntamanho;}publicintgetPares(){returnpares;}
}
Talvez até tenha dado algumas voltas mas funcionou rsrs
R
Rodrigo_Marden
Lembrando que existem N soluções para um mesmo problema, algumas mais fáceis, mais trabalhosas.
Mas o mais importante é que funcione. Só lembre que pode ser que não você a dar continuidade no trabalho para sempre, então procure aquela que você entenda e que o “talvezpróximo” possa entender com facilidade também.