Permuter deux nombre sans utiliser temp

prince_mesfiwi -  
lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
Bonjour,
je ne pense pas qu'il y'a une solution pour permuter le contenu de deux cases mémoire sans utiliser une variable tmp !!!
il ne faut même pas y reflechir !! c'est impossible !

2 réponses

  1. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    Si si, c'est possible, du moins avec des nombres :

    Soit a et b deux variables. Soient na et nb les valeurs associées à ces variables au début.

    Etat initial :
    a == na
    b == nb

    a := a + b, donc a == na + nb
    b := a - b, donc b == (na + nb) - nb = na
    a := a - b, donc a == (na + nb) - na = nb

    Etat final :
    a == nb
    b == na

    Donc si, c'est possible ! Mais justement, il faut y réfléchir, et ne pas se dire « ça sert à rien d'y réfléchir c'est impossible » ;)
    1
  2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    oui c'est possible
    voici comment on peux faire en Perl
    ($x,$y) = ($y,$x);
    voir aussi dans la faq permuter deux variables sans utilisation d une variable temp
    mais cette version est limitée (attention au depassement de capacité)

    0