Colocar Resposta 
 
Avaliação do Tópico:
  • 0 votos - 0 Média
  • 1
  • 2
  • 3
  • 4
  • 5
[Resolvido] rand() de 0 a 25 sem repetição [C/C++]
20-05-2009, 21:31 (Esta mensagem foi modificada pela última vez a: 21-05-2009 01:11 por code.paradox.)
Mensagem: #1
[Resolvido] rand() de 0 a 25 sem repetição [C/C++]
É o seguinte, eu preciso de arrumar uma maneira que sortei números de 0 a n (no meu caso n = 25) de maneira que os números não estejam repetidos dentro do vetor.

Código:
#include  <stdio.h>
#include <stdlib.h>

int comparar(const void * a, const void * b)
{
    return ( *(int*)a - *(int*)b );
}


int main()
{
    int vetor[26];
    int i, k;
    
    srand(time(NULL));
    
    for(i = 0; i < 26; i++)
    {
        vetor[i] = rand()%26;
        
        for(k = 0; k < i; k++)
        {
            if(vetor[k] == vetor[i])
            {
                vetor[i] = rand()%26;
                k = 0;
            }
        }
        
    }
    
    qsort(vetor, 26, sizeof(int), comparar);
    
    for(i = 0; i < 26; i++)
        printf("%d ", vetor[i]);
    
    printf("\n");
    
    return 0;
}

Mas o estranho é que ele sempre pega o elemento da posição "0" e suprimi um elemento de alguma posição qualquer com o valor do elemento nesta posição.

Exemplo de saída (sem qsort):
Citar:15 9 13 5 4 25 23 0 2 8 12 22 16 1 7 18 3 17 15 24 6 14 10 11 19 21

Exemplo de saída (com qsort):

Citar:0 1 2 3 4 5 6 7 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25

Obs.: O qsort foi utilizado somente para ficar mais fácil a vizualização do problema que está ocorrendo no programa.

Wissen ist Macht, und Geld ist nichts ohne Kreativität.
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
21-05-2009, 01:06
Mensagem: #2
RE: rand() de 0 a 25 sem repetição [C/C++]
Problema resolvido

Basta mudar o valor da variável k de 0 para -1, acabei me esquecendo de como o for funciona =P.

Wissen ist Macht, und Geld ist nichts ohne Kreativität.
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
Colocar Resposta 


Saltar Fórum:


Utilizadores a ver este tópico: 2 Visitante(s)