М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
donamigo2012
donamigo2012
19.05.2022 23:11 •  Информатика

Напишите алгоритм решения на языке с ++ принадлежит ли заданая точка внутренней области треугольника . входные данные x1 y1 x2 y2 x3 y3 - координаты вершин треугольника x0 y0 - координаты данной точки исходные данные ответ " yes " или "no " .

👇
Ответ:
В основу решения возьму тот факт, что точка лежит внутри треугольника только в том случае, если сумма площадей трех образованных этой точкой и вершинами треугольников треугольников равна площади самого треугольника. Для нахождения площади треугольников использую формулу векторного произведения, деленного пополам.

#include <stdio.h>
#include <stdlib.h>

using namespace std;

int main() {
  int x1, y1, x2, y2, x3, y3, x0, y0;
  scanf("%d%d%d%d%d%d%d%d", &x1, &y1, &x2, &y2, &x3, &y3, &x0, &y0);
  if (abs((x1 - x0) * (y2 - y0) - (x2 - x0) * (y1 - y0)) +
      abs((x1 - x3) * (y0 - y3) - (x0 - x3) * (y1 - y3)) +
      abs((x0 - x3) * (y2 - y3) - (x2 - x3) * (y0 - y3)) ==
      abs((x1 - x3) * (y2 - y3) - (x2 - x3) * (y1 - y3)))
  {
    printf("YES");
  } else {
    printf("NO");
  }
  return 0;
}
4,5(88 оценок)
Открыть все ответы
Ответ:
// PascalABC.NET 3.2, сборка 1399 от 08.03.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var a:=ArrRandom(100,-1000,1000); a.Println;
  var imax:=a.IndexMax;
  var imin:=a.IndexMin;
  Writeln('Индекс минимального ',imin+1,', максимального ',imax+1);
  if imin>imax then Swap(imin,imax);
  Writeln('Сумма на участке: ',a[imin:imax+1].Sum)
end.

Пример
-65 273 -273 58 108 919 -114 -119 -848 -24 301 -497 348 -386 -235 421 -907 -891 -151 675 -185 89 -991 -276 -802 914 959 -64 848 911 573 -941 59 -522 -460 890 963 840 85 -932 -974 -110 -698 785 537 867 778 -889 239 -659 -972 655 665 -136 555 847 263 -998 -141 194 961 950 34 -758 403 242 444 -130 -927 -124 459 -747 25 -220 649 925 -214 -775 188 -668 -865 847 698 506 882 919 -606 -806 -76 -306 -374 960 -19 891 -892 -923 857 -940 -619 -706
Индекс минимального 58, максимального 37
Сумма на участке: 1711
4,7(92 оценок)
Ответ:
Школянка
Школянка
19.05.2022
//Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23506 for x64

#include <vector>
#include <array>
#include <iostream>
#include <algorithm>
#include <utility>
#include <random>
#include <iterator>
using namespace std;

int main()
{
    mt19937 gen{ random_device()() };
    uniform_int_distribution<> uid(1, 100);
    vector<vector<int>> v2d(3, vector<int>(3));
    int max_i;
    for_each(v2d.begin(), v2d.end(), [&max_i, &uid, &gen](vector<int>& v) {
            generate(v.begin(), v.end(), [&uid, &gen]() { return uid(gen); });
            max_i = max(*max_element(v.begin(), v.end()), max_i);
        });
    cout << endl;
    v2d.erase(remove_if(v2d.begin(), v2d.end(), [&max_i](vector<int>& v) {
        return find(v.begin(), v.end(), max_i) != v.end();
    }), v2d.end());
    for (const auto& i : v2d)
    {
        copy(i.begin(), i.end(), ostream_iterator<int>(cout, " "));
        cout << endl;
    }
}
4,4(51 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