Table ASCII en vrac sans doublon [Résolu]

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Table ASCII en vrac sans doublon [Résolu]

Message par Kwai chang caine »

Bonjour à tous

Je voudrais avoir une table ASCII en vrac.
Mais pour ce faire, je ne voudrais pas de doublon (Evidemment)
Car si y'a doublon, y'a pas bon

Peut on forcer la fonction random à ne pas générer plusieur fois le meme chiffre ?

Code : Tout sélectionner

Dim VracAscii.s(255)

For i = 1 To 255
 VracAscii(Random(255)) = Chr(i)
Next

CallDebugger
Merci de votre reponse
Dernière modification par Kwai chang caine le mar. 31/juil./2007 14:42, modifié 1 fois.
Octavius
Messages : 312
Inscription : jeu. 26/juil./2007 12:10

Message par Octavius »

Tu peux peut-être utiliser une deuxième boucle à l'intérieure de la première qui vérifie que tous les nouveaux caractères que tu rentres n'ont pas déjà été rentrés. Si le caractère n'a pas déjà été utilisé c'est bon et on incrémente i, sinon on recommence et on n'incrémente pas i. Utilise plutôt un Repeat ou un While plutôt qu'un For/Next.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Bonjour OCTAVIUS

Merci pour l'info, c'est un peu ce que j'essayais de faire en attendant de savoir si PURE a prevu ça, ce que je ne pense pas car PURE est moins tordu que moi :D

Bonne journée à toi
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message par gnozal »

Une petite idée (non testé) :

Code : Tout sélectionner

Dim VracAscii.s(255)
Dim DejaUtilise.l(255)

For i = 1 To 255
  Repeat
    CodeASCII = Random(255)
    If DejaUtilise(CodeASCII) = #False ; Vérifier si le code ASCII a déjà été utilisé
      VracAscii(i) = Chr(CodeASCII)
      DejaUtilise(CodeASCII) = #True
      Break
    EndIf
  ForEver
Next
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Encore merci GNOZAL

Décidément aujourd'hui tu es une maman pour moi :D

J'avais pondu un oeuf du genre de ceux dont on se sépare le matin sans regret en appuyant sur le bouton de la chasse d'eau :lol:

Code : Tout sélectionner

Dim VracAscii.s(255)

For i = 32 To 255
 
 TrouveChiffre = #False
 ChiffreAleatoire = Random(255) 
 
 For a = 1 To 255 
 
  If VracAscii(a) = Chr(i)
   TrouveChiffre = #True
   Break
  EndIf 
 
 Next
 
 If TrouveChiffre = #False
  VracAscii(ChiffreAleatoire) = Chr(i) 
 EndIf
   
Next 

For i = 1 To 255
 Debug VracAscii(i)
Next

CallDebugger
Evidemment 3000 lignes pour dire "bonjour".
C'est dommage que je sois si nul, car à moi tout seul, je recréé la longueur des codes assembleur, mais avec du PURE :lol:

Ce qui est bizzare c'est que lorsque l'on regarde dans le visualiseur de variable y'a des barres "|", je suppose que ce sont des caracteres non editable, car cela fait pareil avec ton code ????

Alors j'ai démarré la table a 32 pour commencer à l'espace et c'est pareil 8O
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

Il y a des fois où l'on se prend la tête pour rien... Parcours simplement ton tableau et échange (swap) des éléments pris au hasard ;)
Et n'oublie pas qu'une table ASCII va de 0 à 255 (256 caractères).
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message par gnozal »

Kwai chang caine a écrit :Ce qui est bizzare c'est que lorsque l'on regarde dans le visualiseur de variable y'a des barres "|", je suppose que ce sont des caracteres non editable, car cela fait pareil avec ton code ????
Alors j'ai démarré la table a 32 pour commencer à l'espace et c'est pareil 8O
Je pense que c'est dû à la police de caractères utilisée par le debugger.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

@GNOZAL
Bon d'accord, pas d'affolage alors !!!

Au fait j'ai modifié ton code qu'est ce que tu en pense :

http://www.purebasic.fr/french/viewtopi ... 8466#68466

Merci à tous les 3.
Répondre