程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> nefu 652 Triangle

nefu 652 Triangle

編輯:C++入門知識

題目:給定一個三角形的三個點,然後給出第三個點,判斷這個點是否在三角形內。

方法:求出三角形的面積,然後再求出測試點與三角形中每兩個點組成的三角形的面積,相加之後如果等於個頂的三角形的面積,那麼就是在三角形內,否則則不在。

注意:測試點出現在其中一條邊上也不算在三角形內,去除這種情況的方法就是測試點與其他點構成的三角形的面積不能為0。

代碼:

#include 
#include 
#include 
#include 
using namespace std;

int solve(int a1,int b1,int a2,int b2,int a3,int b3)
{
    int sum=0;
    sum+=a1*b2-a2*b1;
    sum+=a2*b3-a3*b2;
    sum+=a3*b1-a1*b3;
    return abs(sum);
}

int main()
{
   int  x[3],y[3],l,r;
   while(1)
   {
        for(int i=0;i<3;i++)
        cin>>x[i]>>y[i];
        cin>>l>>r;
        if(x[0]==0&&x[1]==0&&x[2]==0&&y[0]==0&&y[1]==0&&y[2]==0&&l==0&&r==0)
            break;
        int s1=solve(x[0],y[0],x[1],y[1],x[2],y[2]);
        int s2=solve(x[0],y[0],x[1],y[1],l,r);
        int s3=solve(x[0],y[0],l,r,x[2],y[2]);
        int s4=solve(l,r,x[1],y[1],x[2],y[2]);
        if(s1==s2+s3+s4&&s2&&s3&&s4) cout<<"YES\n";
        else cout<<"NO\n";
   }
    return 0;
}


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved