int polySides = 4;
float polyX[] = {4,4,15,15};
float polyY[] = {4,20,20,4};
#include <iostream>
using namespace std;
int main(){
bool pointInPolygon(int,int) ;
for(int x=4;x<15;x++){
for(int y=4;y<20;y++){
cout<<pointInPolygon(x,y) ;
}
}
} // End of Main()
bool pointInPolygon(int x,int y) {
int i, j=polySides-1 ;
bool oddNodes=false ;
for (i=0; i<polySides; i++) {
if (polyY[i]<y && polyY[j]>=y || polyY[j]<y && polyY[i]>=y) {
if (polyX[i]+(y-polyY[i])/(polyY[j]-polyY[i])*(polyX[j]-polyX[i])<x) {
oddNodes=!oddNodes; }
}
j=i; }
return oddNodes;
}
aW50IHBvbHlTaWRlcyAgPSA0OwpmbG9hdCBwb2x5WFtdICAgID0gIHs0LDQsMTUsMTV9OwpmbG9hdCBwb2x5WVtdICAgID0gIHs0LDIwLDIwLDR9OwoKI2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKXsKYm9vbCBwb2ludEluUG9seWdvbihpbnQsaW50KSA7Cgpmb3IoaW50IHg9NDt4PDE1O3grKyl7CmZvcihpbnQgeT00O3k8MjA7eSsrKXsKY291dDw8cG9pbnRJblBvbHlnb24oeCx5KSA7CiAgfQogfQp9IC8vIEVuZCBvZiBNYWluKCkKCgoKCmJvb2wgcG9pbnRJblBvbHlnb24oaW50IHgsaW50IHkpIHsKICBpbnQgaSwgaj1wb2x5U2lkZXMtMSA7CmJvb2wgb2RkTm9kZXM9ZmFsc2UgICAgIDsKCmZvciAoaT0wOyBpPHBvbHlTaWRlczsgaSsrKSB7CmlmIChwb2x5WVtpXTx5ICYmIHBvbHlZW2pdPj15IHx8ICBwb2x5WVtqXTx5ICYmIHBvbHlZW2ldPj15KSB7CmlmIChwb2x5WFtpXSsoeS1wb2x5WVtpXSkvKHBvbHlZW2pdLXBvbHlZW2ldKSoocG9seVhbal0tcG9seVhbaV0pPHgpIHsKICAgb2RkTm9kZXM9IW9kZE5vZGVzOyB9CiB9Cmo9aTsgfQoKIHJldHVybiBvZGROb2RlczsgCiB9IA==