変数aに変数bをa=b;と代入したように配列hairetuboxに配列hairetuhakoをhairetubox=hairetuhako;のように直接代入して中身のデータを渡すことはできません😊

ソーラー「じゃあ 


変数のようにある配列のデータを別の配列に代入する方法はあるのかな?


変数同士の場合だと


変数aに変数bを代入する

int a=1;

int b=2;

a=b;

と実行すると


aに格納されている値は


a=1からa=2になるよね。」


マックス「配列に配列を代入するとはこういうことか?


以下 マックスの考察です


まず



配列宣言int hairetubox[3];をおこない


配列変数

hairetubox[0]

hairetubox[1]

hairetubox[2]


をつくり


hairetubox[0]=1;

hairetubox[1]=2;

hairetubox[2]=3;


と数値データを代入するだろう


そのあと



配列宣言int hairetuhako[3];をおこない


配列変数

hairetuhako[0]

hairetuhako[1]

hairetuhako[2]


をつくり


hairetuhako[0]=3;

hairetuhako[1]=4;

hairetuhako[2]=5;


と数値データを代入するだろう😊


あとは


配列hairetubox[3]にhairetuhako[3]を代入する


hairetubox[3]=hairetuhako[3];


を実行すればいいだけじゃないか


こうすれば


配列hairetuhako[3]内のデータはhairetubox[3]にわたされる


つまり


hairetubox[0]=hairetuhako[0];

hairetubox[1]=hairetuhako[1];

hairetubox[2]=hairetuhako[2];


が実行されて


hairetubox[0]

hairetubox[1]

hairetubox[2]


に格納される数値データは


3

4

5


になるってわけだ」


以上がマックスの考察です 


