第5講 配列の学習
第2話 1次元配列を利用した簡単なソフト
第1話問題解答例
#pragma endregion
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^
e) {
//変数の宣言
int i,a[10];
String^ w=L"";
//データ発生
for(i=0;i<10;i++){
a[i]=i+1;
}
//データ表示
for(i=0;i<10;i++){
w=w+L" "+a[i].ToString();
}
textBox1->Text=w;
}
};
}
これが解答例ですが、今回作ったソフトは余りに芸がありませんね。
別に配列を使わなくても、
#pragma endregion
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^
e) {
//変数の宣言
int i,a[10];
String^ w=L"";
//データ発生
for(i=1;i<11;i++){
w=w+L" "+i.ToString();
}
//データ表示
textBox1->Text=w;
}
};
}
で十分だからです。そこで、ソフトを改良して配列のありがたみのわかるソフトにしましょう。
今回のような順に入れていくデータでなく、rand()(乱数)を利用して、アットランダムに1桁のデータを発生させ表示させてから、
合計値、平均値、最大値、最小値、大きい順に並び替えたデータを表示させてみましょう。
データ数は、今回と同じ10個としてプログラミングに挑戦しましょう。
乱数を使いますので、冒頭でインクルードファイルstdlib.hを読み込んでおく必要があります。
尚、並び替えについては第4講の成績順並び替えを参考にしましょう。
プログラミング例は30行下。
#pragma endregion
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^
e) {
//変数の宣言
int i,a[10];
String^ w=L"";
//データ発生
for(i=0;i<10;i++){
a[i]=rand()%10;
}
//データ表示
for(i=0;i<10;i++){
w=w+L" "+a[i].ToString();
}
textBox1->Text=w;
//合計値の算出
int wa=0;
for(i=0;i<10;i++){
wa=wa+a[i];
}
//合計値の表示
textBox2->Text=wa.ToString();
//平均値の算出表示
textBox3->Text=(((double)wa)/10).ToString();
//最大値の算出
int max=0;
for(i=0;i<10;i++){
if(a[i]>=max)max=a[i];
}
//最大値の表示
textBox4->Text=max.ToString();
//最小値の算出
int min=10;
for(i=0;i<10;i++){
if(a[i]<=max)min=a[i];
}
//最小値の表示
textBox5->Text=min.ToString();
//データ並び替え算出
int j,bn,wr;
for(i=9;i>=0;i--){
min=10;
for(j=0;j<=i;j++){
if(a[j]<=min){
min=a[j];
bn=j;
}
}
wr=a[bn];
a[bn]=a[i];
a[i]=wr;
}
//並び替えデータ表示
w=L""; //初期化 これを忘れると20個のデータ表示になってしまう。
for(i=0;i<10;i++){
w=w+L" "+a[i].ToString();
}
textBox6->Text=w;
}
};
}
実行結果例
因みにw=L"";を入れ忘れると
と20個のデータが表示されてしまいます。
いったんw=L"";で元データをクリアしなければなりません。
今回作ったソフトでは、配列のありがたさがわかります。
何度も同じデータを再利用し、それをすべてfor文、if文で扱えているからです。
第1話へ 第3話へ
vc++講義第1部へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
数学研究室に戻る