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

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

phiskill559
rina394992
katrinasvr
gbnn90
lsuvorova1987
info126
Эрендженова
Mbkozlov6
Baidina
Aleksei
Ушакова1902
Salkinserg
beglovatatiyana
Мария-Кострыгина175
Svetlana ALLA