ソーラー「あ、ほんとうだ(´▽`*) それでうまくいきそうだね。」




マックス


「簡単、簡単


冴えてるな~オレ」


ソーラー「いい発想だね」


マックス「はははっ まあ 、みてな


では プログラムを作製し」


#include <iostream>


using namespace std;


int main()


{


int hairetubox [3] ;


hairetubox[0]=1;

hairetubox[1]=2;

hairetubox[2]=3;



int hairetuhako[3] ;


hairetuhako[0]=3;

hairetuhako[1]=4;

hairetuhako[2]=5;


hairetubox[3]=hairetuhako[3];


/*さあっ このように


配列hairetubox[3]に

配列hairetuhako[3]を


代入し配列hairetuhako[3]の中身のデータを

配列hairetubox[3]に渡すことができるのでしょうか


できそうですね*/


cout<<hairetubox[0]<<"\n";

cout<<hairetubox[1]<<"\n";

cout<<hairetubox[2]<<"\n";


return 0;

}


マックス「ビルドっと」


         ウィ~ン



マックス「パソコンがプログラムの実行に入りだしたな


いい感じ いい感じ♬


ははは 簡単すぎたか・・・」



ビルド実行結果


1

2

3


マックス「ははは ・・・は?


配列hairetuhako[3]内のデータをhairetubox[3]に


わたしたはず・・・なのに


hairetubox[0]

hairetubox[1]

hairetubox[2]


に格納されている数値データは


hairetubox[0]=1;

hairetubox[1]=2;

hairetubox[2]=3;


のときのまま・・・か???


hairetubox[0]=3;

hairetubox[1]=4;

hairetubox[2]=5;


になってない・・・


ちゃんと ビルド実行できてる・・ような気がするんだが・・・


?」



ソーラー「変ですね


こんな簡単な命令文


hairetubox[3]=hairetuhako[3];


が実行できてないなんて」


マックス


「ははっまだまだ余裕だな


配列hairetuhako[3]内のデータをhairetubox[3]に


わたす


hairetubox[3]=hairetuhako[3];


この書き方が


まちがってるな


hairetubox=hairetuhako;


これが正解だろう ははははははは


ではプログラムを構成し直し


#include <iostream>


using namespace std;


int main()


{


int hairetubox[3];


hairetubox[0] = 1;

hairetubox[1] = 2;

hairetubox[2] = 3;



int hairetuhako[3];


hairetuhako[0] = 3;

hairetuhako[1] = 4;

hairetuhako[2] = 5;


hairetubox = hairetuhako;


/*これなら配列hairetuboxに配列hairetuhakoを代入し


配列hairetuhako[3]の中身のデータを


配列hairetubox[3]に渡すことができるのでしょうか


できそうですね*/


cout << hairetubox[0] << "\n";

cout << hairetubox[1] << "\n";

cout << hairetubox[2] << "\n";


return 0;

}




マックス「はは


コンちゃん」


ビルド実行結果


エラー C3863 配列型 'int [3]' を割り当てることはできません。

エラー (アクティブ) E0137 式は変更可能な左辺値である必要があります



マックス「え~なんでぇ


もう、しんじらんな~い


プログラムの実行すらできないじゃんか・・・」


ソーラー「???


なんかできそうでできないですね。」


マックス「まだまだ 大丈夫だ


次は


hairetubox[]=hairetuhako[];



これで決まりのようだな」



ソーラー「まあ、そうなりますよね😊


これが正解かな」




マックス「


では


さらにプログラムを構成し直し


#include <iostream>


using namespace std;


int main()


{


int hairetubox[3];


hairetubox[0] = 1;

hairetubox[1] = 2;

hairetubox[2] = 3;



int hairetuhako[3];


hairetuhako[0] = 3;

hairetuhako[1] = 4;

hairetuhako[2] = 5;


hairetubox[] = hairetuhako[];


/*これなら配列hairetubox[]に配列hairetuhako[]を代入し


配列hairetuhako[3]の中身のデータを


配列hairetubox[3]に渡すことができるのでしょうか


これが公式な記述方法なのかな?


*/


cout << hairetubox[0] << "\n";

cout << hairetubox[1] << "\n";

cout << hairetubox[2] << "\n";


return 0;



マックス「び・る・ど・ル」


ビルド実行結果


エラー C2059 構文エラー: ']'

エラー (アクティブ) E0029 式が必要です

エラー (アクティブ) E0029 式が必要です



ソーラー「どうも


配列に配列を直接代入して


数値データを渡すことはできないようです。」


マックス「おっかしいなあ?


ふつう代入できるように開発しそうなものなんだが・・・」


ソーラー「大丈夫です


次のプログラムのように


配列hairetuhako内のデータを1個ずつ


次のように


配列変数同士で


hairetubox[0]=hairetuhako[0];

hairetubox[1]=hairetuhako[1];

hairetubox[2]=hairetuhako[2];


配列hairetuboxに渡せばいいんですよ


#include <iostream>


using namespace std;


int main()


{


int hairetubox[3];


hairetubox[0] = 1;

hairetubox[1] = 2;

hairetubox[2] = 3;



int hairetuhako[3];


hairetuhako[0] = 3;

hairetuhako[1] = 4;

hairetuhako[2] = 5;


hairetubox[0] = hairetuhako[0];

hairetubox[1] = hairetuhako[1];

hairetubox[2] = hairetuhako[2];


/*これなら配列hairetubox[]に配列hairetuhako[]を代入し


配列hairetuhako[3]の中身のデータを


配列hairetubox[3]に渡すことができるのでしょうか


これが公式な記述方法なのかな?


*/


cout << hairetubox[0] << "\n";

cout << hairetubox[1] << "\n";

cout << hairetubox[2] << "\n";


return 0;

}


ビルド実行結果


3

4

5


マックス「これだと データをわたすことができるのか・・・」


ソーラー「配列変数hairetubox[0]やhairetuhako[0]は


変数とよばれるように


変数のように扱えるみたいですね」






☆ 🌞 ☆ 🌞 ☆ 🌞 ☆ 🌞 ☆ 🌞 ☆ 🌞 ☆ 🌞 ☆



ここで1番最初のプログラムに戻ってみましょう。



#include <iostream>


using namespace std;


int main()


{


int hairetubox [3] ;


hairetubox[0]=1;

hairetubox[1]=2;

hairetubox[2]=3;



int hairetuhako[3] ;


hairetuhako[0]=3;

hairetuhako[1]=4;

hairetuhako[2]=5;


hairetubox[3]=hairetuhako[3];


/*さあっ このように


配列hairetubox[3]に

配列hairetuhako[3]を


代入し配列hairetuhako[3]の中身のデータを

配列hairetubox[3]に渡すことができるのでしょうか


できませんでした*/


cout<<hairetubox[0]<<"\n";

cout<<hairetubox[1]<<"\n";

cout<<hairetubox[2]<<"\n";


return 0;

}


ビルド実行結果


1

2

3



solarplexuss「このプログラムでは


hairetubox[3]=hairetuhako[3];


を行うことにより



int hairetubox [3] ;


により生成された配列hairetubox[3]に


int hairetuhako[3] ;


により生成された配列hairetuhako[3]を


代入し


配列hairetuhako[3]の配列変数に格納されているデータ


hairetuhako[0]=3;

hairetuhako[1]=4;

hairetuhako[2]=5;




配列hairetubox[3]の配列変数


hairetuhako[0]

hairetuhako[1]

hairetuhako[2]


に代入しようとしています。


でも


そのようなことはできませんでした。


このとき


よ~く


hairetubox[3]=hairetuhako[3];



ご覧ください・・・・




hairetubox[3]=hairetuhako[3];




単に


配列変数hairetubox[3]に

配列変数hairetuhako[3]の格納している値を


代入しているだけなので


配列変数

hairetuhako[0]=3;

hairetuhako[1]=4;

hairetuhako[2]=5;


のように格納されているデータが


配列変数

hairetuhako[0]

hairetuhako[1]

hairetuhako[2]


に代入されるわけもないというわけです。


そもそも

int hairetubox [3] ;



int hairetuhako[3] ;


を実行すれば


配列変数は

hairetuhako[0]

hairetuhako[1]

hairetuhako[2]

配列変数

hairetuhako[0]

hairetuhako[1]

hairetuhako[2]


のように


3つ配列変数ができますが


このとき

hairetuhako[3]



生成されていません



int hairetubox [100] ;



int hairetuhako[100] ;


を実行すれば



hairetuhako[0]

hairetuhako[1]

hairetuhako[2]

hairetuhako[99]

hairetuhako[0]

hairetuhako[1]

hairetuhako[2]

hairetuhako[99]

のように


100個の


配列変数


ができますが


このとき

hairetuhako[100]



hairetuhako[100]



生成されていません


間違いやすいポイントです」





  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る