第3講 for文の学習
第6話 1から10までの積
1から10までの積解答コード例
#include<iostream>
using namespace std;
void main(){
int w=1;
for(int i=1;i<11;i++)w=w*i;
cout<<"1から10までの積="<<w<<endl;
}
実行結果
では、次の課題は、for文を使って、円周率を計算することです。
円の面積の公式はでした。
したがって、r=1のとき、円の面積はちょうどπですから、
半径1の円の面積を計算すればよいのです。
半径1の面積を計算するためには、
1/4円
の面積を計算して、4倍すればよいのです。
では、1/4円の面積はどのように計算したらよいでしょうか。
小さい長方形に分けて足していけば、円の面積に近い値が出ます。
長方形の横幅を小さくしていけば、誤差は小さくなっていきます。
横幅をコンソールから取得できるようにしてやって、
横幅とともに計算値がπに近づいていく様子を観察できるようにしてみましょう。
横幅をdとすると、1個目の長方形の縦は1ですから、その面積は
d×1=d
です。
では2個目の長方形の面積はどうでしょうか。
縦がわからないとわかりません。
1/4円の方程式は、でした。
ですから、2個目の長方形の縦は、です。従って、その面積は
3個目は縦がで、面積は
4個目は縦がで、面積は
以下同様にして、
n個目は縦がで、面積は
したがって、1/4円の面積は
すなわちを計算すればよいのです。
C言語やC++でルートxを計算させるときは、
sqrt(x)とします。そして、sqrt()を使うときには、
#include<math.h>
と記述しておく必要があります。
では、プログラムコードを考えてみてください。
合計を計算するwと横幅dは、doubleで宣言しておき、
for文の制御変数iと区切り数nは大きい数も実験できるようにlong型にしましょう。
そのとき、d=1/n; とすると、dは0になってしまいます。
long型同士の計算結果はlong型になるのでした。
左辺がdouble型ですから、右辺の型も一致させなければなりません。
型を強制的に変換させることをキャストといいます。
キャストするには、
d=1/(double)n;
とします。(double)nによって、
long型であったnはdouble型に強制的に変換されます。
ヒントとして、sqrt()の中身を書いておきましょう。
sqrt(1-((double)i*d)*((double)i*d));
また、coutで小数第7位以降を表示させるには、
#include <iomanip>を冒頭に入れて、
cout <<"単精度の場合"<< setprecision(7) << a/b << endl;
のように使うのでしたね。
お忘れの方は、第2講第10話を参照して下さい。
では、プログラムを組んで下さい。
第5話へ 第7話へ
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
VC++ C言語 C++ 入門 初心者 基礎から応用まで
本サイトトップへ