Création
d'entreprise

Permuter deux variables sans utilisation d'une variable temp


Utilisation de pointeurs


Le code
#include <stdio.h>
void change(int *,int*);

int main ()
{
  int a=2,b=5;
  printf("Avant : a=%d,b=%d\n",a,b);

  change(&a,&b);

  printf("Apres : a=%d,b=%d\n",a,b);
  return 0;
}

void change(int *a,int *b){

  *a += *b;
  *b = *a-*b;
  *a = *a-*b;
}

Le résultat
lami20j@debian:~/trash$ gcc permuter_var.c
lami20j@debian:~/trash$ ./a.out
Avant : a=2,b=5
Apres : a=5,b=2

Utilisation d'une macro


Code :
#include <stdio.h>
#define PERMUTER(x,y) x ^= y, y ^= x, x ^= y

int main ()
{
  int a=2,b=5;
  printf("Avant : a=%d,b=%d\n",a,b);

  PERMUTER(a,b);

  printf("Apres : a=%d,b=%d\n",a,b);
  return 0;
}

Le résultat
vlmath@debian:~$ gcc permuter_var.c
vlmath@debian:~$ ./a.out
Avant : a=2,b=5
Apres : a=5,b=2

Remarque
Le nom de la macro, ou de ses variables, peut naturellement être changé.
Publié par lami20j - Dernière mise à jour le 16 novembre 2009 à 12:29 par marlalapocket
Ce document intitulé « Permuter deux variables sans utilisation d'une variable temp » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Suggestions
  •  Permuter deux variables sans utilisation d'une variable temp
  •  Permuter deux nombre sans utiliser temp » 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 !
  •  [BASH]variable qui utilise une autre variable » Meilleure réponse: hello $ CONFIGETH0=aaaaaaaaaaaa $ CONFIGETH1=bbbbbbbbbbbb $ i=0 $ m=CONFIGETH${i} ; eval echo \$${m} aaaaaaaaaaaa $ i=1 $ m=CONFIGETH${i} ; eval echo \$${m} bbbbbbbbbbbb $
  •  Permutation de deux variables en pascal (Résolu) » Meilleure réponse: Bon alors, après avoir planché sur ta question voici ma conclusion. On peut permuter n'importe quels entiers A et B positifs qui vont de 0 à N-1 en faisant : A := (A+B) mod N; B := (A-B) mod N; A := (A-B) mod N; Donc avec des char ça do
  •  Aide sur la permutation (Résolu) » Bonjour, SVP, j'ai besoin d'un algorithme permettant de permuter le contenu de deux variables sans utiliser une variable auxiliaire merci de me répondre
  •  Algorithme de permutation de deux variables » bonsoir,je besoin vos aide svp j'ai des exercices d'algorithme mais j'ai pas réussi à les faire exo: ecrire un algorithme qui permet à l'utilisateur d'introduire deux variables de type entier et les faire permuter sans ajout de variables alors comment...
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?
Vérifier si un nombre entier est un nombre premier en C
Listes circulaires (Ring Buffer)