1
resposta

[Desafio de código] Acumulador i=i+1; j=j-1.

Recebi um teste de programação que continha esse desafio, que acabei não conseguindo fazer(Infelizmente não salvei o texto, então estou escrevendo de acordo com o que eu lembro): Existe esse método que recebe três variáveis inteiras e retorna um long. O objetivo é que eu receba esses valores e realize a seguinte conta: "i=i+1" até chegar em j, depois "j=j-1" até chegar em k. Vamos supor que i=5, j=9 e k=7. Meu output seria, nesse caso:

(i=5+6=11); (i=11+7=18); (i=18+8=26);(i=26+9=35). (j=9-8=-1);(j=1-(-7)=-6);(j=-6-(-6)=-12)

No final, eu teria que somar esses dois resultados(35+(-12)=23) e retornar esse valor. Meu código atual está assim:

package test.sequences;

import java.io.IOException;

class Result {

    /*
     * Complete the 'getSequenceSum' function below.
     *
     * The function is expected to return a LONG_INTEGER.
     * The function accepts following parameters:
     *  1. INTEGER i
     *  2. INTEGER j
     *  3. INTEGER k
     */

    public static long getSequenceSum(int i, int j, int k) {
        int recorderOfVari;
        int accumulatorOfVari = 0;
        recorderOfVari = i;
        int interatorOfVari;
        //5+6=11;11+7=18;18+8=26;26+9=35;
        for(interatorOfVari = 0; i<=j; interatorOfVari++){
            recorderOfVari = i++;
            accumulatorOfVari= accumulatorOfVari+recorderOfVari;
//            System.out.println(recorderOfVari);
//            System.out.println(accumulatorOfVari);
        }
        int recorderOfVarj;
        int accumulatorOfVarj = 0;
        recorderOfVarj = j;
        int interatorOfVarj;
        //(9-8=1);(1-(-7)=-6);(-6-(-6)=-12)
        for(interatorOfVarj=0;j>=k;interatorOfVarj++){
            recorderOfVarj = j--;
            accumulatorOfVarj = accumulatorOfVarj-recorderOfVarj;
//            System.out.println(recorderOfVarj);
            System.out.println(accumulatorOfVarj);
        }
        long test = 0;
        test = accumulatorOfVari;
        return test;
    }
    public static void main(String[] args) throws IOException {
        Result result = new Result();
        long resultado;
        resultado = result.getSequenceSum(5,9,6);
        System.out.println(resultado);
    }
}

Alguém consegue me dar uma mão?

1 resposta

Oi Karina, tudo bem?

Parece que você está no caminho certo, mas seu código ainda precisa de algumas correções para alcançar o resultado desejado. Vou apontar algumas áreas para melhorar e você :

  1. O loop for que calcula a sequência para i está correto, mas o loop para j não está funcionando corretamente. Você está usando j em vez de recorderOfVarj como condição de parada.
  2. Você está imprimindo accumulatorOfVarj no loop para j, mas isso não é necessário para a lógica de cálculo.
  3. Você precisa somar accumulatorOfVarj ao resultado final.

Você pode fazer assim:

class Result {

    public static long getSequenceSum(int i, int j, int k) {
        int recorderOfVari;
        int accumulatorOfVari = 0;
        recorderOfVari = i;
        int interatorOfVari;
        // i=i+1 sequence
        for (interatorOfVari = 0; i <= j; interatorOfVari++) {
            recorderOfVari = i++;
            accumulatorOfVari = accumulatorOfVari + recorderOfVari;
        }

        int recorderOfVarj;
        int accumulatorOfVarj = 0;
        recorderOfVarj = j;
        int interatorOfVarj;
        // j=j-1 sequence
        for (interatorOfVarj = 0; j >= k; interatorOfVarj++) {
            recorderOfVarj = j--;
            accumulatorOfVarj = accumulatorOfVarj + recorderOfVarj;
        }

        // Soma dos resultados para i e j
        long result = accumulatorOfVari + accumulatorOfVarj;
        return result;
    }

    public static void main(String[] args) {
        Result result = new Result();
        long resultado = result.getSequenceSum(5, 9, 6);
        System.out.println(resultado);
    }
}

Agora o código deve calcular corretamente a soma da sequência para i e j e retornar o resultado final. Mas lembrando que essa é somente uma ideia, você pode ter que ajustar algumas coisas ;)

Um abraço e bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software