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

Проверка многоугольника на выпуклость - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перевод из 2-ой в 8-ую СС http://www.cyberforum.ru/cpp-beginners/thread730410.html
Необходимо реализовать перевод чисел из двоичной в восьмеричную систему счисления.
C++ Матрица (Найти вектор B(l), каждый элемент которого равен среднему арифметическому элементов...) Задана матрица A(k,l). Найти вектор B(l), каждый элемент которого равен среднему арифметическому элементов соответствующего столбца матрицы А. Похожие темы... http://www.cyberforum.ru/cpp-beginners/thread730405.html
Составить процедуру, выполняющую сжатие массива удалением элементов, значение которых меньше заданного числа C++
Составить процедуру, выполняющую сжатие массива удалением элементов, значение которых меньше заданного числа. Вывести на экран максимальное значение среди удалённых элементов. Решите пожалуйста,...
C++ Прочитать одной строкой с файла
собственно в этом и вопрос, как считать целой строкой #include <iostream> #include <iomanip> #include <sstream> #include <string> #include <fstream> using namespace std; ...
C++ Строки (Расположить слова строки в порядке, обратном исходному) http://www.cyberforum.ru/cpp-beginners/thread730377.html
Здравствуйте,помогите пожалуйста. Задание: Расположить слова строки в порядке, обратном исходному.
C++ Перевод в двоичную систему(Указать на ошибку) Не хочет верно выдавать числа типа от 16 до 20, где в двоичной на 2м месте стоит ноль(16=10000) выдает только 0000, и так со всеми числами в которых на 2м месте ноль, первая единица не отображается)... подробнее

Показать сообщение отдельно
Hi4ko
74 / 74 / 4
Регистрация: 21.10.2010
Сообщений: 376

Проверка многоугольника на выпуклость - C++

13.12.2012, 19:33. Просмотров 1609. Ответов 0
Метки (Все метки)

Здравствуйте.

Не заходит вырезано задача.

Не могу понять, почему.
Проверял на схожесть знаков ориентированные площади треугольников из точек.
Код:
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
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
 
struct point{
    long int x,y;
};
 
bool isok(point a,point b,point c){
    return (b.x - a.x)*(c.y - a.y) - (b.y - a.y)*(c.x - a.x) > 0;
}
 
int main(){
    long int N;
    cin >> N;
    vector<point> Polygon(N+2);
    for(int i = 1; i <= N; ++i)
        cin >> Polygon[i].x >> Polygon[i].y;
    Polygon[0] = Polygon[N];
    Polygon[N+1] = Polygon[0];
    bool ans = true;
    for(int i = 2; i <= N; ++i){
                if(isok(Polygon[i],Polygon[i-1],Polygon[i+1]) != isok(Polygon[i-1],Polygon[i-2],Polygon[i])){
                    ans = false;
                    break;
}
    }
    if(ans)
        cout <<"YES" << endl;
    else
        cout <<"NO" << endl;
}
Добавлено через 1 час 57 минут
up, до сих пор не нашел ошибки

Добавлено через 21 минуту
Формат входных данных


В первой строке вводится одно число N (3≤N≤100000). Далее в N строках задается по паре чисел – координаты очередной вершины простого многоугольника в порядке обхода по или против часовой стрелки.

Формат выходных данных

Выведите одну строку: “YES”, если приведённый многоугольник является выпуклым, и “NO” в противном случае.

Условие задачи
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru