問題
#include <stdio.h>
#include <math.h>
double toRadian(int degree)
{
return (degree / (180 / M_PI));
}
int main()
{
int a, b, C;
scanf("%d%d%d", &a, &b, &C);
double S, L, h;
S = (double)(a * b * sin(toRadian(C)) / 2);
double c = sqrt(pow(a, 2) - 2*a*b*cos(toRadian(C)) + pow(b, 2));
L = (double)(a + b + c);
h = (double)(2 * S / a);
printf("%lf\n%lf\n%lf\n", S, L, h);
return 0;
}
WAの原因など
- 面積(S)の求め方が分からない
- 高校の参考書を引っ張り出してきて漸く S = (bcsinA)/2 という公式を思い出す
- DegreeToRadianが分からない
- Sの公式の下に 2S = a+b+c というヘロンの公式を発見する
- ヘロンの公式は {a, b, c} ∈ N で成立するらしい
- コーディング前計算で c = √(a2 - 2abcosθ + b2) を導出,実装 ←もっと賢い方法があれば教えてください