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

【C言語】三角形が正三角形・二等辺三角形・不等辺三角形のどれかを判定するプログラムの作り方

三角形は3つの辺と3つの角で構成されます。3つの辺の長さに着目すると、三角形は次の3種類に分類できます。

  • 正三角形(equilateral triangle):3つの辺がすべて等しい
  • 二等辺三角形(isosceles triangle):2つの辺が等しい
  • 不等辺三角形(scalene triangle):等しい辺がひとつもない

本記事では、ユーザーが入力した3辺の値をもとに、三角形が正三角形・二等辺三角形・不等辺三角形のいずれであるかを判定するC言語プログラムを紹介します。まずは処理の流れとなるアルゴリズムから確認していきましょう。

アルゴリズム

Step 1: 三角形の3辺を表す変数を宣言する。
Step 2: 実行時に3辺の値を入力する。
Step 3: side1 == side2 && side2 == side3 が成立する場合 → Step 6 へ進む
Step 4: side1 == side2 || side2 == side3 || side3 == side1 が成立する場合 → Step 7 へ進む
Step 5: 上記のいずれにも当てはまらない場合 → Step 8 へ進む
Step 6: 「正三角形」であることを出力する。
Step 7: 「二等辺三角形」であることを出力する。
Step 8: 「不等辺三角形」であることを出力する。

C言語プログラム

以下は、入力された三角形が正三角形か二等辺三角形か不等辺三角形かを判定するCプログラムです。

#include<stdio.h>
int main(){
   int side1, side2, side3;
   printf("Enter sides of triangle:");
   scanf("%d%d%d",&side1,&side2,&side3);
   if(side1 == side2 && side2 == side3)
      printf("The Given Triangle is equilateral\n");
   else if(side1 == side2 || side2 == side3 || side3 == side1)
      printf("The given Triangle is isosceles\n");
   else
      printf("The given Triangle is scalene\n");
   return 0;
}

このプログラムのポイントは、if文で条件をチェックする順序です。最初に「3辺すべてが等しい(正三角形)」という最も厳しい条件を判定し、次に「2辺が等しい(二等辺三角形)」という条件を判定しています。もし順序を逆にしてしまうと、正三角形が先に二等辺三角形として判定されてしまうため注意が必要です。

実行結果

上記のプログラムをコンパイルして実行すると、次のような結果が得られます。

Run1:
Enter sides of triangle:3 4 6
The given Triangle is scalene
Run2:
Enter sides of triangle:2 2 5
The given Triangle is isosceles
Run3:
Enter sides of triangle:5 5 5
The Given Triangle is equilateral

実行結果を見ると、入力された値によって判定メッセージが切り替わっていることがわかります。3 4 6 のようにすべての辺が異なる場合は「不等辺三角形(scalene)」、2 2 5 のように2辺だけが等しい場合は「二等辺三角形(isosceles)」、5 5 5 のように3辺すべてが等しい場合は「正三角形(equilateral)」と表示されます。

  1. C/C++プログラムで正三角形に内接する円の面積を求める方法

    正三角形に内接する円の面積とは本記事では、一辺の長さが「a」である正三角形に内接する円の面積を、C++プログラムを使って求める方法を解説します。まず、正三角形の面積は次の式で表されます。正三角形の面積 = (√3 / 4) × a²次に、三角形の半周長(周囲の長さの半分)は以下の通りです。半周長 = 3a / 2内接円の半径 r は「三角形の面積 ÷ 半周長」で求められます。これを整理すると、次のようなシンプルな式になります。r = a / (2√3)したがって、内接する円の面積は以下の式で計算できます。円の面積 = π × r² = π × (a / (2√3))²サンプルコード#inclu

  2. C++で正三角形に内接する異なる長方形の数を求める方法

    問題概要一辺の長さが与えられた正三角形を考えます。この記事の目的は、水平な2辺が底辺と平行になるように三角形の内部へ配置できる「異なる長方形」の総数を数えることです。ただし、長方形の4つの頂点はすべて、図に示された点(格子点)に一致していなければなりません。入出力例入力 − sides=3出力 − 正三角形に内接する異なる長方形の数:1説明 − 上の図は条件を満たす長方形を示しています。入力 − sides=10出力 − 正三角形に内接する異なる長方形の数:200アルゴリズムの考え方図から分かるように、長方形の水平な辺は、一段おきのレベルにある点同士を結ぶ形になります。そのため、点の数はレベル