第7講 配列と2次元ループの学習
第3話 自然配列の解答と解説
#pragma once
int a[10];
int b[10][10];
・
・
・
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^
e) {
int i;
int j;
String^ w="";
for(i=0;i<10;i++){
a[i]=i;
}
for(i=0;i<10;i++){
w=w+L" "+a[i].ToString();
}
label1->Text=w;
w=L"";
for(i=0;i<3;i++){
for(j=0;j<3;j++){
b[i][j]=3*i+j+1;
}
}
for(i=0;i<3;i++){
for(j=0;j<3;j++){
w=w+b[i][j].ToString()+L" ";
}
w=w+L"\n";
}
label2->Text=w;
}
2次元ループをトレースしてみましょう。
i | 0 | 1 | 2 | ||||||
j | 0 | 1 | 2 | 0 | 1 | 2 | 0 | 1 | 2 |
[i][j]=3*i+jなので
i=0,j=0のとき、
b[0][0]=3×0+0+1=1
i=0,j=1のとき、
b[0][1]=3×0+1+1=2
i=0,j=2のとき、
b[0][2]=3×0+2+1=3
i=1,j=0のとき、
b[1][0]=3×1+0+1=4
i=1,j=1のとき、
b[1][1]=3×1+1+1=5
i=1,j=2のとき、
b[1][2]=3×1+2+1=6
i=2,j=0のとき、
b[2][0]=3×2+0+1=7
i=2,j=1のとき、
b[2][1]=3×2+1+1=8
i=2,j=2のとき、
b[2][2]=3×2+2+1=9
以上から1から9までが作られることがお分かりでしょうか。
では、皆さん次は、のように表示させてください。
1を01などと表示させる理由は、
w=w+b[i][j].ToString()+L" "; だとですし、
w=w+L" "+b[i][j].ToString()+L" "; だととなってしまします。
フォント、サイズ、スタイルなどが影響して、半角スペースが半角数字1個分になっていないようで、
微妙にずれてしまうのです。
私が試行錯誤した範囲では、綺麗に整えることは出来ませんでした。
それで仕方なく、1を01と表示させることにしたのです。
もし、皆さんのうちで綺麗に整列できた方がいたら、メールで教えて頂ければと思います。
解答例は、例によって20行下に載せますので成功したらスクロールしてみてください。
解答例
int i;
int j;
String^ w="";
for(i=0;i<10;i++){
a[i]=i;
}
for(i=0;i<10;i++){
w=w+L" "+a[i].ToString();
}
label1->Text=w;
w=L"";
for(i=0;i<4;i++){
for(j=0;j<4;j++){
b[i][j]=4*i+j+1;
}
}
for(i=0;i<4;i++){
for(j=0;j<4;j++){
if(b[i][j]<10){
w=w+L"0"+b[i][j].ToString()+L" ";
}
else{
w=w+b[i][j].ToString()+L" ";
}
}
w=w+L"\n";
}
label2->Text=w;
それでは、次は
のようにLabelを5つ加え、
プログラムソースの冒頭の変数の宣言を
#pragma once
int a[10];
int b[10][10];
int c[10][10];
として、実行ボタンが押されると、
のように表示させるプログラムを考えてください。
解答例は次話で。
初心者のためのjava 入門 基礎から応用まで
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第1部
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第2部
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第3部
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすい vb 入門 vba 入門 基礎から応用まで 第1部
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