Échange de deux nombres sans variable

Dans de nombreux cas, les programmeurs doivent permuter les valeurs de deux variables. Ici, nous allons apprendre à échanger les valeurs de deux variables entières, ce qui peut conduire à l'échange de valeurs de tout type. Les valeurs entre les variables peuvent être échangées de deux manières -

  • Avec l'aide d'une troisième variable (temp)
  • Sans utiliser de variable temporaire

Nous avons déjà appris la première méthode . Ici, nous allons apprendre la deuxième méthode. Bien que cela ressemble à une magie, ce n'est qu'un petit truc. Imaginons que nous ayons deux numéros 1 et 2 stockés respectivement dans a et b maintenant -

  • Si nous ajoutons a et b (1 + 2) et le stockons dans a, alors a deviendra 3 et b sera toujours 2.

  • Maintenant, nous soustrayons b (2) de la nouvelle valeur de a (3) et la stockons dans b, alors a est toujours 3 et b devient 1. Notez que 1 était auparavant détenu par a.

  • Maintenant, nous soustrayons b qui a une nouvelle valeur (1) de a (3) et le stockons dans b (a = 3 - 1) puis a détient la valeur 2 qui était auparavant détenue par b.

  • Conclusion - les valeurs sont permutées.

Algorithme

Nous allons maintenant définir la procédure mentionnée ci-dessus de manière algorithmique étape par étape -

START
   Var1, Var2
   Step 1 → Add Var1 and Var2 and store to Var1
   Step 2 → Subtract Var2 from Var1 and store to Var2
   Step 3 → Subtract Var2 from Var1 and store to Var1
STOP

Pseudocode

À partir de l'algorithme ci-dessus, nous pouvons dessiner un pseudocode pour ce programme -

procedure swap(a, b)

   a ← a + b    // a holds the sum of both
   b ← a - b    // b now holds the value of a
   a ← a - b    // a now holds value of b

end procedure

la mise en oeuvre

L'implémentation C de l'algorithme ci-dessus devrait ressembler à ceci -

#include <stdio.h>

int main() {
   int a, b;

   a = 11;
   b = 99;

   printf("Values before swapping - \n a = %d, b = %d \n\n", a, b);

   a = a + b;  // ( 11 + 99 = 110)
   b = a - b;  // ( 110 - 99 = 11)
   a = a - b;  // ( 110 - 11 = 99)

   printf("Values after swapping - \n a = %d, b = %d \n", a, b);
}

Production

Le résultat de ce programme devrait être -

Values before swapping -
 a = 11, b = 99                                         
 
Values after swapping -
 a = 99, b = 11