Форум о FIFA 15, FIFA 14, PES 2014 и других футбольных симуляторах на fifasoccer.ru

Форум о FIFA 15, FIFA 14, PES 2014 и других футбольных симуляторах на fifasoccer.ru (http://fifasoccer.org/forum/index.php)
-   Программирование (http://fifasoccer.org/forum/forumdisplay.php?f=40)
-   -   Задача по програмированию (http://fifasoccer.org/forum/showthread.php?t=13037)

Kup9 30.12.2008 10:44

Задача по програмированию
 
Помогите пожалуйста написать программу по программированию, желательно на паскале или бейсике
программа такая: "Интересные точки"
Задан многоугольник, вершины которого находятся в точках с целоцисленными координатами.Назавём точку интересной, если хотя бы одна из её координат является целой.
Необходимо найти число интересных точек, которые находятся на границе заданного многоугольника.

Прошу написать программу, срочно нужна, заранее благодарен.

Kup9 10.01.2009 23:05

ап пля

VelvetDust 10.01.2009 23:25

Есть такая “формула Пика (клик на Вику)”: если вершины многоугольника расположены в точках с целочисленными координатами (твои “интересные точки”), то выполняется следующее равенство: S = K + M/2 – 1, где S — площадь многоугольника, K — число целых точек, лежащих внутри многоугольника, M — число целых точек, лежащих на границе многоугольника. Зная координаты вершин многоугольника, ты можешь подсчитать S и M, то есть требуемый ответ к задаче, по формуле Пика. О том, как найти площадь S многоугольника, зная координаты его вершин, смотри ниже. Что касается нахождения числа M, оно вроде является суммой НОД(Δx, Δy) для всех сторон многоугольника (Δx и Δy — разности абсцисс и ординат концов отрезка)

P/S - Поправьте, если где наврал...

VelvetDust 10.01.2009 23:46

Паскаль плохо помню, наверняка чо не так написал... Компилятора нету.
<<< Как найти площадь S многоугольника, зная координаты его вершин >>>

program ploschad(input,output);
var i,n:integer; x,y,x1,y1,x2,y2,r,a,b,c,p:real;
begin
writeln('Number of vertices? ');
read(n);
{ Многоугольник разбиваем на кусочки:
первая вершина и каждые две соседних образуют треугольник;
площадь каждого вычисляем по формуле Герона,
сумма всех треугольников даст целиком многоугольник }
write('Vertice 1 (x,y): '); read(x,y);
write('Vertice 2 (x,y): '); read(x1,y1);
r:=0;
for i:=3 to n do
begin
write('Vertice ',i,' (x,y): ');
read(x2,y2);
a:=sqrt(sqr(x-x1)+sqr(y-y1));
b:=sqrt(sqr(x-x2)+sqr(y-y2));
c:=sqrt(sqr(x2-x1)+sqr(y2-y1));
p:=(a+b+c)/2;
r:=r+sqrt(p*(p-a)*(p-b)*(p-c));
x1:=x2; y1:=y2;
end;
writeln('S = ',r);
end

Kup9 11.01.2009 11:37

Спасибо, помог, но немного не понял как найти саму "М" или "К"...не силён я к математике..


Часовой пояс GMT +3, время: 10:34.

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot