Guest NoOne Posted November 25, 2006 at 02:35 PM Report #66596 Posted November 25, 2006 at 02:35 PM import javax.swing.JOptionPane; public class Main { public static void main(String[] args) { int [] vec = new int[100]; int [] vec2 = new int[100]; int i = -1, a=0, j, aparece; int num, soma=0; String numero; //avisar parametros de introduçao dos numeros JOptionPane.showMessageDialog(null,"Para finalizar a introduçao de elementos introduza o numero zero","Aviso",JOptionPane.WARNING_MESSAGE); // ler vector do { i=i+1; numero=JOptionPane.showInputDialog("numero: "); vec[i]=Integer.parseInt(numero); }while(vec[i] != 0); // ALINEA B //mostrar no ecrã para cada número existente no vector a quantidade de vezes que foi introduzido. int flag=1; a=0; j=0; aparece=0; for (j=0;j<i;j++) { for (a=0;a<i;a++) { if (vec[j]==vec[a]) aparece=aparece+1; } JOptionPane.showMessageDialog(null,"o numero "+vec[j]+" aparece: "+aparece+" vezes"); aparece=0; } System.exit(0); } } neste exercicio tou com um problema na alinea B... é suposto encontrar quantas vezes um numero se repete num vector... por exemplo o vector: 2 1 1 2 5 era suposto dizer: o numero 2 aparece 2x o numero 1 aparece 2x o numero 5 aparece 1x no entanto aparece: o numero 2 aparece 2x o numero 1 aparece 2x o numero 1 aparece 2x o numero 2 aparece 2x o numero 5 aparece 1x eu sei pork é k ta a aparecer assim, mas n sei como resolver... alguma sugestão? dava imenso jeito resolver este problema
shumy Posted November 25, 2006 at 02:47 PM Report #66598 Posted November 25, 2006 at 02:47 PM Claro... percorres v[j] que tem 5 números e logo vão-te aparecer 5 linhas de resultados. Estas a calcular quantas vezes aparece o 1 e o 2repetidas vezes porque este aparece repetido no vector vec[j]. Aqui há coisa de 2 anos fazia umas malhas de croché, depois fartei-me e fui para informática!
Guest NoOne Posted November 25, 2006 at 02:49 PM Report #66599 Posted November 25, 2006 at 02:49 PM issso eu sei... mas n tou a ver como hei-de fazer sem ser assim :S
shumy Posted November 25, 2006 at 03:00 PM Report #66602 Posted November 25, 2006 at 03:00 PM e tem obrigatoriamente que se fazer com um array... Podias ir retirando os números que apanhas... mas com arrays não é a melhor opção para estar constantemente a retirar numeros da estrutura de dados. Aqui há coisa de 2 anos fazia umas malhas de croché, depois fartei-me e fui para informática!
Rui Carlos Posted November 25, 2006 at 03:03 PM Report #66603 Posted November 25, 2006 at 03:03 PM uma solução pode passar por ordenar o array... Arrays.sort(vec); int aux; for(j=1,aux=vec[0],aparece=0;j<i;j++) { if(vec[j]==aux) { aparece++; } else { //imprime '$vec[j-1]$ repete-se $aparece$ vezes' aparece=1; aux=vec[j]; } } //imprime '$vec[j-1]$ repete-se $aparece$ vezes' EDIT: o método sort está implementado na classe Arrays e não na Array. Rui Carlos Gonçalves
shumy Posted November 25, 2006 at 03:10 PM Report #66606 Posted November 25, 2006 at 03:10 PM Esse código parece-me que falha no facto de aux ter sempre o valor vec[0]. não? Acrescenta aux=vec[j] e substitui aparece=0 por aparece=1. Aqui há coisa de 2 anos fazia umas malhas de croché, depois fartei-me e fui para informática!
Rui Carlos Posted November 25, 2006 at 03:18 PM Report #66608 Posted November 25, 2006 at 03:18 PM Esse código parece-me que falha no facto de aux ter sempre o valor vec[0]. não? Acrescenta aux=vec[j] e substitui aparece=0 por aparece=1. alterado... Rui Carlos Gonçalves
Guest NoOne Posted November 25, 2006 at 03:38 PM Report #66613 Posted November 25, 2006 at 03:38 PM pois mas como n dei isso axo k ela n deixa usar =/ no outro dia fiz um prog com class Vector e ela disse k n pudia usar isso pk inda n tinhamos dado :S
Rui Carlos Posted November 25, 2006 at 03:44 PM Report #66614 Posted November 25, 2006 at 03:44 PM pois mas como n dei isso axo k ela n deixa usar =/ no outro dia fiz um prog com class Vector e ela disse k n pudia usar isso pk inda n tinhamos dado :S podes sempre fazer tu uma função de ordenação. penso que é a forma mais simples de resolver o problema. Rui Carlos Gonçalves
shumy Posted November 25, 2006 at 03:46 PM Report #66615 Posted November 25, 2006 at 03:46 PM Então... podes usar o 0 como marcador. Sempre que passas por um número que vai ser contado altera-o para 0. E não contes os 0's. Podes apresentar a solução do Carlos na mesma só para impressionar 🙂 Ou então podes ir inserindo os números ordenando-os. Aqui há coisa de 2 anos fazia umas malhas de croché, depois fartei-me e fui para informática!
Guest NoOne Posted November 25, 2006 at 05:00 PM Report #66629 Posted November 25, 2006 at 05:00 PM shummy como tas a dizer vai aparecer: o numero 2 aparece 2x o numero 1 aparece 2x o numero 1 aparece 1x o numero 2 aparece 1x o numero 5 aparece 1x
shumy Posted November 25, 2006 at 05:05 PM Report #66631 Posted November 25, 2006 at 05:05 PM Isso é o código que tens! Marca as posições no array que já contaste com 0. E nas interações vai ignorando quando o marcador aparece. Aqui há coisa de 2 anos fazia umas malhas de croché, depois fartei-me e fui para informática!
Guest NoOne Posted November 27, 2006 at 02:27 PM Report #67048 Posted November 27, 2006 at 02:27 PM lol altos filmes e acabei por resolver duma forma simples... for (j=0;j<i;j++) { if (vec[j]==0) break; cont[vec[j]]=cont[vec[j]]+1; } j=1; do{ JOptionPane.showMessageDialog(null,"o numero "+j+" aparece: "+cont[j]); j=j+1; }while(j<10);
shumy Posted November 27, 2006 at 02:46 PM Report #67057 Posted November 27, 2006 at 02:46 PM Não acho que essa solução seja especialmente boa. De que tamanho é o array cont? Se for 100, que acontece se eu colocar o numero 105? Aqui há coisa de 2 anos fazia umas malhas de croché, depois fartei-me e fui para informática!
Guest NoOne Posted November 27, 2006 at 03:58 PM Report #67075 Posted November 27, 2006 at 03:58 PM tinha-me eskecido de dizer k os valores d vec sao entre 1 e 9 👍 no programa k pus inicialmente inda n tinha controlado a introduçao do vector...
shumy Posted November 27, 2006 at 04:03 PM Report #67077 Posted November 27, 2006 at 04:03 PM tinha-me eskecido de dizer k os valores d vec sao entre 1 e 9 👍 no programa k pus inicialmente inda n tinha controlado a introduçao do vector... Lá está... problemas na especificação do problema 😛 Aqui há coisa de 2 anos fazia umas malhas de croché, depois fartei-me e fui para informática!
Rui Carlos Posted November 27, 2006 at 05:45 PM Report #67116 Posted November 27, 2006 at 05:45 PM não é por nada, mas não devias usar breaks para interromper ciclos... podias usar antes uma variável boolena. Rui Carlos Gonçalves
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now