三角関数のテーブル引きのプログラムです

Committer:
ssaattww
Date:
Tue Mar 21 02:04:02 2017 +0000
Revision:
0:0cf44de8ff17
Child:
2:c0175d45d388
??????????????

Who changed what in which revision?

UserRevisionLine numberNew 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 */