No que concerne aos aspectos de linguagens de programação, ...
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.
Comentários
Veja os comentários dos nossos alunos
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