vladimir686
?>

Заданы координаты вершин треугольника и точки. определить, лежит ли точка внутри треугольника. написать программу в c++ или хотя бы формулу, по которой высчитывать это. за внимание

Информатика

Ответы

Шапкина1531
Если точка лежит внутри треугольника, то сумма площадей образованных ей треугольников равна площади данного треугольника.
x1, y1, x2, y2, x3, y3 - координаты точек треугольника, x, y - координаты точки.
Найдем векторное произведение, которое равно удвоенной площади треугольника.
Исходный код: 
#include <iostream>
using namespace std;
int main() {
  int x1, y1, x2, y2, x3, y3, x, y;
  cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3 >> x >> y;
  if (abs((x1 - x) * (y2 - y) - (x2 - x) * (y1 - y)) +
     abs((x1 - x3) * (y - y3) - (x - x3) * (y1 - y3)) +
     abs((x - x3) * (y2 - y3) - (x2 - x3) * (y - y3)) ==
     abs((x1 - x3) * (y2 - y3) - (x2 - x3) * (y1 - y3)))
    {
      cout << "In";
    } else {
      cout << "Out";
    }
    return 0;
}
kuharhuks

відповідь:

решение логических выражений принято записывать в виде таблиц истинности – таблиц, в которых по действиям показано, какие значения принимает логическое выражение при всех возможных наборах его переменных.

при составлении таблицы истинности для логического выражения необходимо учитывать порядок выполнения логических операций, а именно:

действия в скобках,

инверсия (отрицание),

& (конъюнкция),

v (дизъюнкция),

=> (импликация),

< => (эквивалентность).

алгоритм составления таблицы истинности:

  1. выяснить количество строк в таблице (вычисляется как 2n, где n – количество переменных + строка заголовков столбцов).

  2. выяснить количество столбцов (вычисляется как количество переменных + количество логических операций).

  3. установить последовательность выполнения логических операций.

  4. построить таблицу, указывая названия столбцов и возможные наборы значений исходных логических переменных.

  5. заполнить таблицу истинности по столбцам.

  6. записать ответ.

 

пример 6

построим таблицу истинности для выражения f=(avb)& (¬av¬b).

1. количество строк=22 (2 переменных+строка заголовков столбцов)=5.

2. количество столбцов=2 логические переменные (а, в)+ 5 логических операций (v,& ,¬,v,¬) = 7.

jurys71242

N = int(input())

if N == 1:

   exit(0)

 

bacteria = [0] * N

for i in range(0, N):

   bacteria[i] = int(input())

 

prefix_sum = [bacteria[0]] * N

for i in range(1, N):

   prefix_sum[i] = prefix_sum[i - 1] + bacteria[i]

ans = [0] * N

if bacteria[N-1] > bacteria[0]:

   ans[N - 1] = 1

for i in reversed(range(2, N)):

   if ans[i] == 1:

       prev = i - 1

       if prefix_sum[prev] > bacteria[i] and bacteria[0] < bacteria[prev]:

           ans[prev] = 1

for i in range(N):

   print(ans[i])

Объяснение:

g++-GNU C++ 8.3.1

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Заданы координаты вершин треугольника и точки. определить, лежит ли точка внутри треугольника. написать программу в c++ или хотя бы формулу, по которой высчитывать это. за внимание
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

Nadezhdachizhikova7968
Голосова-Лобанов1555
yugraspets
Надья-Олеговна
olimov9
xarchopuri22
marychev55
ekaterinkat
evgeniishulov4696
char40
kchapurina591
natakrechko
yaudo47
saint158
Grishanin