Partage
  • Partager sur Facebook
  • Partager sur Twitter

Melange d'un tableau puis remise en ordre

Sujet résolu
    8 février 2019 à 10:20:24

    Bonjour,

    Ayant implémenter une petite fonction de mélange de characteres puis une autre permettant de les remettres en place.

    J'ai donc utiliser l'algorithme de Fisher-Yates en utilisant une generation de nombre pseudo aléatoire avec un seed constant.

    Voici mes deux fonctions :

    Le mélange des charactères

    void Melange(char * phrase) 
    {
    	int size_phrase = strlen(phrase);
    	srand(seed);
    	int * rdm_array = (int*)malloc(sizeof(int)*size_phrase);
    	int i;
    	for(i = 0; i < size_phrase; i++)
    	{
    		rdm_array[i] = rand()%size_phrase;
    		//printf("%d", rdm_array[i]);
    	}
    	//On commence le mélange ici
    	int j;
    	int k = 0;
    	for(j = size_phrase -1 ; j > 0 ; j-- , k++)
    	{
    		int rdm_nb = rdm_array[k];
    		char temp = phrase[j];
    		phrase[j] = phrase[rdm_nb];
    		phrase[rdm_nb] = temp;
    	}
    	free(rdm_array);
    }


    La remise en place :

    void RemiseEnOrdre(char * phrase)
    {
    	int size_phrase = strlen(phrase);
    	srand(seed);
    	int * rdm_array = (int*)malloc(sizeof(int)*size_phrase);
    	int i;
    	for(i = 0; i < size_phrase; i++)
    	{
    		rdm_array[i] = rand()%size_phrase; 
    		//printf("%i", rdm_array[i]);
    	}
    	//On commence le mélange ici
    	int j;
    	int k = size_phrase-1;
    	for(j = 0 ; j < size_phrase ; j++ , k--)
    	{
    		int rdm_nb = rdm_array[k];
    		char temp = phrase[j];
    		phrase[j] = phrase[rdm_nb];
    		phrase[rdm_nb] = temp;	
    	}
    	free(rdm_array);
    }

    J'ai bien vérifier que mes deux tableaux de chiffre aléatoire sont identique, je refais exactement la même fonction dans le sens inverse, mais voici mon output :

    Je dois louper qqchose, si vous pouvez m'éclaircir sur mon problème

    Merci !

    EDIT : Lors du cryptage je m’arrêtai un cran trop tôt. du coup dans le mélange voici la boucle for à mettre a jour :

    for(j = size_phrase -1 ; j >= 0 ; j-- , k++)



    -
    Edité par ThomasDenneulin4 8 février 2019 à 16:00:44

    • Partager sur Facebook
    • Partager sur Twitter

    Melange d'un tableau puis remise en ordre

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown