Intervertir valeur variable

Résolu
XGuarden Messages postés 259 Date d'inscription dimanche 14 juillet 2002 Statut Membre Dernière intervention 17 août 2012 - 3 déc. 2006 à 21:08
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 - 4 déc. 2006 à 14:37
Bonjour
Existe t'il un moyen "plus beau" de faire cette opération?(intervertir)

                If X1 > Y1 Then
                    tmp = X1
                    X1 = Y1
                    Y1 = tmp
                End If

Merci.

5 réponses

CrazyMan19 Messages postés 163 Date d'inscription samedi 2 août 2003 Statut Membre Dernière intervention 4 novembre 2013 15
3 déc. 2006 à 21:44
y as une autre methode c est la suivante :

X1 = Y1+(Y1=X1)-X1

aller a+

Je suis né intelligent ... L'éducation me détruit ;)
3
CrazyMan19 Messages postés 163 Date d'inscription samedi 2 août 2003 Statut Membre Dernière intervention 4 novembre 2013 15
3 déc. 2006 à 21:37
d'après votre question je pense que vous voulez faire une operation de permutation de deux variables alors voiçi deux manière que j les utilises souvent :

1ere Solution :
X1=X1+Y1
Y1=X1-Y1
X1=X1-Y1

2eme Solution :

X1= X1 XOR Y1
Y1= X1 XOR Y1
X1= X1 XOR Y1

Je suis né intelligent ... L'éducation me détruit ;)
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
4 déc. 2006 à 13:50
Personellement je prefere la méthode de XGuarden.

Avec les methodes de CrazyMan19, il y a de gros risques de dépassement de capacité.

Admettons que X1 et Y1 soient des Int16 (en VB.NET)
X1 = 32766
Y1 = 4

La methode de XGuarden marche sans problème
La 1er méthode de CrazyMan génère un dépassement de capacité
La 2nd méthode marche mais n'est pas forcément évidente à comprendre (penser au jour ou vous reprendrait votre code dans 2 ans par ex) et peut-etre même plus lente en temps d'execution.
La 3eme méthode renvoie un résultat faux

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
0
CrazyMan19 Messages postés 163 Date d'inscription samedi 2 août 2003 Statut Membre Dernière intervention 4 novembre 2013 15
4 déc. 2006 à 14:11
oui c possible qu il aura un depassement de capacité dans la première méthode, la deuxième et évident au cas où t as deja fait opération logique (XOR,OR,AND,NAND...) pour la troisième méthode marche bien chez moi ... en effet la méthode de l utilisation d une troisième variable est la méthode la plus utilisé mais puisque XGuarden veut plus d méthode alors les voila et c à lui de choisir :d

Je suis né intelligent ... L'éducation me détruit ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
4 déc. 2006 à 14:37
Chez moi avec les valeurs données, ta 3eme méthode me renvoie -32762 pour X1 et 4 pour Y1 alors que le résultat devrait etre 4 pour X1 et 32766 pour Y1

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
0
Rejoignez-nous