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*
Комментарий*

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

ivanrancev
e9rebrova
svetavancevich
Nataliatkachenko1
uzunanna19922488
vladai2
Shishkinna2002
KonovalovKonstantinovna1306
YelenaZOLTANOVICh105
Stroeva19651938
Дубровская571
edvard-b
Kubataeva Nikolaevich1389
ivanrancev
kirycha-2000719