Exo sur changement de varaibles - C - Programmation
Marsh Posté le 03-06-2005 à 21:44:38
c'est trivial comme algo . Si tu réfléchis ce qui importe c'est le résultat final (chaque truc là où on veut qu'il soit), ensuite il y a plusieurs façons d'y parvenir (selon ce que tu mets dans d par exemple)...
Marsh Posté le 03-06-2005 à 21:46:20
J'ai bon??? Pourtant ds la solution de mon bouquin, il mette
d=a
a=b
b=c
c=d
c pas la meme chose? C l'inverse de ce qui est demandé nan?
Marsh Posté le 03-06-2005 à 23:10:01
Citation : a passe dans b, celle de b dans c et celle de c dans a. |
HITm@n a écrit : J'ai bon??? Pourtant ds la solution de mon bouquin, il mette |
Si c'est la solution de ton bouquin, il y a une erreur ou dans l'énoncé, ou dans les solutions, car c'est effectivement l'inverse
Marsh Posté le 03-06-2005 à 23:41:12
Merci c bien ce qui me semblait que c t moi qui avait raison et que la soluce du bouquin inversé par raport a l'énoncé! Merci!
Marsh Posté le 05-06-2005 à 11:00:36
On peut le faire sans avoir de variable "d"
a=a^b
b=a^b
a=a^b
Ici, on a interverti a et b donc la valeur de "a" est dans "b" et inversement
a=a^c
c=a^c
a=a^c
Ici, on a interverti a et c donc la valeur de "a" (qui était originellement dans "b" ) est dans "c" et inversement.
Donc, maintenant, la valeur d'origine de "a" se trouve dans "b", celle de "b" se trouve dans "c" et celle de "c" est dans "a"
Marsh Posté le 05-06-2005 à 13:29:22
voire beaucoup plus lent.
Marsh Posté le 06-06-2005 à 15:08:52
Ué ms moi je commence juste a apprendre dc pas trop vite! Sinon merci pour vos réponses!
d'ailleur g rien compris au mess de Sve@r lol
Marsh Posté le 06-06-2005 à 18:03:06
HITm@n a écrit : Ué ms moi je commence juste a apprendre dc pas trop vite! Sinon merci pour vos réponses! |
Pfff !!! C'est juste une propriété mathématique du "ou exclusif"
1) a=a^b => cela va mettre dans "a" le résultat d'un "ou exclusif" calculé sur chaque bit de "a" par rapport à chaque bit de "b"
2) b=a^b => idem mais si on regarde mieux, on a maintenant dans "b" le résultat de "a^b^b". Or, b^b vaut 0 donc on a maintenant dans "b" la valeur qu'il y avait dans "a"
3) a=a^b encore une fois va mettre dans "a" le calcul de "a^b". Or, dans "a" il y a "a^b" (première opération) et dans "b" il y a "a" (seconde opération). Donc, on a "a=a^b^a". Comme "a^a" vaut 0, on a dans "a" la valeur qu'il y avait dans "b".
Ainsi, au bout des 3 opérations on a interverti "a" et "b" sans utiliser de variable supplémentaire.
Marsh Posté le 03-06-2005 à 21:42:00
Slt all j'ai un exo c celui la:
Soit trois variables a,b et c (supposées de type entier). Ecrivez les instructions permutant les valeurs, de sorte que la valeur de a passe dans b, celle de b dans c et celle de c dans a. On utilisera une (et une seule) variable supplémentaire nommée d (de type entier)
Moi je propose ceci
d=a
a=c
c=b
b=d
et selon les 3 solutions que l'on me propose c tt l'inverse! COmprend plus rien du tt svp aidez moi