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
Colocar Resposta 


Mensagem neste Tópico
[Resolvido] rand() de 0 a 25 sem repetição [C/C++] - code.paradox - 20-05-2009 21:31

Saltar Fórum:


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