Mélanger un mot

Résolu
imeys Messages postés 15 Date d'inscription lundi 28 mars 2005 Statut Membre Dernière intervention 11 mai 2006 - 27 avril 2006 à 17:38
florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 - 8 mai 2006 à 20:48
bonjour, pouvez vous me dire comment je peux mélanger les lettre dd'un mot svp?
merci

15 réponses

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
28 avril 2006 à 22:09
alors

@Florenth : AAAH NON! deja que t'es pas souvent la, internet en moins c'est pas marrant!!!!
ben a dans une semaine alors.
sinon oui on peu se refaire le concours des perf! ça m'a toujours eclater ... surtout que j'ai bien progresser depuis RomanUtils.

@imeys :

alors ma fonction, comme celle de florenth s'utilise de cette façon :

label1.caption := RandomizeString('Bonjour');

ce qui afficheras dans Label1 le mots "Bonjour" tout melanger.

function RandomizeString(const S : String) : string;
var X,                 { X sert a la boucle FOR pour effectuer un certain nombre de passage }
    L,                 { L sert a stocker la longeur de la chaine, en nombre de caracteres }
    I1, I2 : integer;  { I1 et I2 servent a stocker l'index des caracteres, ils sont definit
                         avec la fonction Random(L)+1 }
    C  : Char;         { C sert a sauvegarder le caractere a l'index I1 pour eviter de le perdre
                         quand on swap les caracteres de position I1 et I2 }
begin
  { on place la chaine S dans le resultat de la fonction, toutes les fonctions
    ont un retour qui est representé par la variable RESULT }
  Result  := S;

  { on sauvegarde la taille de la chaine dans L, la fonction Length permet de recuperer
    la longeur de beaucoup d'elements }
  L       := Length(S);

  { on init I2 aleatoirement, random genere un nombre aleatoire entre 0 et (L-1)
    tu peu t'interresser a la sources Bug Random de delphifr qui demontre un
    bug de cette fonction (L-1) }
  I2      := Random(L)+1;

  { on fait quelque passages, for est une boucle qui se traduit par :
    pour X de 1 a L faire ...
    La boucle for incremente (TO) ou decremente (DOWNTO) automatiquement la variable X }
  for X := 1 to L do begin

      { on genere une position aleatoire dans la chaine pour I1 }
      I1 := Random(L)+1;
     
      { pour eviter d'echanger la meme lettre, on control que les indexs I1 et I2
        soient differents. Avec une boucle conditionnelle WHILE DO qui peut se traduire par :
        Tant que (Condition) est vraie faire ... }
      while I2 = I1 do
         I2 := Random(L)+1;

   
      { ici on vas echanger la position de deux caracteres dans le mots. les deux caracteres
        seront choisis de maniere aleatoire grace aux valeur I1 et I2 }

      { on sauvegarde le caractere de position I1 dans C }
      C          := Result[I1];

      { on place le caractere de position I2 a la position I1 }
      Result[I1] := Result[I2];

      { enfin on place le caractere de position I1 (sauvegardé dans C) a la position I2 }
      Result[I2] := C;
  end; { fin de la boucle FOR }
end;
3
Rejoignez-nous