第3講 for文の学習

第3話 Form1を改良し、値をTextBoxから取得する

前話解答例
#pragma endregion
   private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
           int i,w=0;

           for(i=1;i<100;i=i+2){
             w=w+i;
           }

           label1->Text=w.ToString();

        }
  };
}
色のついている部分を変更すれば、
いろいろな計算をさせることができます。
しかし、ちょっとした工夫でより汎用性や普遍性を高めることができます。
Form1を改良して、はじめの値、終わりの値、変化の幅をTextBox上から取得できるように変更しましょう。
等差数列の和Form1
コードを考えてください。
解答例は、いつもの通り20行下。



















#pragma endregion
   private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
           int a,b,c,i,w=0;

           //TextBoxからはじめの値、終わりの値、変化の幅を取得する
           a=int::Parse(textBox1->Text);
           b=int::Parse(textBox2->Text);
           c=int::Parse(textBox3->Text);

           //等差数列の和を計算する
          for(i=a;i<b+1;i=i+c){
            w=w+i;
          }
          
          //答えを表示する
          textBox4->Text=w.ToString();

        }
   };
}
実行例
等差数列実行結果
これは1+3+5+・・・+99を計算させています。
何故、最後が99かと申しますと、
最後のループ(繰り返し)のとき、i=i+2の計算で101となり、
ループを抜けてしまうからです。
for(i=a;i<b+1;i=i+c)のi<b+1がループを続ける条件です。
条件に反したら、ループは実行されません。
ですから1+3+5+・・・+99です。

では皆さん、このソフトで次の計算をさせる場合のはじめの値、終わりの値、変化の幅を考えてください。
@ 5+8+11+・・・+104
A 101+97+93+・・・+57

問題加え、課題も出しておきたいと思います。
さらに、Form1を改良し、
改良
3+5+7+・・・+99
の計算に加えて、
2乗の和
3乗の和
等も計算できるようしたいと思います。
コードのどのように変更したらよいか考えてください。


第2話へ 第4話へ

025


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

数学研究室に戻る