IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Permuter deux variables sans variable temporaire


Sujet :

Algorithmes et structures de données

  1. #1
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 369
    Points : 40 164
    Points
    40 164
    Par défaut Permuter deux variables sans variable temporaire
    bien le bonsoir,

    je ne me souviens plus de l'algo pour permuter 2 variables sans utiliser une 3ème variable. si si, je sais que c'est possible.
    et je n'arrive pas à remettre la main dessus.
    merci bien.

  2. #2
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Il y a une variante avec des XORs, et une avec des opérations arithmétiques (attention aux overflows avec la seconde).

    Permutation A/B :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    A <- A Xor B
    B <- B Xor A
    A <- A Xor B
    Ou :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    A <- A - B
    B <- A + B
    A <- B - A
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  3. #3
    Membre éprouvé
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Points : 977
    Points
    977
    Par défaut
    Je ne sais pas si c'est que tu cherche, mais comme cela, ca a l'air de fonctionner:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var a, var b
    a=a+b
    b=a-b
    a=a-b
    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    a = x et b = y
    =>
    a = x + y
    b = a - b = x + y - y = x => donc b = x
    a = x + y - x => a = y
    et c'est permuté !

    <edit>
    oups, le temps que je brouillone et que j'ecrive, je me suis fait devancé par Mac Lak...
    </edit>

    ++
    Pouic
    Software becomes slower faster than hardware becomes faster
    [size=1]
    http://xrenault.developpez.com

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par Pouic
    oups, le temps que je brouillone et que j'ecrive, je me suis fait devancé par Mac Lak...
    Mon papy, c'est Flash et mon papa, c'est Lucky Luke...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  5. #5
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Problème récurrent
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 23
    Points : 20
    Points
    20
    Par défaut Permuter 2 var sans utiliser une troisième
    Var A, B : réel ;
    Début
     Lire(A,B) ;
        Si (A>=B) Alors
            A<-A-B;
            B<-A+B;
            A<-B-A;
        Sinon
            B<-B+A; 
            A<-B-A;
            B<-B-A;
        Fsi
      Écrire(A,B);
    Fin.

  7. #7
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut Question annexe
    Ca fait gagner de la mémoire, mais l'utilisation d'opération arithmétiques est BIEN PLUS lente.
    Donc quel est réellement l'intérêt de le faire ?
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 488
    Points : 593
    Points
    593
    Par défaut
    Et d'autre part, (et d'autant plus que les ordres de grandeur de A et B sont très différents) il va y avoir des erreurs de troncature lors des opérations qui feront qu'on ne retrouvera pas exactement les mêmes nombres une fois la "permutation" effectuée...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment recuperer une variable sans input?
    Par fenneck dans le forum Langage
    Réponses: 20
    Dernier message: 02/04/2006, 19h26
  2. Réponses: 10
    Dernier message: 27/01/2006, 09h43
  3. [SGBD] mysql_close() : Utile sans variable dans les () ?
    Par psychoBob dans le forum Requêtes
    Réponses: 4
    Dernier message: 05/01/2006, 21h08
  4. Sortie standard stockée dans variable sans rc
    Par ggnore dans le forum Linux
    Réponses: 2
    Dernier message: 13/12/2005, 14h46
  5. [PHP-JS] Envoi de variable sans passer par un submit
    Par adilou1981 dans le forum Langage
    Réponses: 4
    Dernier message: 15/11/2004, 19h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo