Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm hai cạnh khác và các góc của một tam giác vuông trong C ++

Trong bài toán này, chúng ta được cung cấp một số nguyên biểu thị một cạnh của hình tam giác vuông. Ta cần kiểm tra xem có thể tồn tại một tam giác vuông có cạnh a hay không. Nếu có thể, hãy tìm hai cạnh còn lại và góc của một tam giác vuông.

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào

a = 5

Đầu ra

Sides : 5, 12, 13
Angles : 67.38, 22.62, 90

Giải thích

Các cạnh của góc vuông được tìm thấy là 5 2 + 12 2 =13 2 Và sử dụng các mặt này, chúng ta có thể tìm thấy các góc là Sin -1 (5/13) và 90 - Sin -1 (13/5).

Phương pháp tiếp cận giải pháp

Một giải pháp đơn giản cho vấn đề là sử dụng định lý pythagoras. Chúng ta biết rằng các cạnh của một tam giác vuông tuân theo định lý pythagoras, đó là

a2 + b2 = c2

Trong đó a và b là các cạnh của tam giác và c là cạnh huyền của tam giác.

Sử dụng điều này, chúng tôi sẽ tính toán các giá trị của b và c bằng cách sử dụng a.

Trường hợp 1 - Nếu a là chẵn,

c = (a2 + 4) + 1
b = (a2 + 4) - 1

Trường hợp 2 - Nếu a là số lẻ,

c = (a2 + 1)/ 2
c = (a2 - 1)/ 2

Để tìm góc, chúng ta cần tìm các cạnh của tam giác và sử dụng các giá trị này để tìm giá trị cos.

cos(A) = b2 + c2 - a2 / 2bc
cos(B) = a2 + c2 - b2 / 2ac
cos(C) = a2 + b2 - c2 / 2ab

Chương trình minh họa hoạt động của giải pháp của chúng tôi,

Ví dụ

#include <bits/stdc++.h>
#include <cmath>
using namespace std;
#define PI 3.1415926535
void printAngles(int a, int b, int c) {
   double x = (double)a;
   double y = (double)b;
   double z = (double)c;
   double A = (((double)(acos(( (y*y) + (z*z) - (x*x) ) / (2*y*z))))* 180 / PI);
   double B = ((double)(acos(( (x*x) + (z*z) - (y*y) ) / (2*x*z)))* 180 / PI);
   cout<<"Angles: A = "<<A<<", B = "<<B<<", C = 90";
}
void printOtherSides(int n) {
   int b,c;
   if (n & 1) {
      if (n == 1)
         cout << -1 << endl;
      else{
         b = (n*n-1)/2;
         c = (n*n+1)/2;
      }
   } else {
      if (n == 2)
         cout << -1 << endl;
      else {
         b = n*n/4-1;
         c = n*n/4+1;
      }
   }
   cout<<"Sides : a = "<<n<<", b = "<<b<<", c = "<<c<<endl;
   printAngles(n,b,c);
}
int main() {
   int a = 5;
   printOtherSides(a);
   return 0;
}

Đầu ra

Sides : a = 5, b = 12, c = 13
Angles: A = 22.6199, B = 67.3801, C = 90