MMGamesロゴ  MMGames
Twitterシェアボタン  Facebookシェアボタン   
 English 

しんで覚えるC言語
しんで覚えるC言語

さまざまな計算

絶対値
絶対値を計算するにはabs関数を使用します。
なお、abs関数を使うには #include <stdlib.h> が必要です。

キーワード
【絶対値】

数直線上における原点からの距離。
要するに、正の値はそのまま、負の値は正にした数値。


abs関数の使い方は次の通りです。

abs関数
累乗 = pow(数値, 指数);

次のプログラムは絶対値を求める例です。

ソースコード
#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 <stdlib.h>

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

    return;
}

次のプログラムは、累乗を求める例です。

ソースコード
#include <math.h>
#include <stdio.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関数
平方根 = sqrt(数値);

次のプログラムは、平方根を求める例です。

ソースコード
#include <math.h>
#include <stdio.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関数
タンジェント = tan(ラジアン角度);

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

普通の角度からラジアンへ変換
ラジアン = (度 * 3.14159 / 180)


キーワード
【ラジアン】

円弧と半径の長さが等しくなる位置を1ラジアンとする角度の単位。
コンピュータの世界ではほとんどの場合にラジアンを使用する。


毎回この計算を行うのは面倒なので、次のようなマクロを作成します。

普通の角度からラジアンへ変換するマクロ
#define RADIAN(ARC) ((ARC)*3.14159 / 180)

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

ソースコード
#include <math.h>
#include <stdio.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

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


本サイトについて

苦しんで覚えるC言語(苦C)は
C言語入門サイトの決定版です。
C言語の基本機能を体系立てて解説しており、
市販書籍と同等以上の完成度です。

第0部:プログラム概要編
  1. プログラムとは何か?
2章:プログラムの書き方
  1. 書き方のルール
  2. 書き方の慣習
  3. 練習問題2
3章:画面への表示
  1. 文字列の表示
  2. 改行文字
  3. 練習問題3
6章:キーボードからの入力
  1. 入力用の関数
  2. 入力の恐怖
  3. 練習問題6
9章:回数が決まっている繰り返し
  1. 繰り返しを行う文
  2. ループ動作の仕組み
  3. 練習問題9
10章:回数がわからない繰り返し
  1. 回数不明ループ
  2. 入力チェック
  3. 練習問題10
13章:複数の変数を一括して扱う
  1. 複数の変数をまとめて扱う
  2. 配列の使い方
  3. 練習問題13
20章:複数のソースファイル
  1. 最小限の分割
  2. 分割の定石
  3. 練習問題20

コメント
COMMENT

💬 コメント投稿欄を開く