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

x >= 2 && 4 * x + 3 * y <= 23 && 5 * x - 3 * y <= 22
Сорь, по треугольнику не могу...
Математическая часть - векторное и псевдоскалярное произведения.
Реализация - считаются произведения (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;
}
Реализация - считаются произведения (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;
}
Похожие вопросы
- Помогите написать программу на Си
- помогите написать программу на Си
- помогите написать программу на Си
- помогите написать программу на си
- Помогите написать программу в СИ. буду очень благодарин
- помогите написать программу в Си
- Помогите написать программу на Си.
- Помогите написать программу на Си с помощью ФУНКЦИЙ.
- <<ПОМОГИТЕ! НАПИСАТЬ ПРОГРАММУ НА СИ ИЛИ ПАСКАЛЕ КОТОРАЯ ВЫВОДИТЬ СУММУ ЦИФР ЧИСЛА ОТ 1 ДО N
- Помогите написать программу со switch в СИ