Intervertir valeur variable [Résolu]

Messages postés
259
Date d'inscription
dimanche 14 juillet 2002
Statut
Membre
Dernière intervention
17 août 2012
- - Dernière réponse : 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.
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
163
Date d'inscription
samedi 2 août 2003
Statut
Membre
Dernière intervention
4 novembre 2013
2
3
Merci
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 ;)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 212 internautes nous ont dit merci ce mois-ci

Commenter la réponse de CrazyMan19
Messages postés
163
Date d'inscription
samedi 2 août 2003
Statut
Membre
Dernière intervention
4 novembre 2013
2
0
Merci
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
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
31
0
Merci
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
Messages postés
163
Date d'inscription
samedi 2 août 2003
Statut
Membre
Dernière intervention
4 novembre 2013
2
0
Merci
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
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
31
0
Merci
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