Trocando Dois Números Sem Variável
Em muitos casos, os programadores são obrigados a trocar os valores de duas variáveis. Aqui, aprenderemos como trocar valores de duas variáveis inteiras, o que pode levar à troca de valores de qualquer tipo. Os valores entre as variáveis podem ser trocados de duas maneiras -
- Com a ajuda de uma terceira variável (temp)
- Sem usar qualquer variável temporária
Já aprendemos o primeiro método . Aqui aprenderemos o segundo método. Embora pareça uma mágica, mas é apenas um pequeno truque. Imagine que agora temos dois números 1 e 2 armazenados em aeb, respectivamente -
Se adicionarmos a e b (1 + 2) e armazená-los em a, a se tornará 3 e b ainda será 2.
Agora subtraímos b (2) do novo valor de a (3) e o armazenamos em b, então a ainda é 3 eb torna-se 1. Observe que 1 foi anteriormente sustentado por a.
Agora subtraímos b, que tem o novo valor (1) de a (3) e o armazenamos em b (a = 3 - 1), então a mantém o valor 2, anteriormente mantido por b.
Conclusão - os valores são trocados.
Algoritmo
Devemos agora definir o procedimento acima mencionado de maneira algorítmica passo a passo -
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
Pseudo-código
A partir do algoritmo acima, podemos desenhar um 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
Implementação
A implementação em C do algoritmo acima deve se parecer com isto -
#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);
}
Resultado
A saída deste programa deve ser -
Values before swapping -
a = 11, b = 99
Values after swapping -
a = 99, b = 11