math.hライブラリを使ってコサイン値とサイン値を求めるC言語プログラム
問題概要
0から150までの角度を10刻みで変化させながら、それぞれの角度に対応するコサイン値(cos)とサイン値(sin)を求めて表示するプログラムを作成します。
解決の考え方
C言語では、標準ヘッダーファイル math.h をインクルードすることで、cos() や sin() といった三角関数を利用できます。これらの関数は引数としてラジアンを受け取るため、角度をラジアンに変換してから渡す必要があります。
本プログラムでは、あらかじめ #define によって円周率 PI と最大角度 MAX を定義しておき、次の式でラジアン値を計算します。
x = (PI / MAX) * angle;
コサイン値を求めるためのループ処理は以下の通りです。
while(angle <= MAX){
x = (PI/MAX)*angle;
y = cos(x);
printf("%15d %13.4f\n", angle, y);
angle = angle + 10;
}サイン値を求める場合も、cos(x) を sin(x) に置き換えるだけで、まったく同じ構造のプログラムが使えます。
コサイン値を求めるCプログラム
以下は、コサイン値を求めるC言語プログラムの完全なソースコードです。
//cosine values
#include<stdio.h>
#include <math.h>
#define PI 3.1416
#define MAX 150
main ( ) {
int angle;
float x,y;
angle = 0;
printf("Angle cos(angle)\n\n");
while(angle <= MAX) {
x = (PI/MAX)*angle;
y = cos(x);
printf("%15d %13.4f\n", angle, y);
angle = angle + 10;
}
}
実行結果
上記のプログラムをコンパイルして実行すると、次のような出力が得られます。
Angle cos(angle)
0 1.0000
10 0.9781
20 0.9135
30 0.8090
40 0.6691
50 0.5000
60 0.3090
70 0.1045
80 -0.1045
90 -0.3090
100 -0.5000
110 -0.6691
120 -0.8090
130 -0.9135
140 -0.9781
150 -1.0000
サイン値を求めるCプログラム
続いて、サイン値を求めるC言語プログラムです。
//sine values
#include<stdio.h>
#include <math.h>
#define PI 3.1416
#define MAX 150
main ( ){
int angle;
float x,y;
angle = 0;
printf("Angle sin(angle)\n\n");
while(angle <= MAX){
x = (PI/MAX)*angle;
y = sin(x);
printf("%15d %13.4f\n", angle, y);
angle = angle + 10;
}
}
実行結果
このプログラムを実行すると、次の出力が得られます。
Angle sin(angle)
0 0.0000
10 0.2079
20 0.4067
30 0.5878
40 0.7431
50 0.8660
60 0.9511
70 0.9945
80 0.9945
90 0.9511
100 0.8660
110 0.7431
120 0.5878
130 0.4067
140 0.2079
150 -0.0000
プログラムのポイント
math.hをインクルードすると、sin()・cos()などの数学関数がすぐに利用できるようになります。- 三角関数の引数はラジアン単位であるため、角度をそのまま渡さず、
(PI/MAX)*angleのように変換してから渡すのが重要です。 #defineで PI や MAX を定数として定義しておくと、後から値を変更しやすくなり、プログラムの可読性・保守性が向上します。%15d %13.4fのような書式指定子を使うことで、角度と計算結果がきれいに整列した見やすい表形式で出力されます。
-
Pythonで二分木の指定ノードの右隣ノードを見つけるプログラム
二分木が与えられ、さらに特定のノード「u」へのポインタも渡されたとします。このとき、u のすぐ右側に位置するノード(必ず同じ階層に存在する)を見つける必要があります。対象のノードは葉ノードの場合もあれば、内部ノードの場合もあります。 例として、次のような二分木が入力されたとしましょう。 ここで u = 6 とすると、出力は 8 になります。ノード 6 の右隣にはノード 8 が存在するため、値 8 が返されるというわけです。 解決のためのアプローチ この問題は、両端キュー(deque)を使った幅優先探索(BFS)、いわゆるレベル順走査によって解くことができます。手順は以下の通りです。 ルー
-
【Windows】CPU使用率100%の原因プログラムを見つけて解決する方法
パソコンの動作が遅くなる原因は実にさまざまです。メモリ(RAM)が不足している、パソコンが古すぎて実行したいプログラムのスペック要件を満たしていない、あるいはアプリやWindowsのプロセスがCPUリソースを食いつぶしている――そんな可能性が考えられます。この記事では、どのプログラムがPCのCPUを占有しているのかを特定し、問題を解決するための手順をわかりやすく解説します。 なぜ一部のプログラムはCPUを100%まで使い切るのか? まず前提として、スペックが低めのパソコンや古いマシンでは、システムリソースを大量に必要とするプログラムを実行した際にCPU使用率が100%に達するのは、ごくよくあ