C++プログラムで長方形に内接できる最大のひし形の面積を求める方法
はじめに
本記事では、与えられた長方形の中に内接できる最大のひし形の面積を求める問題を解説します。下図のように、最大のひし形は長方形の各辺の中点を頂点として内接します。

ひし形の面積の求め方
長方形の長さを「l」、幅(breadth)を「b」とします。長方形に内接する最大のひし形では、その2本の対角線がそれぞれ長方形の長さ l と幅 b と一致します。
ひし形の面積は対角線 d1、d2 を使って次の式で表せます。
面積 = (d1 × d2) / 2 = (l × b) / 2
これは、内接するひし形が4つの直角三角形に分割され、その合計が元の長方形の面積のちょうど半分になるためです。したがって、複雑な幾何学的な計算を行わなくても、単純な式だけで答えを求められます。
サンプルコード
#include <iostream>
#include <cmath>
using namespace std;
float area(float l, float b) {
if (l < 0 || b < 0) // 負の値が入力された場合は無効とする
return -1;
float area = (l * b) / 2;
return area;
}
int main() {
float l = 20.0, b = 7;
cout << "Area : " << area(l, b);
}実行結果
Area : 70
コードの解説
このプログラムでは、area() 関数がひし形の面積の計算を担当しています。まず、引数として受け取った長さ l と幅 b のいずれかが負の値であるかどうかをチェックし、無効な入力の場合は -1 を返してエラーを通知します。
入力が有効であれば、公式 (l × b) / 2 を適用して面積を算出します。この例では、長さ 20.0、幅 7 の長方形を与えているため、(20 × 7) / 2 = 70 が出力されます。
このように、内接する最大のひし形の面積は常に元の長方形の面積の半分となるため、O(1) の定数時間で簡単に計算できます。
-
正方形に内接する円の面積を求めるC言語プログラム
正方形に内接する円とは、正方形の四つの辺すべてに接する円のことです。このとき、内接円の直径は正方形の一辺の長さと等しくなります。内接円の面積は、次の公式で計算できます。面積 = (π / 4) × a × aここで「a」は正方形の一辺の長さです。これは、内接円の半径が「a / 2」になるため、一般的な円の面積の公式「π × r2」に代入すると「π × (a/2)2 = (π/4) × a2」となることに基づいています。プログラムのロジック内接円の面積は、公式「((π / 4) × a × a)」を用いて計算します。そのために、数学的に 22/7 すなわち 3.14 とされる円周率(π)の値をあ
-
C++で楕円に内接する最大の正方形の面積を求める方法
この記事では、楕円に内接できる最大の正方形の面積を求める方法について解説します。楕円の中に正方形を内接させたときの位置関係は、下の図のようになります。 まず、長半径 a・短半径 b をもつ楕円の方程式は次のとおりです。 x² / a² + y² / b² = 1 ここで、内接する正方形の頂点の座標を (±x, ±y) とおきます。図形が正方形になるためには x と y が等しくなる必要があるため、x = y を上記の楕円の方程式に代入します。 これを整理すると、楕円に内接する最大の正方形の面積は、次の式で求められることになります。 面積 = 4 × (a² + b²) ÷ (a² × b²)