pr0zin Posted March 8, 2013 at 01:53 PM Report #498435 Posted March 8, 2013 at 01:53 PM Boas malta, o meu problema está no facto de eu qerer, num array de inteiros ORDENADO! quando 2 valores sao diferentes, eu qeria incrementar um contador: static int Analisa_flag0(int vetor[]) { int conta=1; int i,j,aux,a=0; for ( i = 0; i < vetor.length; i++ ) for ( j = i; j < vetor.length; j++ ) if ( vetor[ i ] > vetor[ j ] ) { // inverte v[i] e v[j] int k = vetor[ i ]; vetor[ i ] = vetor[ j ]; vetor[ j ] = k; } for(i=0; i<vetor.length; i++) { if(vetor[i]!=vetor[i+1]) conta++; } return conta; } já fiz print do vetor apos ordenaçao e ele de facto ficou bem ordenado, o meu problema reside no facto de quando faço for(i=0; i<vetor.length; i++) { if(vetor[i]!=vetor[i+1]) conta++; } isto nao funciona... podem me ajudar?
pr0zin Posted March 9, 2013 at 01:01 PM Author Report #498537 Posted March 9, 2013 at 01:01 PM ninguem me sabe ajudar ? :s
AJBM Posted March 9, 2013 at 01:07 PM Report #498538 Posted March 9, 2013 at 01:07 PM (edited) Boas! o teu problema esta no if(vetor[i]!=vetor[i+1]) Edited March 9, 2013 at 01:15 PM by AJBM
pr0zin Posted March 9, 2013 at 02:03 PM Author Report #498539 Posted March 9, 2013 at 02:03 PM como me recomendas a fazer? do genero eu tenho o vetor[10,10,11,12,13] e o meu objectivo é contar os casos diferentes, neste caso 4
AJBM Posted March 9, 2013 at 05:37 PM Report #498550 Posted March 9, 2013 at 05:37 PM Contares quantos vezes se repete um dado elemento, e subtrair ao tamanho do array. int vetor[] = {1,1, 3, 2, 4, 6, 1, 7, 8, 9, 2, 3}; o 1 repete se: 2 vezes o 2=1 o 3=1 2+1+1=4 12-4=8
brunoais Posted March 10, 2013 at 09:46 AM Report #498600 Posted March 10, 2013 at 09:46 AM @pr0zin Esse título do tópico não é apropriado tendo em conta o assunto. Ele viola a regra 2.5: O título deve descrever a dúvida do utilizador e nunca conter frases como "Please help meeeee..." ou "duvida urgentíssima". Em caso de incumprimento o staff pode editar o tópico, ou solicitar ao autor que o edite. Melhora-o, sff. Se precisares de ajuda, envia-me PM. 1 Report "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%.
pr0zin Posted March 10, 2013 at 02:16 PM Author Report #498614 Posted March 10, 2013 at 02:16 PM ÃJBM a melhor maneira de fazer isso, é com 2 ciclos for? desculpa a minha chatisse xD
AJBM Posted March 10, 2013 at 02:33 PM Report #498615 Posted March 10, 2013 at 02:33 PM ÃJBM a melhor maneira de fazer isso, é com 2 ciclos for? desculpa a minha chatisse xD Sim
Rui Carlos Posted March 10, 2013 at 03:39 PM Report #498618 Posted March 10, 2013 at 03:39 PM Qual é exactamente o problema do teu código original? Suspeito que fosse ter problemas a ter problemas a aceder a posições for do array. Mas tirando isso, devia funcionar. Rui Carlos Gonçalves
AJBM Posted March 10, 2013 at 03:50 PM Report #498623 Posted March 10, 2013 at 03:50 PM Também podes fazer so com um ciclo, já que ele esta ordenado. Só tens que alterar o teu if.
pr0zin Posted March 10, 2013 at 05:19 PM Author Report #498646 Posted March 10, 2013 at 05:19 PM (edited) podes me explicar como? é qe estou mesmo embarrado nesta flag :| consegui amigo!!! for(i=0; i<vetor.length; i++) { if(i+1==vetor.length) return conta; if(vetor[i]!=vetor[i+1]) conta++; } return conta; } adicionei esse if e resolvi o problema! abraço edit3: o meu problema estava no facto de quando eu acedia ao vetor[tamanho], e passava o limite do vetor! xD podem fechar! Edited March 10, 2013 at 05:27 PM by pr0zin
AJBM Posted March 10, 2013 at 05:33 PM Report #498650 Posted March 10, 2013 at 05:33 PM quantos elementos diferentes existem neste array, int vetor[] = {1, 1, 3, 2, 4, 6, 1, 7, 8, 9, 2, 3}; 1,2,3,4,6,7,8,9 existem 8 algarismos diferentes certo?
Rui Carlos Posted March 10, 2013 at 06:10 PM Report #498660 Posted March 10, 2013 at 06:10 PM No teu código original, substitui i < vetor.length por i < vetor.length-1. Fica bem melhor do com o if que adicionaste... Rui Carlos Gonçalves
HappyHippyHippo Posted March 11, 2013 at 10:53 AM Report #498714 Posted March 11, 2013 at 10:53 AM (edited) ÃJBM a melhor maneira de fazer isso, é com 2 ciclos for? desculpa a minha chatisse xD Sim não ... a um array ordenado, é possível contabilizar a quantidade de números diferentes somente com um ciclo int[] lista; // .. ordernação int ndiff = 0; for (int i = 1; i < lista.length; i++) { if (lista[i] != lista[i - 1]) ndiff++; } Edited March 11, 2013 at 10:53 AM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
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