[C_MM159-易] 給定三邊長求三角形面積
Problem Description
小明想利用三線段做出一個三角形,並且計算出這個三角形的面積出來,因為圍出來的三角形不一定知道它的高是多少,因此可使用 「海龍公式」來求得面積。
海龍公式是假設三邊長的和為 s ,面積 S 可用下面公式表示:
Input File Format
Input 資料為給定的三邊長,資料型態為浮點數 。
Output Format
先判斷此三邊長能否形成三角形,若可以再利用海龍公式算面積;如果不行,則 output 不能成為三角形 。
Example
小明想利用三線段做出一個三角形,並且計算出這個三角形的面積出來,因為圍出來的三角形不一定知道它的高是多少,因此可使用 「海龍公式」來求得面積。
海龍公式是假設三邊長的和為 s ,面積 S 可用下面公式表示:
Input File Format
Input 資料為給定的三邊長,資料型態為浮點數 。
Output Format
先判斷此三邊長能否形成三角形,若可以再利用海龍公式算面積;如果不行,則 output 不能成為三角形 。
Example
Sample Input: | Sample Output: |
3 4 5 | 6.000000 |
5 5 6 | 12.000000 |
11 12 13 | 61.481705 |
4.5 5.2 8 | 10.928791 |
1 10 11 | no answer |
- #include <iostream>
- #include <cmath>
- #include <iomanip>
- using namespace std;
- double area(double, double, double);
- int main() {
- // [C_MM159-易] 給定三邊長求三角形面積
- double x, y, z;
- cin >> x >> y >> z;
- if(area(x, y, z) > 0)
- {
- cout << fixed << setprecision(6) << area(x, y, z) << endl;
- }
- else
- {
- cout << "no answer" << endl;
- }
- return 0;
- }
- double area(double a, double b, double c){
- if(a+b>c && a+c>b && b+c>a)
- {
- double s = (a+b+c)/2;
- double S = sqrt(s*(s-a)*(s-b)*(s-c));
- return S;
- }
- else
- {
- return -1;
- }
- }
沒有留言:
張貼留言