Форум программистов, компьютерный форум CyberForum.ru

Принадлежит ли начало треугольника координатам - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Переставить столбцы в соответствии с возрастанием среднего арифметического по столбцам http://www.cyberforum.ru/cpp-beginners/thread733079.html
Необходимо выполнить следующее: Дана матрица С. Переставить столбцы в соответствии с возрастанием среднего арифметического по столбцам.
C++ Считывание текста из файла и вывод на экран Написать программу, которая считывает текст из файла и выводит на экран только предложения, содержащие введенное с клавиатуры слово. http://www.cyberforum.ru/cpp-beginners/thread733078.html
C++ Определить количество столбцов, не содержащих ни одного нулевого элемента
Дана целочисленная прямоугольная матрица. Определить количество столбцов, не содержащих ни одного нулевого элемента. Характеристикой строки целочисленной матрицы назовем сумму ее положи* тельных четных элементов. Переставляя строки заданной матрицы, расположить их в соответствии с ростом характеристик. Пожалуста помогите написать код программы
В одномерном массиве, состоящем из п вещественных элементов, вычислить: C++
В одномерном массиве, состоящем из п вещественных элементов, вычислить: • сумму положительных элементов массива; • произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами. Упорядочить элементы массива по убыванию. Помогите пожалуста напишите код программы
C++ Расщепление полного пути к файлу на диск, директорий...(неясность в задании) http://www.cyberforum.ru/cpp-beginners/thread733065.html
Доброго времени суток! Не ожидал от препода излишней адекватности,но сейчас я в ступоре... вот текст задания: " Написать функцию pathsplit( char *path, char *split) для расщепления полного пути к файлу на диск, директорий, имя и расширение, которые разместить в динамической памяти ( malloc ), а указатели на них поместить в массив указателей.". Каким образом из функции можно...
C++ Потокозащищённые классы и их интерфейс Доброе время суток, уважаемые форумчане! Насколько я понимаю, если мы говорим, что класс потокозащищён, мы подразумеваем что: 1. В приватной зоне класса есть мьютекс 2. Все интерфейсные функции класса при вызове захватывают мьютекс, а по завершении - освобождают его Это скрывает мьютекс от пользователя. Удобно. Но сегодня я обнаружил вот что: бывают ситуации, когда для объекта необходимо... подробнее

Показать сообщение отдельно
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,416
16.12.2012, 01:56     Принадлежит ли начало треугольника координатам
Вот, как можно проще сделал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <iostream>
#include <cmath>
 
struct Point
{
    int x;
    int y;
};
 
bool isTriangle(Point *);
bool pointInside(Point *, Point);
 
int main()
{
    Point point; // координаты точки
    Point vertex[3]; // координаты вершин
 
    std::cout << "Enter x coord of point: ";
    std::cin >> point.x;
    std::cout << "Enter y coord of point: ";
    std::cin >> point.y;
    for (int i=0; i < 3; i++)
    {
        std::cout << "Enter x coord of " << i + 1 << " vertex: ";
        std::cin >> vertex[i].x;
        std::cout << "Enter y coord of " << i + 1 << " vertex: ";
        std::cin >> vertex[i].y;
    }
 
    if (!isTriangle(vertex)) // если не треугольник
        std::cout << "Points don't form a triangle" << std::endl;
    else if (pointInside(vertex, point)) // если треугольник и точка внутри
        std::cout << "Point inside" << std::endl;
    else //если треугольник и точка снаружи
        std::cout << "Point outside" << std::endl;
 
    return 0;
}
 
bool isTriangle(Point *v)
{
    // рассчитываем стороны
    double A = sqrt(pow(v[0].x - v[1].x, 2) + pow(v[0].y - v[1].y, 2));
    double B = sqrt(pow(v[1].x - v[2].x, 2) + pow(v[1].y - v[2].y, 2));
    double C = sqrt(pow(v[2].x - v[0].x, 2) + pow(v[2].y - v[0].y, 2));
    // если одна из сторон больше либо равна двум другим возвращаем ложь
    if ((A + B <= C) || (A + C <= B) || (B + C <= A))
        return false;
    else
        return true;
}
 
bool pointInside(Point *v, Point p)
{
    int a = (v[0].x - p.x) * (v[1].y - v[0].y) - (v[1].x - v[0].x) * (v[0].y - p.y);
    int b = (v[1].x - p.x) * (v[2].y - v[1].y) - (v[2].x - v[1].x) * (v[1].y - p.y);
    int c = (v[2].x - p.x) * (v[0].y - v[2].y) - (v[0].x - v[2].x) * (v[2].y - p.y);
    return ((a >= 0 && b >= 0 && c >= 0) || (a <= 0 && b <= 0 && c <= 0));
}
 
Текущее время: 02:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru