Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Défis

Défis Ce forum est celui des défis et challenges Office. Prêts à relever le gant ? C'est parti !

Réponse
 
Outils de la discussion
Vieux 13/04/2007, 07h26   #1 (permalink)
Membre Expert
 
Date d'inscription: avril 2006
Messages: 1 000
Par défaut Philben : Swap de 2 entiers

Bonjour,

Quel est le principe de ce sous-forum ?

Le 1er défi est-il de le deviner ?

Le suivant en est-il un ?
Citation:
Comment swapper 2 entiers sans utiliser une autre variable ?
Amicalement,

Philippe

Dernière modification par Maxence HUBICHE ; 23/04/2007 à 22h52
philben est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 13/04/2007, 07h31   #2 (permalink)
Responsable MSOffice

 
Avatar de Maxence HUBICHE
 
Date d'inscription: juin 2002
Localisation: Argenteuil (95)
Messages: 3 458
Par défaut

Le principe de ce sous-forum est de proposer des défis à ceux qui ont envie de les relever.

L'équipe Office est en train de vous en préparer un.

Afin que ce sous forum ne devienne pas un gros ****** sans nom, si vous avez des défis à proposer, il faudra que ce soit selon les règles que nous finissons d'élaborer.

Cordialement,
__________________
MVP Office Systems - Access
Je ne réponds pas aux questions techniques par MP

surtout ne cliquez pas >>là<< je vous aurai prévenu !
Profil LinkedIn <=> Viadeo
Pour une formation de qualité : 1formaxion
Maxence HUBICHE est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 13/04/2007, 11h34   #3 (permalink)
Expert Confirmé Sénior
 
Date d'inscription: mai 2005
Messages: 3 285
Par défaut

Code :
 
Sub swap()
Dim a As Variant
Dim b As Variant
a = 10
b = 20
a = a + b
b = a - b
a = a - b
MsgBox ("a" & a & "b" & b)
End Sub
 
 
c'est juste pour le fun
à l'utilisation c'est moins rapide
amicalement
__________________
Elle est pas belle la vie ?
random est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 13/04/2007, 16h53   #4 (permalink)
Membre Expert
 
Date d'inscription: avril 2006
Messages: 1 000
Par défaut

Bonjour Random,

Une solution alternative pour des entiers (ne pas utiliser en production !):
Code :
 
Sub swap()
Dim a As Variant
Dim b As Variant
a = 10
b = 20
a = a Xor b
b = a Xor b
a = a Xor b
MsgBox ("a" & a & "b" & b)
End Sub
 
 
A bientôt, je pense...

Amicalement,

Philippe
philben est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 13/04/2007, 17h23   #5 (permalink)
Expert Confirmé
 
Date d'inscription: avril 2006
Localisation: Perpignan
Âge: 36
Messages: 1 551
Par défaut

bravo, effectivement c'est mieux que l'addition qui pose le pb du débordement.
vodiem est actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 16/04/2007, 16h27   #6 (permalink)
Expert Confirmé Sénior
 
Date d'inscription: mai 2005
Messages: 3 285
Par défaut

d'un autre côté le débordement sur des variants c'est assez rare
__________________
Elle est pas belle la vie ?
random est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/04/2007, 19h48   #7 (permalink)
Expert Confirmé
 
Date d'inscription: avril 2006
Localisation: Perpignan
Âge: 36
Messages: 1 551
Par défaut

oui tu as raison random, mais rare n'est pas impossible
ta proposition reste encore de toute facon la meilleur.

moi j'aurais encore proposé un truc du genre:
ben je met a dans une table, b dans a puis récupérer a de ma table pour le mettre dans b.
puisque a dans la table n'est pas une variable mais un champ! lol
vodiem est actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 19/04/2007, 13h08   #8 (permalink)
Rédacteur

 
Avatar de Tofalu
 
Date d'inscription: octobre 2004
Localisation: Mâcon
Messages: 5 851
Par défaut

Citation:
Envoyé par vodiem
oui tu as raison random, mais rare n'est pas impossible
ta proposition reste encore de toute facon la meilleur.

moi j'aurais encore proposé un truc du genre:
ben je met a dans une table, b dans a puis récupérer a de ma table pour le mettre dans b.
puisque a dans la table n'est pas une variable mais un champ! lol

sauf que pour récupérer a tu seras obliger d'utiliser un recordset, donc une variable !
Tofalu est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 19/04/2007, 14h50   #9 (permalink)
Expert Confirmé
 
