Intervertir valeur variable [Résolu]

Messages postés
259
Date d'inscription
dimanche 14 juillet 2002
Dernière intervention
17 août 2012
- - Dernière réponse : cs_casy
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
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 

Votre réponse

5 réponses

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

Merci CrazyMan19 3

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

Codes Sources a aidé 105 internautes ce mois-ci

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

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.