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.
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):
Exemplo de saída (com qsort):
Obs.: O qsort foi utilizado somente para ficar mais fácil a vizualização do problema que está ocorrendo no programa.
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.