2本の直線の挟み角

6990 ワード

c++プログラムを記述し、4つの点からなる2つの直線の挟み角setprecision(n)記述を計算する:出力ストリームが浮動小数点数を表示するデジタル個数を制御することができる.C++デフォルトの出力ストリーム数値有効ビットは6です.平面上に与えられた4点の座標A B C Dは、それぞれ直線ABとCDを表す.座標は、絶対値が100を超えない整数です.この2本の直線の鋭角が何度なのかを計算します.(小数点を2桁保持)注意:2つの直線が平行または重なり合うと、答えは0になります.試験例:試験入力:0 0 1 0 0 0 0 0 1予想出力:90.00試験入力:16 34 21 87 98 23 9予想出力:75.36
#include
#include
#include
#define pi 3.1415926;
using namespace std;
int main()
{    
    double x1,y1,x2,y2,x3,y3,x4,y4;
    long double x,y;
    cin>>x1>>y1>>x2>>y2>>x3>>y3>>x4>>y4;
    x=(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);
    y=(x3-x4)*(x3-x4)+(y3-y4)*(y3-y4);
    long double s1,s2;
    s1=sqrt(x);
    s2=sqrt(y);
    long double s3;
    s3=(x2-x1)*(x4-x3)+(y2-y1)*(y4-y3);
    long double s4;
    s4=abs(s3);
    long double ans,ans2;
    ans2=s4/(s1*s2);
    ans=acos(ans2);
    long  double ans3;
    ans3=(180*ans)/pi;
    cout<<fixed<<setprecision(2)<<(long double)ans3;
    return 0;
}