Gente eu estou me complicando na hora de fazer esse codigo !
10 respostas
K
Kevin_Maia
Dado um array de objetos A e uma soma S construa uma função que indique se dois
elementos diferentes do array têm soma S.
Está dando erro na hora de mostrar a soma, eu nao sei o que eu estou fazendo de errado…
publicstaticvoidmain(String[]args){Scannert=newScanner(System.in);System.out.println("Tamanho");intx=t.nextInt();List<Integer>A=newArrayList<Integer>(x);for(inti=0;i<x;i++){intb;System.out.printf("Número %d:",i+1);b=t.nextInt();A.add(b);}System.out.println("Soma: ");intsoma=t.nextInt();if(!A.contains(soma))System.out.printf("FALSO: não existe nenhuma combinação de dois elementos que somem %d\n",soma);elsefor(inti=0;i<x;i++){if(A.get(i)+A.get(i+1)==soma){System.out.printf("TRUE; %d + %d\n",A.get(i),A.get(i));}}}}
entoa o erro é o seguinte, eu tenho que somar cada item na lista, e noa simplesmente todos saca ?
tenoh que somar o primeiro com o segundo e ve se dá o valor, se nao der eu tenho que somar com o terceiro e assim por diante
depois eu tenho que imprimir desta maneira se houver resultado
“9: true: 7 + 2, 6 + 3, 4 + 5”
eu nao to sabendo imprimir desta forma
V
Vagner_Andrade
Pegando por esse array de exemplo:
A = [1,2,3,4,5,6,7,8,9,10]
S = 9
Você pega o primeiro da lista (1), subtrai da soma S(9). Vai achar 8, certo? verificar se o 8 ta lista A. Se sim, você imprime o primeiro da lista (1), e o valor 8. Se não, passa pro proximo item da lista (2) e faz a mesma logica de novo.
importjava.io.PrintStream;importjava.util.Scanner;publicclassExemplo{publicstaticvoidmain(String[]args){try{Exemploprograma=newExemplo();programa.executar();}catch(Throwablet){t.printStackTrace();}}privatefinalScannerentrada=newScanner(System.in);privatefinalPrintStreamsaida=System.out;publicvoidexecutar(){inttamanho=ler("Tamanho do array: ");int[]array=newint[tamanho];for(inti=0;i<tamanho;i++){array[i]=ler("Número %d: ",i+1);}intsoma=ler("Soma: ");Stringcombinacoes=calcularCombinacoes(array,soma);escrever(combinacoes);}privateStringcalcularCombinacoes(int[]array,intsoma){StringBuildertexto=newStringBuilder();inttamanho=array.length;for(intx=0;x<tamanho-1;x++){for(inty=x+1;y<tamanho;y++){intprimeiro=array[x];intsegundo=array[y];if(primeiro+segundo==soma){if(texto.length()==0){texto.append("true: ").append(primeiro).append(" + ").append(segundo);}else{texto.append(", ").append(primeiro).append(" + ").append(segundo);}}}}if(texto.length()==0){texto.append("false: não existe nenhuma combinação de dois elementos que somem ").append(soma);}returntexto.toString();}privateintler(Stringmensagem,Object...parametros){escrever(mensagem,parametros);returnInteger.parseInt(entrada.nextLine());}privatevoidescrever(Stringmensagem,Object...parametros){saida.printf(mensagem+"%n",parametros);}}
V
Vagner_Andrade
calma ai bonitão. ele mesmo usou a classe list ali no exemplo dele. por isso usei. eu não quis fazer o exercício todo, não tenho motivo me achar melhor que alguém aqui. tanto só pus algo bem genérico pra ele pegar a ideia. a logica que coloquei faz justamente o que pede e enunciado. Pego a soma solicitada, subtraio de um valor da lista. Se o resultado existe em alguma posição da lista eu mostro.