Date d'inscription: avril 2006
Localisation: Perpignan
Âge: 36
Messages: 1 551
Par défaut

es tu sur que c'est le seul moyen?
vodiem est actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 19/04/2007, 16h10   #10 (permalink)
Expert Confirmé
 
Date d'inscription: avril 2006
Localisation: Perpignan
Âge: 36
Messages: 1 551
Par défaut

remarque je me demandais, avec mes idées tordues:
philben parle d'entier et vous utilisez des variants, dans ce cas:
un entier Long occupant 4 octect et un Variant 16 (si je me souviens bien du quizz tofalu) il reste de la place dans le Variant...
voici ma question:
il est pas possible d'obtenir @ mémoire d'un variant? avoir un pointeur, lire, copier directement en mémoire dans access? je parle de ca pour les manipulations de tableau.
?
vodiem est actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 23/04/2007, 22h59   #11 (permalink)
Responsable MSOffice

 
Avatar de Maxence HUBICHE
 
Date d'inscription: juin 2002
Localisation: Argenteuil (95)
Messages: 3 458
Par défaut

Allez hop !
Je fais mon bourrin !

Code :
    SaveSetting "MySwap", "Swapping", "Key_A", CStr(a)
    SaveSetting "MySwap", "Swapping", "Key_B", CStr(b)
    a = CLng(Trim(GetSetting("MySwap", "Swapping", "Key_B")))
    b = CLng(Trim(GetSetting("MySwap", "Swapping", "Key_A")))
    DeleteSetting "MySwap"
 
__________________
MVP Office Systems - Access
Je ne réponds pas aux questions techniques par MP

surtout ne cliquez pas >>là<< je vous aurai prévenu !
Profil LinkedIn <=> Viadeo
Pour une formation de qualité : 1formaxion
Maxence HUBICHE est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 25/04/2007, 16h54   #12 (permalink)
Rédacteur/Modérateur
 
Avatar de Papy Turbo
 
Date d'inscription: mars 2004
Messages: 618
Par défaut

Ben, si on a droit aux variant, trop fastoche.
Allez, encore moins efficace :
Code :
Sub swap()
Dim a As Variant
Dim b As Variant
    a = 10
    b = 20
    a = a & "|" & b
    b = Val(a)
    a = Val(Mid(a, InStr(1, a, "|") + 1))
    MsgBox ("a" & a & "b" & b)
End Sub
Papy Turbo est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 25/04/2007, 17h33   #13 (permalink)
Expert Confirmé Sénior
 
Date d'inscription: mai 2005
Messages: 3 285
Par défaut

si on définit a et b comme des integer, et non comme le contenu de variant
la seule solution que je trouve est celle de philben qui reste la plus élégante

ceci me semble un bon exemple de la difficulté à trouver un énoncé non équivoque des défis
__________________
Elle est pas belle la vie ?
random est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 25/04/2007, 19h52   #14 (permalink)
Responsable MSOffice

 
Avatar de Maxence HUBICHE
 
Date d'inscription: juin 2002
Localisation: Argenteuil (95)
Messages: 3 458
Par défaut

Citation:
Envoyé par random
si on définit a et b comme des integer, et non comme le contenu de variant
...
ceci me semble un bon exemple de la difficulté à trouver un énoncé non équivoque des défis
Euh... il a parlé d'entier, pas d'integer !
Ca pourrait être des Long ou des Byte !


Citation:
Envoyé par random
la seule solution que je trouve est celle de philben qui reste la plus élégante
Kwâââââ !
t'aimes pas ma méthode !!!???
__________________
MVP Office Systems - Access
Je ne réponds pas aux questions techniques par MP

surtout ne cliquez pas >>là<< je vous aurai prévenu !
Profil LinkedIn <=> Viadeo
Pour une formation de qualité : 1formaxion
Maxence HUBICHE est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 26/04/2007, 08h55   #15 (permalink)
Expert Confirmé Sénior
 
Date d'inscription: mai 2005
Messages: 3 285
Par défaut

j'adore ta méthode
mais elle utilise 10 variables dont 8 ne sont pas en mémoire vive
__________________
Elle est pas belle la vie ?
random est déconnecté   Envoyer un message privé Réponse avec citation
Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Défis

 
Offres d' emploi informatique sur Lesjeudis.com


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide