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

Площадь произвольного многоугольника с проверкой на пересечения - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Поиск подстроки в строке http://www.cyberforum.ru/cpp-beginners/thread1581531.html
#include "stdafx.h" #include <stdio.h> #include <iostream> using namespace std; int GetLength(char* string) { int i; int length = 1; for (i = 1; string; i++) {
C++ Проверка правильности шаблона класса vector? Задание для лабараторки Название класса: Вектор и перегружаемая операция << (вывод коллекции в поток вывода). У меня что-то получилось но может вы подскажите что можно исправить или улучшить или свое предложите. И посоветуйте где добавить работу с исключительными ситуацими. #include <iostream> #include <string.h> #include <vector> #include <typeinfo> #include... http://www.cyberforum.ru/cpp-beginners/thread1581519.html
C++ Найти среднее арифметическое положительных элементов строки, у которой первый элемент меньше второго в с++
Найти среднее арифметическое положительных элементов строки, у которой первый элемент меньше второго в с++
Удаление подстроки из текстового файла C++
Здравствуйте. Нужна помощь. Необходимо написать программу распознаватель для языка слов правильно разбитых на 2 части. Программу я написала, вроде правильно работает. Далее необходимо написать программу, которая исключает из исходного текстового файла подстроки, являющиеся цепочками заданного языка.// // #include "stdafx.h" #include <iostream> #include <string> #include <conio.h>...
C++ Com0com http://www.cyberforum.ru/cpp-beginners/thread1581503.html
как запрограммировать порты com0com на передачу друг другу? есть примеры?
C++ Генерация случайных чисел несколько раз в программе Здравствуйте! Есть код //Написать программу проверки коммутативности произведения двух квадратных целочисленных матриц //(условие A*B = B*A). Заполнение матрицы происходит случайным образом. Результат вывести на экран. #include <iostream> #include <cstdlib> #include <ctime> подробнее

Показать сообщение отдельно
DobroAbdulova
0 / 0 / 0
Регистрация: 01.03.2014
Сообщений: 11

Площадь произвольного многоугольника с проверкой на пересечения - C++

15.11.2015, 12:10. Просмотров 138. Ответов 0
Метки (Все метки)

Площадь произвольного многоугольника. Даны натуральное число n, действительные числа x1,y1,x2,y2,...,xn,yn. Найти площадь n-угольника произвольной конфигурации, вершины которого при некотором последовательном обходе имеют координаты (x1,y1),(x2,y2),...,(xn,yn). Реализовать проверку корректности исходных данных в подпрограмме.

Все бы хорошо нашлось по формуле, но нужна проверка на самопересечение или что-то подобное. Я пытался сделать проверку по уравнению прямой на плоскости(x-x1/x2-x1=y-y1/y2-y1), но запутался. Помогите хотя бы проверку до ума довести. Идея какая: нужно решить систему из двух таких уравнений 2x-1=2y-1. xk - коэффициент при x, xd - добавка к x (тут она 1), аналогично и для правой части (только для y), и для второго уравнения.

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
#include <string>
#include <iostream>
 
using namespace std;
 
int main(){
    int x1 = 1,x2 = 3,y1 = 1,y2 = 3;
    int a1 = 1,b1 = 3,a2 = 1,b2 = 3;
    int x3,y3;
    
    int xk, yk, xd, yd;
    int ak, bk, ad, bd;
    bk = a2 - a1;
    ak = b2 - b1;
    yk = x2-x1;
    xk = y2-y1;
    
    int buff;
    
    bd = ((a2-a1)*(-b2)+a1*(b2-b1))/(b2-b1);
    cout << "Now " << bd << endl;
    ad = ((b2-b1)*(-a2)+b1*(a2-a1))/(a2-a1);
    cout << "Now " << ad << endl;
    yd = ((x2-x1)*(-y2)+x1*(y2-y1))/(y2-y1);
    xd = ((y2-y1)*(-x2)+y1*(x2-x1))/(x2-x1);
    
    bk = -bk;
    yk = -yk;
    xd = -xd;
    bd = -bd;
    
    cout << "+ pri y " << yd << endl;
    cout << "+ pri x " << xd << endl;
    cout << "Coef pri x " << xk << endl;
    cout << "Coef pri y " << yk << endl;
    cout << "+ pri b " << bd << endl;
    cout << "+ pri a " << ad << endl;
    cout << "Coef pri b " << bk << endl;
    cout << "Coef pri a " << ak << endl;
    
    //ad+=bd;
    cout << xk << endl;
    //xk+=yk*ak/bk;
    //xd+=-yk*((bd+ad)/bk);
    cout << "xk " << xk << endl;
    cout << "xd " << xd << endl;
    //cout << xd/xk;
    /*
    yk=yk+xk*bk/ak;
    cout << yk;
    buff = xd+yd+xk*(bd-ad);
    
    //x3 = buff/yk; // ((yd*xk+xd)+xd)/(xk*yk-1)
    //y3 = ((yd*xk+xd)+xd)/(xk*yk-1);
    cout << x3;
    */
    return 0;
}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru