1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
| int main(int argc, char *argv[])
{
// =======================================================================================================
// VARIABLE(S) LOCALE
// =======================================================================================================
long int i, dTailleTab;
long int j = 0;
long int k = 0;
long int *tTabRandom = NULL;
long int dNbrRand1, dNbrRand2;
long int dNbrTemp;
// =======================================================================================================
// CODE MAIN
// =======================================================================================================
printf("Nombre de pistes : ");
scanf("%d", &dTailleTab);
// -------------------------------------------------------------------------------------------------------
// Ajout d'un element aléatoire a la fonction random, via la fonction time() de la librairie time.h
// Sinon la fonction random "choisi" tjrs les même résultats
srand(time(NULL));
// -------------------------------------------------------------------------------------------------------
// Création du tableau d'index et initialisation
tTabRandom = malloc(dTailleTab * sizeof(long int));
for (i = 0; i < dTailleTab; i++)
{
tTabRandom[i] = 1 + i;
}
// -------------------------------------------------------------------------------------------------------
// Boucle de randomization du tableau
for (i = 0; i < dTailleTab; i++)
{
// -------------------------------------------------------------------------------------------------------
// La fonction random retourne deux nombre compris dans la taille du tableau tTabIndex,
// et vérifie que les deux chiffres sont toujours différent
do
{
dNbrRand1 = (rand() % (dTailleTab));
dNbrRand2 = (rand() % (dTailleTab));
//printf("%d. dNbrRand1 = %d | dNbrRand2 = %d\n", i, dNbrRand1, dNbrRand2);
if (dNbrRand1 == dNbrRand2)
{
j++;
//printf("\t%d WARNING!! dNbrRand1 = %d | dNbrRand2 = %d\n", i, dNbrRand1, dNbrRand2);
}
if (dNbrRand1 >= 32767 || dNbrRand2 >= 32767)
{
//printf("\t%d dNbrRand1 = %d | dNbrRand2 = %d\n", i, dNbrRand1, dNbrRand2);
k++;
}
}
while (dNbrRand1 == dNbrRand2);
// -------------------------------------------------------------------------------------------------------
// Utilisation des nombres retourné par la fonction rand() pour intervertir les nombres aux index
// correspondant dans ptTabRandom
dNbrTemp = tTabRandom[dNbrRand2];
tTabRandom[dNbrRand2] = tTabRandom[dNbrRand1];
tTabRandom[dNbrRand1] = dNbrTemp;
}
printf("\n");
for (i = 0; i < dTailleTab; i++)
{
printf(" %d |", tTabRandom[i]);
}
printf("\n");
printf("WARNING = %d\n", j);
printf("+ 32767 = %d\n", j);
printf("\n");
free(tTabRandom);
return 0;
} |
Partager