Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับจำนวนสามเหลี่ยมมุมฉากที่เป็นไปได้ด้วยขอบเขตที่กำหนดใน C++


เราได้เส้นรอบรูป P ของรูปสามเหลี่ยม ปริมณฑลคือผลรวมของทุกด้านของรูปสามเหลี่ยม เป้าหมายคือการหาจำนวนสามเหลี่ยมมุมฉากที่สามารถสร้างได้ซึ่งมีเส้นรอบรูปเท่ากัน

ถ้าด้านของสามเหลี่ยมคือ a,b และ c จากนั้น a + b + c =P และ a2 + b2 =c2 ( ทฤษฎีบทพีทาโกรัสสำหรับการรวมกันของ a, b และ c )

เราจะตรวจสอบสิ่งนี้โดยใช้ a จาก 1 ถึง p/2 และ b จาก a+1 ถึง p/3 จากนั้น c =p-a-b (a+b+c=p)

สำหรับสามเหลี่ยมมุมฉากทั้งหมด ให้ใช้ทฤษฎีบทพีทาโกรัส ค่าของ a, b และ c ควรเป็นไปตามเงื่อนไขของการสร้างสามเหลี่ยมโดยที่ผลรวมของสองด้านใดๆ มากกว่าสามเสมอ

มาทำความเข้าใจกับตัวอย่างกัน

ป้อนข้อมูล − ปริมณฑล P=12

ผลผลิต − จำนวนสามเหลี่ยมมุมฉากทั้งหมด −1

คำอธิบาย

ค่าเดียวของ a, b และ c ที่ตรงตาม a+b+c=P และ a 2 + b 2 =c 2 ( ผลรวมของสอง> สาม ) คือ 4, 3 และ 5

4+3+5=12, 3*3+4*4=5*5 ( 9+16=25 ) ก็ 3+4>5, 4+5>3, 3+5>4

ป้อนข้อมูล − เส้นรอบวง P=10

ผลผลิต − จำนวนสามเหลี่ยมมุมฉากทั้งหมด −0

คำอธิบาย

ไม่มีค่าของ a, b และ c ที่สามารถตอบสนอง a+b+c=P และ a 2 + b 2 =c 2

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้

  • เราใช้ค่าปริมณฑลตัวแปรจำนวนเต็มซึ่งเก็บค่าของปริมณฑลที่กำหนด

  • ฟังก์ชัน rightTriangles(int p) ใช้ปริมณฑลเป็นอินพุตและส่งกลับจำนวนทั้งหมดของสามเหลี่ยมมุมฉากที่เป็นไปได้

  • จำนวนตัวแปรเก็บจำนวนสามเหลี่ยมมุมฉากที่เป็นไปได้ เริ่มแรก 0

  • ใช้สำหรับการวนรอบเริ่มต้นสำหรับ a=1 ถึง p/2

  • ใช้ nested for loop start อีกครั้งสำหรับ b=a+1 ถึง p/3 (สองด้านไม่เคยเท่ากันในรูปสามเหลี่ยมมุมฉาก)

  • คำนวณ c=p-a-b สำหรับสิ่งนี้ a,b,c ตรวจสอบว่า (a+b>c &&b+c>a &&a+c>b)

  • ตรวจสอบทฤษฎีบทพีทาโกรัสด้วย โดยที่ a*a+b*b==c*c ถ้านับเพิ่มจริง

  • เมื่อสิ้นสุดการนับกลับมีจำนวนสามเหลี่ยมมุมฉากที่เป็นไปได้ในขอบเขตที่กำหนด

  • ผลตอบแทนนับตามผลลัพธ์ที่ต้องการ

หมายเหตุ − เราจะตรวจสอบทฤษฎีบทพีทาโกรัสสำหรับชุดค่าผสม a,b และ c เพียงชุดเดียวเพื่อให้ได้ผลลัพธ์ที่ไม่เหมือนใคร

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
int rightTriangles(int p){
   int count = 0;
   int c=0;
   for( int a=1;a<p/2;a++){
      for(int b=1;b<p/3;b++){
         c=p-a-b;
         if( a+b>c && b+c>a && a+c>b) //condition for triangle{
            if( (a*a+b*b)==c*c ) //pythagoras rule for right triangles
               { ++count; }
         }
      }
   }
   return count;
}
int main(){
   int perimeter= 12;
   cout << "Total number of right triangles that can be formed: "<<rightTriangles(perimeter);
   return 0;
}

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -

Total number of right triangles that can be formed: 1