Skywalker Postado Setembro 19, 2004 Denunciar Share Postado Setembro 19, 2004 gostaria que me ajudassem a fazer o seguintetenho um vetor no meu código que não pode aceitar valores repetidos. Como posso impedir que isso aconteça ?obrigado. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Setembro 19, 2004 Denunciar Share Postado Setembro 19, 2004 Percorra o vetor todo antes de adicionar um número, procurando se aquele número já está presente. Caso negativo, adicione-o.Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Skywalker Postado Setembro 19, 2004 Autor Denunciar Share Postado Setembro 19, 2004 um exemplo da minha dificuldade:int i;leio uma vez fora do while para ter uma referencia, não sei se estou certo . . . estou ?i=1;printf("entrar com um valor");scanf("%d",&c);i=2;while(i<=5) { printf("entrar com um valor"); scanf("%d",&c); creio que seja aqui que eu tenha de percorrer o vetor. MAS COMO ? i=i+1; }muito obrigado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Setembro 19, 2004 Denunciar Share Postado Setembro 19, 2004 (editado) Exatamente, e você pode usar o próprio while para percorrer do mesmo jeito que você está fazendo para adicionar. Todavia, recomendo usar o for para isso. A cada iteração (cada volta no loop) do while, "i" não possui um valor diferente? Você não usa esse valor para colocar o número em uma determinada posição do vetor? O que te impede de usar também o mesmo artifício, porém para verificar os números nas posições do vetor?Abraços,GraymalkinPS: você também não precisa ler do lado de fora do while o primeiro valor. Editado Setembro 19, 2004 por Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Wicker Man Postado Setembro 19, 2004 Denunciar Share Postado Setembro 19, 2004 Opa!Aê, galera:int i = 0, j = 0, c[ 6 ], aux, iguais = 0; while ( i < 6 ) { printf( "Entrar com um valor: " ); scanf( "%d", &aux ) j = 0; while ( j <= i ) { if ( aux == c[ j ] ) { iguais++; break; } j++; } if ( iguais > 0 ) { printf( "Num pode ser repeteco!" ); continue; } else c[ i ] = aux; i++; }Eu joguei uma variável contadora chamada "iguais". Percorri novamente o array (veja o loop mais interno), mas só até onde a variável "i" foi (não faz sentido ir além porque o caminho além da variável "i" ainda não foi desbravado). Bom, quando um número igual ao número entrado é encontrado, a variável "iguais" é incrementada de 1 e pára o loop interno, seguindo com o externo.E a sugestão do Graymalkin (mais uma vez) é boa: é melhor usar o laço "for".Valeu, galera! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 iSoron Postado Setembro 19, 2004 Denunciar Share Postado Setembro 19, 2004 Se você tiver ume entrada restrita, como números de 0 a 100, por exemplo, pode ser mais vantajoso usar uma estrutura Hash para fazer esse algoritmo. É assim:Você cria um vetor de booleanos que indicam se o numero está ou não presente. Para conferir, basta checar a posiçao vetor.A tabela Hash tem a vantagem de ter tempo de leitura e gravação O(1). Em compensação, exige espaço extra na memória. Em casos de 1000 entradas até 10000, ou até mais, é preferivel usar hash. Afinal, ninguém nota se seu programa usa 100kb a mais de memoria, mas todo mundo nota se ele leva um segundo pra cada coisa q for registrar. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Skywalker Postado Setembro 23, 2004 Autor Denunciar Share Postado Setembro 23, 2004 ae galera, muito obrigado pelas dicas . . resolvi o meu problema .criei uma função que ao entrar com um valor, eu percorria o vetor atrás de um valor igual. Achando, atribuia o valor 0 à uma variavel e a retornava.tudo isso em uma estrutura de repetição que se validava se essa tal variavel fosse igual 0. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Skywalker
gostaria que me ajudassem a fazer o seguinte
tenho um vetor no meu código que não pode aceitar valores repetidos. Como posso impedir que isso aconteça ?
obrigado.
Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.