苦しんで覚えるC言語

様々な計算


絶対値


絶対値を計算するにはabs関数を使用します。
なお、abs関数を使うには #include <stdlib.h> が必要です。
絶対値
数直線上における原点からの距離。
要するに、正の値はそのまま、負の値は正にした数値。
abs関数の使い方は次の通りです。

絶対値 = abs(数値);
次のプログラムは絶対値を求める例です。

#include <stdio.h>
#include <stdlib.h>

void main(void)
{
    printf("%d\n",abs(10));
    printf("%d\n",abs(-10));

    return;
}
このプログラムの実行結果は次の通りになります。

10
10

目次に戻る

累乗


累乗を計算するにはpow関数を使用します。
なお、pow関数を使うには #include <math.h> が必要です。

pow関数の使い方は次の通りです。
なお、値はdouble型になるので、int型で記憶すると不正確になります。

累乗 = pow(数値,指数);
次のプログラムは、累乗を求める例です。

#include <stdio.h>
#include <math.h>

void main(void)
{
    printf("%dの%d乗 = %f\n",5,2,pow(5,2));
    printf("%dの%d乗 = %f\n",8,3,pow(8,3));
    printf("%dの%d乗 = %f\n",2,10,pow(2,10));

    return;
}
このプログラムの実行結果は次の通りになります。

5の2乗 = 25.000000
8の3乗 = 512.000000
2の10乗 = 1024.000000

目次に戻る

平方根(√)


平方根を計算するにはsqrt関数を使用します。
なお、sqrt関数を使うには #include <math.h> が必要です。
平方根
2乗するとその数になる数値。
元の数値を正方形の面積とすると、平方根は辺の長さに当たる。
sqrt関数の使い方は次の通りです。
なお、値はdouble型になるので、int型で記憶すると不正確になります。

平方根 = sqrt(数値);
次のプログラムは、平方根を求める例です。

#include <stdio.h>
#include <math.h>

void main(void)
{
    printf("√%d = %f : %f  %f = %f\n",100,sqrt(100),sqrt(100),sqrt(100),sqrt(100)  sqrt(100));
    printf("√%d = %f : %f  %f = %f\n",2,sqrt(2),sqrt(2),sqrt(2),sqrt(2)  sqrt(2));

    return;
}
このプログラムの実行結果は次の通りになります。

√100 = 10.000000 : 10.000000 * 10.000000 = 100.000000
√2 = 1.414214 : 1.414214 * 1.414214 = 2.000000
四捨五入されているため正確に計算できているように見えるのですが、
同様の計算を繰り返すと誤差がでるため注意が必要です。

目次に戻る

三角関数


三角関数を計算するには次の関数を使用します。
なお、これらの関数を使うには #include <math.h> が必要です。
関数名三角関数値
sinサイン
cosコサイン
tanタンジェント
asinアークサイン
acosアークコサイン
atanアークタンジェント
アーク系三角関数
アーク系三角関数は、普通の三角関数の逆計算をします。
普通の三角関数は、角度から辺の長さの割合を求めますが、
アーク系三角関数は、辺の長さの割合から角度を求めます。
これらの関数の使い方はいずれも同じなので、以後はtan関数を例に説明します。
tan関数の使い方は次の通りです。

タンジェント = tan(ラジアン角度);
ただし、この角度は普段我々が使用する90度が直角となる角度ではなく、
ラジアンと呼ばれる角度の単位を使用します。
次の式で普通の角度からラジアンへ変換できます。

ラジアン = (度 * 3.14159 / 180)
ラジアン
円弧と半径の長さが等しくなる位置を1ラジアンとする角度の単位。
コンピュータの世界ではほとんどの場合にラジアンを使用する。
毎回この計算を行うのは面倒なので、次のようなマクロを作成します。

#define RADIAN(ARC) ((ARC) * 3.14159 / 180)
次のプログラムは、身長160cmの人が5m離れた位置から木を見上げたときに、
その角度が40度だった場合の木の高さを求める例です。

#include <stdio.h>
#include <math.h>

#define RADIAN(ARC) ((ARC) * 3.14159 / 180)

void main(void)
{
    double stature = 160;
    double distance = 500;
    double arc = 40;
    double tree;

    tree = distance * tan(RADIAN(arc)) + stature;
    printf("%fm\n",tree / 100);

    return;
}
このプログラムの実行結果は次の通りになります。

5.795493m
三角関数でも計算を繰り返すと誤差がでるため注意が必要です。

目次に戻る