Download presentation
Presentation is loading. Please wait.
1
第11回演習課題の解説
2
第10回演習課題(4) 4. 以下のプログラムを作成する 前回の積み残し 第11回のところに提出(アップロード)する
以下の仕様を満たすクラスを作れ オブジェクト作成時に整数kを引き数とし、newを使って (k+1)*(k+1)の2次元配列を確保する オブジェクト破棄時にdeleteでメモリを解放する 任意の座標(x,y)に値を代入できる 任意の座標(x,y)の値を表示できる
3
第10回演習課題(4) 続き k=4のとき 行毎の和 合計 列毎の和
(0,0)から(k-1,k-1)までには、乱数で適当な値を入れる 列毎の和を(k,0)から(k,k-1)に入れる 行毎の和を(0,k)から(k-1,k)に入れる (0,0)から(k-1,k-1)までの合計を(k,k)に入れる (0,0)から(k,k)までを出力した後、オブジェクトを破棄する (0,0) (0,1) (0,2) (0,3) (0,4) (1,0) (1,1) (1,2) (1,3) (1,4) (2,0) (2,1) (2,2) (2,3) (2,4) (3,0) (3,1) (3,2) (3,3) (3,4) (4,0) (4,1) (4,2) (4,3) (4,4) k=4のとき 行毎の和 合計 列毎の和
4
第10回演習課題(4)の回答 ans10-4.cc 定型のパターン 2次元配列の動的確保:2段階の処理
mem2d(int _size) { // コンストラクタ size = _size; array = new double*[size+1]; // 配列のメモリ確保(1次 元目; size+1個分) for (int i=0; i<size+1; i++) { array[i] = new double[size+1]; // 配列のメモリ確保(2 次元目; size+1個分) }
5
第10回演習課題(4)の回答 続き 2次元配列の動的解放:2段階の処理 ~mem2d() { // デストラクタ
if (array!=NULL) { // 配列にメモリが確保されている場合 のみ,メモリを開放する for (int i=0; i<size+1; i++) { delete [] array[i]; // 配列のメモリの開放確保(2次元 目; size+1個分) } delete [] array;
6
最小値と最大値を指定して、一様乱数を得る方法
第10回演習課題(4)の回答 続き 乱数発生方法 rand関数とRAND_MAXを使って任意の範囲の乱数を求 めることができる srand関数を使って、乱数の種を初期化 #include <stdlib.h> // rand関数のため #include <time.h> // 乱数の種のため srand((unsigned) time(NULL)); // 乱数の初期化 double get_rand() { // 乱数を得る return min + (double)rand() * (max - min) / ((double)RAND_MAX+1.0); } 最小値と最大値を指定して、一様乱数を得る方法
7
他にも桁数を指定したり、余白を埋める文字を指定したりできる
第10回演習課題(4)の回答 続き coutで表示を揃える方法 cout << setw(7) によって、出力の幅を7文字にできる ただし、iomanipをincludeする必要がある #include <iomanip> // setwのため cout << setw(7) // 出力の幅を7文字にする << x; 他にも桁数を指定したり、余白を埋める文字を指定したりできる
8
何かを参考にした場合は、その旨を述べる。書いてない場合は0点
第11回演習課題(1) 1. 乱数を使って円周率πを求めよ。 例えば、x座標とy座標を乱数で生成して、点を発生させる 1x1の正方形と直径1の円を考えて、発生させた点の数と、 円の内側にできた点の数を比べると、円周率が求まる 発生させた点の数と求まった円周率の関係を図示するとな お良い 使った手法をTAに分かるように説明する 何かを参考にした場合は、その旨を述べる。書いてない場合は0点
9
第11回演習課題(1)の回答 ans11-1.cc 円周率の求め方
円の内側に落ちる確率を𝑎とすれば、𝜋が満たす条件は 𝜋 𝑟 2 =4𝑎 𝑟 2 とおける したがって、円周率𝜋=4𝑎で推定できる 乱数は ans10-4.cc で作ったclass random_numberを流 用
10
その数自身を除く約数の和が、その数自身と等しい自然数
第11回演習課題(2) 2. 以下の条件を満たすプログラムを作成せよ。 引数として自然数を1つとり、その数が完全数であるかど うかを判定する関数を持つ。 1から100以上の適当な値までの自然数が完全数かどうかを 調べて、完全数を表示する。 完全数 その数自身を除く約数の和が、その数自身と等しい自然数 (例:6=1+2+3、 28= )
11
第11回演習課題(2)の回答 ans11-2.cc 単純な方法 割り切れるかどうかは、演算子%で調べれば良い 後は、地道に計算
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.