C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++で円の弓形(セグメント)の面積を求めるプログラム

このチュートリアルでは、C++を使って円の弓形(セグメント)の面積を求めるプログラムについて解説します。

円の中に弦を一本引くと、円は「優弓形(大きい側の弓形)」と「劣弓形(小さい側の弓形)」という2つの領域に分けられます。ここでは、円の半径と劣弓形に対応する中心角が与えられたとき、両方の弓形の面積を計算する方法を紹介します。

弓形の面積の求め方

弓形の面積は、「扇形の面積から三角形の面積を引く」ことで求められます。具体的には以下の式を使用します。

  • 扇形の面積 = π × 半径2 × (中心角 ÷ 360)
  • 三角形の面積 = (1/2) × 半径2 × sin(中心角)
  • 弓形の面積 = 扇形の面積 − 三角形の面積

なお、C++の sin 関数はラジアンを受け取るため、度で表された角度は「角度 × π ÷ 180」でラジアンに変換してから渡す点に注意してください。

サンプルコード

#include <bits/stdc++.h>
using namespace std;
float pi = 3.14159;
// 弓形の面積を求める
float area_of_segment(float radius, float angle){
    float area_of_sector = pi * (radius * radius)*(angle / 360);
    float area_of_triangle = (float)1 / 2 *(radius * radius) *
       sin((angle * pi) / 180);
    return area_of_sector - area_of_triangle;
}
int main() {
    float radius = 10.0, angle = 90.0;
    cout << "Area of minor segment = "
       << area_of_segment(radius, angle) << endl;
    cout << "Area of major segment = "
       << area_of_segment(radius, (360 - angle));
    return 0;
}

出力結果

Area of minor segment = 28.5397
Area of major segment = 285.619

コードの解説

この例では、半径を10.0、中心角を90.0度として計算しています。

area_of_segment 関数は、まず扇形の面積と三角形の面積をそれぞれ計算し、その差を弓形の面積として返します。劣弓形の面積は中心角90度で直接計算し、優弓形の面積は残りの角度(360 − 90 = 270度)を同じ関数に渡すことで求めています。

このように、中心角さえわかれば同じ関数を使い回すだけで両方の弓形の面積を簡単に求められるのが、このプログラムのポイントです。

  1. C++で平行四辺形の面積を求めるプログラムの作成方法

    この記事では、平行四辺形の底辺と高さを表す2つの値が与えられたとき、C++を使ってその面積を求めるプログラムを作成する方法を解説します。 平行四辺形とは? 平行四辺形とは、4つの辺からなる閉じた図形であり、向かい合う2組の辺がそれぞれ長さが等しく、互いに平行になっている四角形のことです。 問題を理解するための具体例 入力 B = 20, H = 15 出力 300 説明 平行四辺形の面積 = 底辺 × 高さ = 20 × 15 = 300 解決アプローチ この問題を解くには、平行四辺形の面積を求める幾何学の公式を使用します。 面積 = 底辺 × 高さ つまり、与えられた底辺と高さを掛け合わせ

  2. C++で楕円の面積を求めるプログラムの作成方法

    この記事では、C++を使って楕円(だえん)の面積を求める方法を解説します。楕円にはいくつかの重要な構成要素があり、それぞれの意味を理解しておくと計算の仕組みがより明確になります。楕円の主な構成要素要素説明中心楕円の中心点。2つの焦点を結ぶ線分の中点でもあります。長軸楕円における最も長い直径です。短軸楕円における最も短い直径です。弦楕円上の2点を結ぶ線分のことです。焦点楕円を定義する2つの特別な点。図中に示された2点が該当します。通径焦点を通り、長軸に対して垂直な直線(線分)のことです。楕円の面積の公式楕円の面積は、長半径 a と短半径 b を使って次の式で表されます。面積 = π × a ×