第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桁のデータを発生させ表示させてから、
合計値、平均値、最大値、最小値、大きい順に並び替えたデータを表示させてみましょう。
a
データ数は、今回と同じ10個としてプログラミングに挑戦しましょう。
乱数を使いますので、冒頭でインクルードファイルstdlib.hを読み込んでおく必要があります。
b
尚、並び替えについては第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;

        }     
};
}
実行結果例
c
因みにw=L"";を入れ忘れると
d
と20個のデータが表示されてしまいます。
いったんw=L"";で元データをクリアしなければなりません。

今回作ったソフトでは、配列のありがたさがわかります。
何度も同じデータを再利用し、それをすべてfor文、if文で扱えているからです。


第1話へ 第3話へ

025


vc++講義第1部へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ

数学研究室に戻る