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

Многоугольник на плоскости задан целочисленными координатами своих N вершин в декартовой системе координат (найти площадь многоугольника) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.65
BlackScorpioNnn
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 12
31.05.2013, 18:48     Многоугольник на плоскости задан целочисленными координатами своих N вершин в декартовой системе координат (найти площадь многоугольника) #1
Здравствуйте форумчане! Необходим совет)
собственно задача:
Многоугольник на плоскости задан целочисленными координатами своих N вершин в декартовой системе координат. Требуется найти площадь многоугольника. Стороны многоугольника не соприкасаются (за исключением соседних - в вершинах) и не пересекаются. Ограничения: 3<=N<=50000, координаты вершин целые и по модулю не превосходят 20000. При вводе: В первой строке находится число N. В следующих N строках находятся пары чисел - координаты точек. Если соединить точки в данном порядке, а также первую и последнюю точки, получится заданный многоугольник. При выводе: Вывести одно число - площадь многоугольника. Его следует округлить до ближайшего числа с одной цифрой после запятой.
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
#include<iostream>
using namespace std;
int main()
{
double s;
int n,min;
long int x[50000];
long int y[50000];
cin>>n;
for(int i=0;i<n;i++)
{
cin>>x[i]>>y[i];
}
x[n]=x[0];
y[n]=y[0];
 
min=y[0];
for(int i=1;i<n;i++)
if(min>y[i])min=y[i];
 
for(int i=0;i<n+1;i++)
y[i]=y[i]-min;
s=0.0;
for(int i=0;i<n;i++){
s=s+(((float)y[i+1]+(float)y[i])*((float)x[i+1]-(float)x[i])/2);
}
if(s<0)
s=-s;
cout<<s;
return 0;}
но на сайте проверки http://olimpic.asu.tusur.ru выдает Wrong answer on test 6
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2013, 18:48     Многоугольник на плоскости задан целочисленными координатами своих N вершин в декартовой системе координат (найти площадь многоугольника)
Посмотрите здесь:

Пирамиду SABC задан координатами своих вершин. Найти полную поверхность пирамиды. C++
Треугольник задан координатами своих вершин. Составить программу для вычисления его площади. C++
Треугольник задан координатами своих вершин. Найти его периметр и площадь. C++
C++ Найти площадь треугольника заданного координатами своих вершин
C++ Найти площадь многоугольника, заданного перечислением координат вершин в порядке обхода его границы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
31.05.2013, 22:20     Многоугольник на плоскости задан целочисленными координатами своих N вершин в декартовой системе координат (найти площадь многоугольника) #2
BlackScorpioNnn,
C++
1
2
3
4
5
6
7
8
9
10
11
#include <cstdio>
#include <cmath>
int n, i; double ans;
struct { int x, y; } p[100001];
int main() {
     scanf("%d", &n);
     for (i = 0; i < n; ++i) scanf("%d %d", &p[i].x, &p[i].y);
     p[n] = p[0];
     for (i = 0; i < n; ++i) ans += (p[i+1].x - p[i].x) * (p[i+1].y + p[i].y);
     printf("%.1lf", abs(ans)/2.0);
}
BlackScorpioNnn
0 / 0 / 0
Регистрация: 14.04.2013
Сообщений: 12
23.06.2013, 11:22  [ТС]     Многоугольник на плоскости задан целочисленными координатами своих N вершин в декартовой системе координат (найти площадь многоугольника) #3
Спасибо большое не мог бы ты пожалуйста обьяснить строчку.
C++
1
p[n] = p[0];
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
23.06.2013, 21:19     Многоугольник на плоскости задан целочисленными координатами своих N вершин в декартовой системе координат (найти площадь многоугольника) #4
@BlackScorpioNnn, последняя вершина = первой, это её копия, для удобства.
genreator
0 / 0 / 0
Регистрация: 10.11.2015
Сообщений: 17
18.04.2016, 21:49     Многоугольник на плоскости задан целочисленными координатами своих N вершин в декартовой системе координат (найти площадь многоугольника) #5
А можете объяснить смысл вот этого
C++
1
p[100001];
Yandex
Объявления
18.04.2016, 21:49     Многоугольник на плоскости задан целочисленными координатами своих N вершин в декартовой системе координат (найти площадь многоугольника)
Ответ Создать тему
Опции темы

Текущее время: 19:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru