No que concerne aos aspectos de linguagens de programação, ...

Próximas questões
Com base no mesmo assunto
Ano: 2015 Banca: CESPE / CEBRASPE Órgão: MEC Prova: CESPE - 2015 - MEC - Desenvolvedor |
Q602394 Algoritmos e Estrutura de Dados
No que concerne aos aspectos de linguagens de programação, algoritmos, estrutura de dados e case, julgue o item subsequente.

O algoritmo apresentado a seguir, desenvolvido na linguagem Java, retornará true se não houver elementos comuns entre os arranjos a, b e c, ou seja, se os três conjuntos forem disjuntos.

             Imagem associada para resolução da questão
Alternativas

Comentários

Veja os comentários dos nossos alunos

Conjuntos disjuntos. Em matemática, dois conjuntos são ditos disjuntos se não tiverem nenhum elemento em comum. Em outras palavras, dois conjuntos são disjuntos se sua interseção for o conjunto vazio.

Com base na afirmação da questão a condição do "if" nunca será satisfeita, logo retorna TRUE;

CERTO!

Alguém poderia explicar como identificar nessa situação aqueles dois returns? Pois eles parecem estar no mesmo bloco do "if"...

GABARITO: CERTO

Para facilitar a compreensão reescrevi o código utilizando { }

public boolean AvaliaConjuntos(int[] a, int[] b, int[] c) {

    for (int i = 0; i < a.length; i++) {

        for (int j = 0; j < b.length; j++) {

            for (int k = 0; k < c.length; k++) {

                if ((a[i] == b[j]) && (b[j] == c[k])) { 

                    return false;

                }

            }

        }

    }

    return true;

}

Nesse caso, repare que os conjuntos são disjuntos se não houver elemento em comum entre eles, ou seja:

Exemplo de conjuntos disjuntos retornando TRUE

int[] a = {1, 2, 3}; int[] b = {4, 5, 6}; int[] c = {1, 8, 9};

Repare que o vetor b não possui o número 1

Exemplo de conjuntos não disjuntos retornando FALSE

int[] a = {1, 2, 3}; int[] b = {1, 5, 6}; int[] c = {1, 8, 9};

Repare que todos os vetores possuem o elemento 1

Força Guerreiro!!!!!!

para mim essa questão é errada, sem dúvida. O colega Daniel não poderia aninhar outro for dentro de outro for sem prejuízo do algoritmo.

Se em vez de && fosse ou estava certo.

conjunto a= {1,2}, b= {4,5} e c= {6,5} não são disjuntos pois o "b" e "c" tem o "5", mas nunca vai entrar no false.

já na segunda iteração do for interno: a[0] 1 == b[1] 5 && b[1] 5 == c[1] 5 => false && true => false,

logo não são disjuntos mas o algoritmo não pegou.

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo