Другие языки программирования и технологии

Помогите написать программу на СИ++.Определить попадает ли точку в заштрихованную область

x >= 2 && 4 * x + 3 * y <= 23 && 5 * x - 3 * y <= 22
Вилёк Бычинский
Вилёк Бычинский
81 598
Лучший ответ
Сорь, по треугольнику не могу...
Математическая часть - векторное и псевдоскалярное произведения.
Реализация - считаются произведения (1, 2, 3 - вершины треугольника, 0 - точка):
(x1 - x0) * (y2 - y1) - (x2 - x1) * (y1 - y0)
(x2 - x0) * (y3 - y2) - (x3 - x2) * (y2 - y0)
(x3 - x0) * (y1 - y3) - (x1 - x3) * (y3 - y0)
Если они одинакового знака, то точка внутри треугольника, если что-то из этого - ноль, то точка лежит на стороне, иначе точка вне треугольника.

Вот я реализовал код на С++:

#include "stdafx.h" // В Visual Studio требуется данная библиотека, если что удалите
#include < iostream >
using namespace std;

int main()
{
setlocale(LC_ALL, "Russian");

double x;
double y;
double a;
double b;
double c;
const int x1 = 5, y1 = 1;
const int x2 = 2, y2 = -4;
const int x3 = 2, y3 = 5;

cout << "Введите координату x точки: ";
cin >> x;
cout << "Введите координату y точки: ";
cin >> y;

a = (x1 - x)*(y2 - y1) - (x2 - x1)*(y1 - y);
b = (x2 - x)*(y3 - y2) - (x3 - x2)*(y2 - y);
c = (x3 - x)*(y1 - y3) - (x1 - x3)*(y3 - y);

if (a >= 0 && b >= 0 && c >= 0 || a <= 0 && b <= 0 && c <= 0)
{
cout << "Точка принадлежит" << endl;
}
else {
cout << "Точка не принадлежит" << endl;
}

return 0;
}