三角関数のテーブル引きのプログラムです
table.h@0:0cf44de8ff17, 2017-03-21 (annotated)
- Committer:
- ssaattww
- Date:
- Tue Mar 21 02:04:02 2017 +0000
- Revision:
- 0:0cf44de8ff17
- Child:
- 2:c0175d45d388
??????????????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ssaattww | 0:0cf44de8ff17 | 1 | #ifndef _TABLE_ |
ssaattww | 0:0cf44de8ff17 | 2 | #define _TABLE_ |
ssaattww | 0:0cf44de8ff17 | 3 | |
ssaattww | 0:0cf44de8ff17 | 4 | #include "mbed.h" |
ssaattww | 0:0cf44de8ff17 | 5 | class table{ |
ssaattww | 0:0cf44de8ff17 | 6 | public: |
ssaattww | 0:0cf44de8ff17 | 7 | table(int times); |
ssaattww | 0:0cf44de8ff17 | 8 | ~table(); |
ssaattww | 0:0cf44de8ff17 | 9 | void SIN_table(void); |
ssaattww | 0:0cf44de8ff17 | 10 | void COS_table(void); |
ssaattww | 0:0cf44de8ff17 | 11 | void make_table(double (*fnc)(int)); |
ssaattww | 0:0cf44de8ff17 | 12 | double show(int num); |
ssaattww | 0:0cf44de8ff17 | 13 | double deg(double degree); |
ssaattww | 0:0cf44de8ff17 | 14 | double rad(double radian); |
ssaattww | 0:0cf44de8ff17 | 15 | private: |
ssaattww | 0:0cf44de8ff17 | 16 | int number; |
ssaattww | 0:0cf44de8ff17 | 17 | double *ans; |
ssaattww | 0:0cf44de8ff17 | 18 | private: |
ssaattww | 0:0cf44de8ff17 | 19 | }; |
ssaattww | 0:0cf44de8ff17 | 20 | #endif |
ssaattww | 0:0cf44de8ff17 | 21 | /* |
ssaattww | 0:0cf44de8ff17 | 22 | byDONAV___2017/03/19 |
ssaattww | 0:0cf44de8ff17 | 23 | main関数だけ抜粋 |
ssaattww | 0:0cf44de8ff17 | 24 | 基本的にはcで書かれたほうのライブラリと使い方は同じだが、ユーザの手数をクラスを用いることによって減らしたバージョンがこれである。 |
ssaattww | 0:0cf44de8ff17 | 25 | |
ssaattww | 0:0cf44de8ff17 | 26 | コンストラクタとデスコントラクタ |
ssaattww | 0:0cf44de8ff17 | 27 | コンストラクタの引数はテーブルのサイズまたは、三角関数の精度となる。 |
ssaattww | 0:0cf44de8ff17 | 28 | デスコントラクタは動的確保した配列の消去を行う。 |
ssaattww | 0:0cf44de8ff17 | 29 | |
ssaattww | 0:0cf44de8ff17 | 30 | メンバ関数の説明 |
ssaattww | 0:0cf44de8ff17 | 31 | SIN_table |
ssaattww | 0:0cf44de8ff17 | 32 | 正弦の値を動的確保した配列に代入する。 |
ssaattww | 0:0cf44de8ff17 | 33 | |
ssaattww | 0:0cf44de8ff17 | 34 | COS_table |
ssaattww | 0:0cf44de8ff17 | 35 | 余弦の値を動的確保した配列に代入する。 |
ssaattww | 0:0cf44de8ff17 | 36 | |
ssaattww | 0:0cf44de8ff17 | 37 | make_table |
ssaattww | 0:0cf44de8ff17 | 38 | ユーザが定義した関数のポインタを引数として、動的確保した配列に代入する。 |
ssaattww | 0:0cf44de8ff17 | 39 | |
ssaattww | 0:0cf44de8ff17 | 40 | show |
ssaattww | 0:0cf44de8ff17 | 41 | 基本的にはmake_tableを用いて配列に代入したときに用いる。 |
ssaattww | 0:0cf44de8ff17 | 42 | 引数の番号の配列の値を返す。 |
ssaattww | 0:0cf44de8ff17 | 43 | |
ssaattww | 0:0cf44de8ff17 | 44 | deg,rad |
ssaattww | 0:0cf44de8ff17 | 45 | 基本的にはSIN_tableやCOS_tableを用いて配列に代入したときに用いる。 |
ssaattww | 0:0cf44de8ff17 | 46 | 引数は、degreeとradianの角度で、角度に対応した配列を返す。 |
ssaattww | 0:0cf44de8ff17 | 47 | |
ssaattww | 0:0cf44de8ff17 | 48 | プログラム例を下に記す。 |
ssaattww | 0:0cf44de8ff17 | 49 | #include <stdlib.h> |
ssaattww | 0:0cf44de8ff17 | 50 | #include <stdio.h> |
ssaattww | 0:0cf44de8ff17 | 51 | #include <math.h> |
ssaattww | 0:0cf44de8ff17 | 52 | #include <class_table.h> |
ssaattww | 0:0cf44de8ff17 | 53 | double squad(int n){ |
ssaattww | 0:0cf44de8ff17 | 54 | return n*n; |
ssaattww | 0:0cf44de8ff17 | 55 | } |
ssaattww | 0:0cf44de8ff17 | 56 | int main(){ |
ssaattww | 0:0cf44de8ff17 | 57 | table sin_ta(1200); |
ssaattww | 0:0cf44de8ff17 | 58 | table cos_ta(1200); |
ssaattww | 0:0cf44de8ff17 | 59 | table sqa_ta(1200); |
ssaattww | 0:0cf44de8ff17 | 60 | sin_ta.SIN_table(); |
ssaattww | 0:0cf44de8ff17 | 61 | cos_ta.COS_table(); |
ssaattww | 0:0cf44de8ff17 | 62 | sqa_ta.make_table(squad); |
ssaattww | 0:0cf44de8ff17 | 63 | printf("%f",sin_ta.deg(30)); |
ssaattww | 0:0cf44de8ff17 | 64 | printf("%f",cos_ta.deg(60)); |
ssaattww | 0:0cf44de8ff17 | 65 | for(int i=0;i<1201;i++){ |
ssaattww | 0:0cf44de8ff17 | 66 | printf("%f\n",sqa_ta.show(i)); |
ssaattww | 0:0cf44de8ff17 | 67 | } |
ssaattww | 0:0cf44de8ff17 | 68 | } |
ssaattww | 0:0cf44de8ff17 | 69 | |
ssaattww | 0:0cf44de8ff17 | 70 | |
ssaattww | 0:0cf44de8ff17 | 71 | /////////////////////////////////////////////////////////////////////////////// |
ssaattww | 0:0cf44de8ff17 | 72 | 実行結果 |
ssaattww | 0:0cf44de8ff17 | 73 | 0.50000 |
ssaattww | 0:0cf44de8ff17 | 74 | 0.50000 |
ssaattww | 0:0cf44de8ff17 | 75 | */ |