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

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

reznikvi
stolle16
Bulanova
slspam
Konchenko1980
Klyucharyova
MonashevFesenko1483
BelyaevNadezhda223
missmorozova2
SaraevaTretyakov1941
Елена_Кошевой
Анна1417
foto5113161
Чечин-Павлова615
Сурат1199