Intervertir valeur variable [Résolu]

XGuarden 259 Messages postés dimanche 14 juillet 2002Date d'inscription 17 août 2012 Dernière intervention - 3 déc. 2006 à 21:08 - Dernière réponse : cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

5 réponses

CrazyMan19 163 Messages postés samedi 2 août 2003Date d'inscription 4 novembre 2013 Dernière intervention - 3 déc. 2006 à 21:44
+3
Utile
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 ;)
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de CrazyMan19
CrazyMan19 163 Messages postés samedi 2 août 2003Date d'inscription 4 novembre 2013 Dernière intervention - 3 déc. 2006 à 21:37
0
Utile
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 ;)
Commenter la réponse de CrazyMan19
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 4 déc. 2006 à 13:50
0
Utile
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 #
Commenter la réponse de cs_casy
CrazyMan19 163 Messages postés samedi 2 août 2003Date d'inscription 4 novembre 2013 Dernière intervention - 4 déc. 2006 à 14:11
0
Utile
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 ;)
Commenter la réponse de CrazyMan19
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 4 déc. 2006 à 14:37
0
Utile
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 #
Commenter la réponse de cs_casy

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.