Learn-c-by-examples-swapping-two-numbers-without-using-variable
提供:Dev Guides
変数なしで2つの数値を交換する
多くの場合、プログラマは2つの変数の値を交換する必要があります。 ここでは、2つの整数変数の値を交換する方法を学習します。これにより、任意のタイプの値の交換につながる可能性があります。 変数間の値は2つの方法で交換することができます-
- 3番目の(temp)変数の助けを借りて
- 一時変数を使用しない
リンク:/learn_c_by_examples/swapping_two_numbers_using_variable [最初の方法]はすでに学習しました。 ここでは、2番目の方法を学習します。 それは魔法のように見えますが、それはほんの小さなトリックです。 今、aとbにそれぞれ2つの数値1と2が格納されていると想像してください-
- aとb(1 + 2)を追加してaに保存すると、aは3になり、bは2のままです。
- ここで、a(3)の新しい値からb(2)を減算し、bに格納すると、aは3のままで、bは1になります。 1はaによって以前に保持されていたことに注意してください。
- ここで、a(3)から新しい値(1)を持つbを減算し、それをb(a = 3-1)に格納し、aが以前bで保持していた値2を保持します。
- 結論-値は交換されます。
アルゴリズム
ここで、上記の手順を段階的なアルゴリズムの方法で定義します-
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
疑似コード
上記のアルゴリズムから、このプログラムの擬似コードを描くことができます-
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
実装
上記のアルゴリズムのC実装はこのように見えるはずです-
#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);
}
出力
このプログラムの出力は次のようになります-
Values before swapping -
a = 11, b = 99
Values after swapping -
a = 99, b = 11