第7講 4次および6次魔方陣の作成
第2話 データ交換プログラムを考える
4次魔方陣や6次魔方陣を作るためには、
1 | 2 | 3 | 4 |
5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 |
例えば、1と16を交換しなければなりません。
つまり、a[0][0]とデータとa[3][3]のデータを交換しなければならないのです。
そこで、ここではデータ交換プログラムを考えます。
まず、新しいプロジェクトを作り
#include<iostream>
using namespace std;
using namespace System;
void f();
int main(){
f();
}
void f(){
int a,b;
a=5;
b=8;
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
}
とコーティングして、Ctrl+F5でビルドすると
となります。
aのデータとbのデータを交換するにはどうしたらよいでしょうか。
もちろんここで考えているのは、再入力ではなく交換です。
次のようにしたらうまくいくでしょうか。
void f(){
int a,b;
a=5;
b=8;
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
cout<<"aとbのデータ交換"<<endl;
b=a;
a=b;
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
}
ところがビルドしてみると、
というわけでうまくいきません。.
どうしてでしょうか。
実は、
b=a;
とした瞬間にbのデータは消滅してしまいます。
理由は、データはひとつしか入らないので、5が入ってきたとき、8は箱から出て行ってしまいます。
そして、データは箱の中でしか生きられず、箱から出ると消滅の運命を辿るのです。
aの方のデータは箱の中にとどまっていますから消えることはありません。
b=a;
という代入の操作の場合、aの箱から5を取り出して、それをbの箱に入れるわけではありません。
箱の中の値を参照(コピー)して、それをbの箱に入れるのです。
b=a;
という操作をした瞬間に
をなってしまっていますので、次の操作
a=b;
は何の意味もありません。
では、bのデータを残して交換するにはどうしたらよいでしょうか。
ヒントは、第3の箱を用意することです。
VB講義へ
VB講義基礎へ
vc++講義へ第1部へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)