Programa com arrays em java, urgente!

10 respostas
S

É q o meu problema é o seguinte:

tenho estes métodos pra implementar:

public class ArrayUtils { 
 /* Apresenta na consola os valores de "a". 
 Ex: Se "a" contém os valores 2, 1 e 5, então o método apresenta 
 o array na forma [2, 1, 5] */ 
 
 public void writeln(int[] a) { /* a implementar */ } 
 
 /* Retorna um array sem as repetições que possam existir em "a" */ 
 public int[] removeDuplicates(int[] a) { /* a implementar */ } 
 
 /* NOTA: Os três métodos seguintes consideram os arrays como 
 conjuntos (coleccções de inteiros sem repetições) */ 
 
 /* Retorna um novo array, que contém os elementos que 
 correspondem ao conjunto diferença entre "a" e "b" */ 
 public int[] difference(int[] a, int[] b) { /* a implementar */ } 
 
 /* Retorna um novo array, que contém os elementos que 
 correspondem ao conjunto intersecção entre "a" e "b" */ 
 public int[] intersection(int[] a, int[] b) { /* a implementar */ } 
 
 /* Retorna um novo array, também sem repetições, que contém 
 os elementos que correspondem ao conjunto união entre "a" e "b" */ 
 public int[] union(int[] a, int[] b) { /* a implementar */ } 
 
 }

e pra testar isso tnh isto:

public class Teste { 
 public static void main(String[] args) { 
 int[] array1 = {1,6,1,2,5}; 
 int[] array2 = {3,1,1,3,44,2,1,1}; 
 ArrayUtils au = new ArrayUtils(); 
 
 System.out.print("Elementos do array1:"); 
 au.writeln(array1); 
 
 System.out.print("Elementos do array2:"); 
 au.writeln(array2); 
 
 System.out.print("Retirar elementos repetidos do array1"); 
 array1 = au.removeDuplicates(array1); 
 au.writeln(array1); 
 
 System.out.print("Retirar elementos repetidos do array2"); 
 array2 = au.removeDuplicates(array2); 
 au.writeln(array2); 
 
 System.out.println("Uniao dos elementos entre array1 e array2 "); 
 int[] uniao = au.union(array1, array2); 
 au.writeln(uniao); 
 
 System.out.print("Interseccao dos elementos entre array1 e array2"); 
 int[] interseccao = au.intersection(array1, array2); 
 au.writeln(interseccao); 
 
 System.out.print("Diferenca dos elementos array2 e array1 "); 
 int[] diferenca = au.difference(array2, array1); 
 au.writeln(diferenca); 
 } 
 }

mas eu nao percebo nada disto :cry: :cry:

10 Respostas

V

E qual é a dúvida??

Ou tu quer q a gente implemente pra ti? (Estás pagando quanto a hora?)

S

la pergunta??? rs!

S

Sorry. Não é isso. é a parte do ver se o array tem numeros repetidos e tira los de la?

V

tá, mas…

“viecili”:
E qual é a dúvida??

Ou tu quer q a gente implemente pra ti? (Estás pagando quanto a hora?)

S

É essa a dúvida, não consigo fazer o método removeDuplicates…

V

e em qual parte tá dando erro?

S

É a parte do removeduplicates, nao consigo fazer isso…

V

public static <T> T[] removeDuplicates(T... array) { Set<T> set = new LinkedHashSet<T>(); Collections.addAll(set, array); return set.toArray((T[]) Array.newInstance(array.getClass().getComponentType(), 0)); }

S

Nao posso usar sets, ainda nao dei isso nas aulas…

V

Sinceramente eu acho q não devia te ajudar, pq pelo q parece vc nem tentou fazer o algoritmo… mas como isso aqui é um fórum construtivo vou te explicar o q tens q fazer:

  1. Crie um novo array vazio (com tamanho igual ao array de origem)
  2. Para cada elemento no array de origem, faça:
    a. verifique se o elemento já está contido no novo array
    a1. ignore este elemento (repetido)
    b. senão
    b1. inclua esse elemento no array
  3. retorne o novo array

Nesse algoritmo não expliquei como ajustar o tamanho do novo array caso exista algum elemento repetido, vou deixar pra ti resolver esse problema.

Criado 24 de maio de 2007
Ultima resposta 25 de mai. de 2007
Respostas 10
Participantes 3