【C++】2つの数値を交換(スワップ)するプログラムの書き方
2つの数値を交換(スワップ)するC++プログラムを作成する方法は、主に2つあります。1つ目は一時変数(temp変数)を使用する方法で、2つ目は第3の変数を使わない方法です。ここでは、それぞれの方法についてサンプルコード付きで詳しく解説します。
一時変数を使って2つの数値を交換するプログラム
まず、一時変数を使って2つの数値を交換する基本的なプログラムを見てみましょう。
サンプルコード
#include <iostream>
using namespace std;
int main() {
int a = 10, b = 5, temp;
temp = a;
a = b;
b = temp;
cout<<"Value of a is "<<a<<endl;
cout<<"Value of b is "<<b;
return 0;
}
実行結果
Value of a is 5
Value of b is 10
上記のプログラムでは、2つの数値を格納する変数aとbを宣言しています。処理の流れは以下の通りです。
まず、aの値を一時変数tempに退避させます。次に、bの値をaに代入します。最後に、tempに保存しておいた元のaの値をbに代入することで、aとbの値が交換されます。
temp = a;
a = b;
b = temp;
その後、cout文を使って交換後のaとbの値を画面に表示しています。
cout<<"Value of a is "<<a<<endl;
cout<<"Value of b is "<<b;
第3の変数を使わずに2つの数値を交換するプログラム
続いて、第3の変数を使用せず、算術演算だけで2つの数値を交換するプログラムを紹介します。
サンプルコード
#include <iostream>
using namespace std;
int main() {
int a = 10, b = 5;
a = a+b;
b = a-b;
a = a-b;
cout<<"Value of a is "<<a<<endl;
cout<<"Value of b is "<<b;
return 0;
}
実行結果
Value of a is 5
Value of b is 10
上記のプログラムでは、加減算を利用して変数の値を交換しています。処理の流れは以下の通りです。
まず、aとbの合計をaに格納します。次に、その合計から元のbを引いた値(=元のa)をbに格納します。最後に、合計から新しいb(=元のa)を引いた値(=元のb)をaに格納します。これにより、一時変数なしでもaとbの値が交換されます。
a = a+b;
b = a-b;
a = a-b;
例えば、a=10、b=5の場合、「a = a+b」でaは15になり、「b = a-b」でbは10(元のa)、「a = a-b」でaは5(元のb)となります。
なお、この方法は追加のメモリを必要としない反面、大きな数値を扱う際に合計がint型の上限を超えてオーバーフローを起こす可能性がある点に注意してください。
最後に、交換後のaとbの値を出力して完了です。
cout<<"Value of a is "<<a<<endl;
cout<<"Value of b is "<<b;
まとめ
2つの数値を交換する方法として、一時変数を使う方法と使わない方法の2種類を紹介しました。一時変数を使う方法は直感的で分かりやすく、バグも起きにくいのが特徴です。一方、第3の変数を使わない方法はメモリを節約できますが、オーバーフローのリスクがあります。実務では可読性と安全性を重視して、一時変数を使う方法が推奨されることが多いので、用途に応じて使い分けるとよいでしょう。
-
C#で2つの数値を入れ替える(スワップする)方法
C#で2つの数値の値を入れ替える(スワップする)場合、一時的な変数を使わずに、足し算と引き算を組み合わせたロジックで実現できます。ここでは、その基本的な考え方と実際のコード例を紹介します。 入れ替えの基本的なロジック まず、入れ替える対象となる2つの変数を用意します。 val1 = 100; val2 = 200; 次に、以下の3つの演算を行うことで、変数の値を入れ替えることができます。 val1 = val1 + val2; val2 = val1 - val2; val1 = val1 - val2; 仕組みの解説 このロジックがどのように機能するのか、順を追って確認してみましょう。
-
Javaで2つの数値を交換(スワップ)するプログラムの書き方
この記事では、Javaで2つの数値を交換(スワップ)する方法について解説します。数値の交換は、一時変数(テンポラリ変数)を使うことで簡単に実現できます。 まずは、入力と出力のイメージを確認しましょう。 入力 たとえば、次のような2つの値が与えられたとします。 value_1 : 45 value_2 : 70 出力 交換後の出力は次のようになります。 value_1 : 70 value_2 : 45 アルゴリズム 一時変数を使ったスワップ処理の手順は以下の通りです。 Step 1- 処理を開始する Step 2- 整数型変数 value_1、value_2、temp を宣言する Step