GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Gente eu estou me complicando na hora de fazer esse codigo !


#1

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…

public static void main(String[] args) {
        Scanner t = new Scanner(System.in);
        
        System.out.println("Tamanho");
        int x = t.nextInt();
        
        List<Integer> A = new ArrayList<Integer>(x); 
        
        for(int i = 0; i < x; i++){
            int b;
            System.out.printf("Número %d:", i+1);
            b = t.nextInt();
            A.add(b);
            
        }
        
        System.out.println("Soma: ");
        int soma = t.nextInt();
        
        if(!A.contains(soma))
            System.out.printf("FALSO: não existe nenhuma combinação de dois elementos que somem %d\n", soma);
        else
        for (int i = 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));     
            }            
        }          
    }
}

Somar elementos de uma list
#2

Que erro tá dando aí? Eu testei e funcionou…


#3

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


#4

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.


#6

for(int i = 0; i < x; i++){
int valor = soma - a[i];
if(a.contains(valor)){
System.out.printf(“TRUE; %d + %d\n”, soma, A.get(i));
}


#7

Você já começou errado pois o enunciado diz para usar array e você está usando lista.

Esse código verifica se dentro da sua lista existe um número que seja igual à soma digitada menos o valor de determinada posição.
Isso serve pra quê?

for (int i = 0; i < x; i++) {
    int valor = soma - a[i];
    if (a.contains(valor)) {
        System.out.printf(“TRUE; %d + %d\n”, soma, A.get(i));
    }
}

Exemplo que funciona:

import java.io.PrintStream;
import java.util.Scanner;

public class Exemplo {

    public static void main(String[] args) {
        try {
            Exemplo programa = new Exemplo();
            programa.executar();
        } catch (Throwable t) {
            t.printStackTrace();
        }
    }

    private final Scanner entrada = new Scanner(System.in);
    private final PrintStream saida = System.out;

    public void executar() {
        int tamanho = ler("Tamanho do array: ");

        int[] array = new int[tamanho];
        for (int i = 0; i < tamanho; i++) {
            array[i] = ler("Número %d: ", i + 1);
        }

        int soma = ler("Soma: ");

        String combinacoes = calcularCombinacoes(array, soma);
        escrever(combinacoes);
    }

    private String calcularCombinacoes(int[] array, int soma) {
        StringBuilder texto = new StringBuilder();
        int tamanho = array.length;
        for (int x = 0; x < tamanho - 1; x++) {
            for (int y = x + 1; y < tamanho; y++) {
                int primeiro = array[x];
                int segundo = 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);
        }
        return texto.toString();
    }

    private int ler(String mensagem, Object... parametros) {
        escrever(mensagem, parametros);
        return Integer.parseInt(entrada.nextLine());
    }

    private void escrever(String mensagem, Object... parametros) {
        saida.printf(mensagem + "%n", parametros);
    }
}

#9

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.


#10

Mas a resposta foi pro @Kevin_Maia. :expressionless:


#12

deu ruim


#13

Não esquece de mostrar isso aqui pro pessoal do processo seletivo.


#14

so nao entendi uma coisa, fiz a base do codigo mas noa posso pedir ajuda a alguem ???

Voce tenta uma parada e nao consegue voce nao pede ajuda pra aprender ??

Ser no goolge ou nao eu tbm tenho amigos que me ajudam, ou voce é genio e consegue fazer tudo sozinho ???

Mario_Andre_Franco…