Forum Pplware
[Resolvido] rand() de 0 a 25 sem repetição [C/C++] - Versão de Impressão

+- Forum Pplware (http://forum.pplware.com)
+-- Fórum: Mais Tech (/forumdisplay.php?fid=11)
+--- Fórum: Programação e Web (/forumdisplay.php?fid=16)
+--- Tópico: [Resolvido] rand() de 0 a 25 sem repetição [C/C++] (/showthread.php?tid=2392)



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

É 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.


RE: rand() de 0 a 25 sem repetição [C/C++] - code.paradox - 21-05-2009 01:06

Problema resolvido

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