Language: C++

struct Vec2 {
  double x, y;
  Vec2(double x_, double y_) : x(x_), y(y_) {}
};

bool in_the_triangle(const Vec2& a, const Vec2& b, const Vec2& c, const Vec2& p) {
  Vec2 aa(a.x-p.x, a.y-p.y);
  Vec2 bb(b.x-p.x, b.y-p.y);
  Vec2 cc(c.x-p.x, c.y-p.y);
  double k = aa.x*bb.y - bb.x*aa.y;
  double l = bb.x*cc.y - cc.x*bb.y;
  double m = cc.x*aa.y - aa.x*cc.y;
  return (k * l > 0 && k * m > 0);
}

int main() {
Vec2 a,b,c,p;
while (scanf("%f%f%f%f%f%f%f%f",&a.x,&a.y,&b.x,&b.y,&c.x,&c.y,&p.x,&p.y)) {
  puts(in_the_triangle(a,b,c,p) ? "YES" : "NO");
}
return 0;
}

Compiler output:
a.cc: In function 'int main()':
a.cc:17:6: error: no matching function for call to 'Vec2::Vec2()'
   17 | Vec2 a,b,c,p;
      |      ^
a.cc:3:3: note: candidate: 'Vec2::Vec2(double, double)'
    3 |   Vec2(double x_, double y_) : x(x_), y(y_) {}
      |   ^~~~
a.cc:3:3: note:   candidate expects 2 arguments, 0 provided
a.cc:1:8: note: candidate: 'constexpr Vec2::Vec2(const Vec2&)'
    1 | struct Vec2 {
      |        ^~~~
a.cc:1:8: note:   candidate expects 1 argument, 0 provided
a.cc:1:8: note: candidate: 'constexpr Vec2::Vec2(Vec2&&)'
a.cc:1:8: note:   candidate expects 1 argument, 0 provided
a.cc:17:8: error: no matching function for call to 'Vec2::Vec2()'
   17 | Vec2 a,b,c,p;
      |        ^
a.cc:3:3: note: candidate: 'Vec2::Vec2(double, double)'
    3 |   Vec2(double x_, double y_) : x(x_), y(y_) {}
      |   ^~~~
a.cc:3:3: note:   candidate expects 2 arguments, 0 provided
a.cc:1:8: note: candidate: 'constexpr Vec2::Vec2(const Vec2&)'
    1 | struct Vec2 {
      |        ^~~~
a.cc:1:8: note:   candidate expects 1 argument, 0 provided
a.cc:1:8: note: candidate: 'constexpr Vec2::Vec2(Vec2&&)'
a.cc:1:8: note:   candidate expects 1 argument, 0 provided
a.cc:17:10: error: no matching function for call to 'Vec2::Vec2()'
   17 | Vec2 a,b,c,p;
      |          ^
a.cc:3:3: note: candidate: 'Vec2::Vec2(double, double)'
    3 |   Vec2(double x_, double y_) : x(x_), y(y_) {}
      |   ^~~~
a.cc:3:3: note:   candidate expects 2 arguments, 0 provided
a.cc:1:8: note: candidate: 'constexpr Vec2::Vec2(const Vec2&)'
    1 | struct Vec2 {
      |        ^~~~
a.cc:1:8: note:   candidate expects 1 argument, 0 provided
a.cc:1:8: note: candidate: 'constexpr Vec2::Vec2(Vec2&&)'
a.cc:1:8: note:   candidate expects 1 argument, 0 provided
a.cc:17:12: error: no matching function for call to 'Vec2::Vec2()'
   17 | Vec2 a,b,c,p;
      |            ^
a.cc:3:3: note: candidate: 'Vec2::Vec2(double, double)'
    3 |   Vec2(double x_, double y_) : x(x_), y(y_) {}
      |   ^~~~
a.cc:3:3: note:   candidate expects 2 arguments, 0 provided
a.cc:1:8: note: candidate: 'constexpr Vec2::Vec2(const Vec2&)'
    1 | struct Vec2 {
      |        ^~~~
a.cc:1:8: note:   candidate expects 1 argument, 0 provided
a.cc:1:8: note: candidate: 'constexpr Vec2::Vec2(Vec2&&)'
a.cc:1:8: note:   candidate expects 1 argument, 0 provided
a.cc:18:8: error: 'scanf' was not declared in this scope
   18 | while (scanf("%f%f%f%f%f%f%f%f",&a.x,&a.y,&b.x,&b.y,&c.x,&c.y,&p.x,&p.y)) {
      |        ^~~~~
a.cc:19:3: error: 'puts' was not declared in this scope
   19 |   puts(in_the_triangle(a,b,c,p) ? "YES" : "NO");
      |   ^~~~