Intercambiar dos números sin variable
En muchos casos, los programadores deben intercambiar valores de dos variables. Aquí, aprenderemos cómo intercambiar valores de dos variables enteras, que pueden conducir a intercambiar valores de cualquier tipo. Los valores entre variables se pueden intercambiar de dos formas:
- Con ayuda de una tercera variable (temp)
- Sin usar ninguna variable temporal
Ya hemos aprendido el primer método . Aquí aprenderemos el segundo método. Aunque parece una magia, es solo un pequeño truco. Imagina que ahora tenemos dos números 1 y 2 almacenados en ayb respectivamente -
Si sumamos ayb (1 + 2) y lo almacenamos en a, a se convertirá en 3 y b seguirá siendo 2.
Ahora restamos b (2) del nuevo valor de a (3) y lo almacenamos en b, entonces a sigue siendo 3 y b se convierte en 1. Observe que 1 era antes mantenido por a.
Ahora restamos b, que tiene un nuevo valor (1) de a (3) y lo almacenamos en b (a = 3 - 1), luego a tiene el valor 2 que antes tenía b.
Conclusión: los valores se intercambian.
Algoritmo
Ahora definiremos el procedimiento mencionado anteriormente de manera algorítmica paso a paso:
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
Pseudocódigo
A partir del algoritmo anterior, podemos dibujar un pseudocódigo para este programa:
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
Implementación
La implementación en C del algoritmo anterior debería verse así:
#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);
}
Salida
La salida de este programa debe ser:
Values before swapping -
a = 11, b = 99
Values after swapping -
a = 99, b = 11