第3講 繰り返し処理for文
第4話 階差数列の2乗の和解答例
1,2,3,・・・,100とか
5,7,9,・・・,31
のような数の並びを等差数列といいます。
そして最初の項(数字)を初項、後ろの項と前の項の差を交差といいます。
交差は項差ではないことに注意してください。
どこの差も一定なのが等差数列なので、公の文字を使い交差というのです。
それで今回の和のテーマ名が階差数列の2乗の和解答例となっています。
それでは答え合わせをしましょう。
@1の2乗+2の2乗+3の2乗+・・・+100の2乗
解答例
//以下C#を始めるためのお呪い
using System;
using System.Collections.Generic;
using
System.Linq;
using System.Text;
using
System.Threading.Tasks;
//以上C#を始めるためのお呪い
namespace a
//初心者はお呪い=決まり事と思い一切気にしない
{
class Program
//初心者はお呪い=決まり事と思い一切気にしない
{
static void Main(string[] args)
//私は社長だ。
{
int a; //整数型変数
//以下計算
a = 0;
for (int i = 1; i < 101; i++) a += i * i; //2乗の和の計算
//以上計算
Console.WriteLine("1の2乗+2の2乗+3の2乗+・・・+100の2乗={0:d}", a);
//変数aの中身を表示
}
}
}
実行画面
1の2乗+2の2乗+3の2乗+・・・+100の2乗=338350
学習が進んできたために、前話辺りから注釈文(コメントともいいます)の
コメントが変わっていることに注意してください。
A5の3乗+7の3乗+9の3乗+・・・+31の3乗
(これは初項5、公差2、末項(最後の項)31の等差数列の2乗の和です。)
解答例
//以下C#を始めるためのお呪い
using System;
using System.Collections.Generic;
using
System.Linq;
using System.Text;
using
System.Threading.Tasks;
//以上C#を始めるためのお呪い
namespace a
//初心者はお呪い=決まり事と思い一切気にしない
{
class Program
//初心者はお呪い=決まり事と思い一切気にしない
{
static void Main(string[] args)
//私は社長だ。
{
int a; //整数型変数
//以下計算
a = 0;
for (int i = 5; i < 32; i += 2) a += i * i * i; //繰り返し処理
//以上計算
Console.WriteLine("5の3乗+7の3乗+9の3乗+・・・+31の3乗={0:d}", a); //箱aの中身を表示
}
}
}
実行画面
5の3乗+7の3乗+9の3乗+・・・+31の3乗=130788
前話でも今話でもいちいち初項・公差・末項をプログラムコードに入れていました。
このやり方は、汎用的(用途の広い)なプログラムの組み方ではありません。
プログラムは、汎用的にして普遍的なものにすることが理想です。
そこで、初項・公差・末項をキーボードから指定して、
計算することが出来るように変更します。
例えば、キーボードから入力した値をコンソール画面から取得してaに代入するには、
a = int.Parse(Console.ReadLine());
とします。
Console.ReadLine()はコンソール画面からデータを読み込むものです。
int.Parse()となっているのは、
Console.ReadLine()はstring型を読み込むので、
それを整数型に強制的に変更するためです。
同じ1であっても、
コンピュータは文字としての1と数値としての1を区別します。
コンソール画面にある1は文字として認識する仕様になっています。
エクセルなら、文字として入力する場合には、
'1
として入力しますね。
エクセルでも数値としての1と文字としての1を区別しているわけです。
では、次のようにプログラムを組んで実行してみてください。
//以下C#を始めるためのお呪い
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//以上C#を始めるためのお呪い
namespace a //初心者はお呪い=決まり事と思い一切気にしない
{
class Program //初心者はお呪い=決まり事と思い一切気にしない
{
static void Main(string[] args) //私は社長だ。
{
int a; //整数を入れる箱aを用意 箱iを削除
Console.WriteLine("aの値をキーボードから入力してください。" );
Console.Write("a=");
a = int.Parse(Console.ReadLine());
Console.WriteLine("a={0:d}", a); //箱aの中身を表示
}
}
}
となり、キーボードから例えば15を入力すると、
となります。
それで皆さん、等差数列の和を求めるアプリ
↓
キーボードから初項を入力してエンター
↓
↓
キーボードから交差を入力してエンター
↓
↓
キーボードから末項を入力してエンター
↓
を開発してください。