Fonction swap pour nombre entier

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 242 fois - Téléchargée 31 fois

Contenu du snippet

Voilà, c'est une fonction Swap pour nombre entier qui n'utilise pas de variable intermédiaires, c'est le fruit d'une opération simple de "Xorisation".

Source / Exemple :


Option Explicit

Public Function SwapLng(Nb1 As Long, Nb2 As Long) As Boolean

    On Error GoTo Erreur'S'il y a une erreur va a la ligne erreur
    
    Nb1 = Nb1 Xor Nb2'Fonction
    Nb2 = Nb1 Xor Nb2'mathématiques
    Nb1 = Nb1 Xor Nb2'pour faire un swap
    
    SwapLng = True'Swap réaliser dc vrai
    Exit Function'quitte la fonction
    
Erreur:
    
    SwapLng = False'swap ratter dc faux

End Function

Conclusion :


Voilà, l'idée vient d'abord d commentaire dune ancienne source à Jack.

A voir également

Ajouter un commentaire Commentaires
cs_Jack
Messages postés
14007
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
80
27 juin 2004 à 20:31
lol Renfield : C'est exactement ce qu'il y a dans la fonction publiée il y a quelques temps !
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
27 juin 2004 à 17:54
a supposer que la création d'un fonction juste pour ca soit justifiée...

on pourrait utiliser des Variant

private Sub Swap ( A as variant , b as variant )
Dim tmp as variant
tmp = a
a = b
b = tmp
end sub


au fait, LightAngel, plutot que de passer en parametre une chaine representant le type de variable, utilises Vartype ( N1 ) par exemple (ou TypeName :( )
cs_Jack
Messages postés
14007
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
80
27 juin 2004 à 17:33
Na na na na nè reuuu
C'est quand même la mienne la plus pratiqueuuuu !
lol
gandalfkhorne
Messages postés
70
Date d'inscription
dimanche 11 janvier 2004
Statut
Membre
Dernière intervention
1 octobre 2004

27 juin 2004 à 15:49
Bah merci, ca leve toujours certain doute, mais le but de cette source était de montré comment effectuer un swap sans utiliser de variable autre que celle que l'on a déjà, de plus si on fait d'une autre façon soit ou en soustrayant et en additionnant on risque de dépasser l'intervalle.
cs_Light Angel
Messages postés
48
Date d'inscription
dimanche 9 mai 2004
Statut
Membre
Dernière intervention
1 janvier 2005

27 juin 2004 à 15:03
Salut, je crois qu'il y a une autre manière plus simple pour faire un Swap en une fonction qui comprend tout les types :

Public Function Swap (N1 as Object, N2 as Object, Type as String)
Select Case Type
Case "int"
Dim Temp as Integer
Temp = CInt (N1)
N1 = CInt (N2)
N2 = CInt (Temp)
Case "dbl"
Dim Temp as Double
Temp = CDbl (N1)
N1 = CDbl (N2)
N2 = CDbl (Temp)
Case "sht"
Dim Temp as Short
Temp = CShort (N1)
N1 = CShort (N2)
N2 = CShort (Temp)
' Et on continue la fonction comme sa avec tous les type désiré
End Select
End Sub

Enfin, il y a quand même plus simple, mais avec VB .Net ou bien le C++ (La surcharge) ...

A+

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.