Oblicz pole wielokąta, znając współrzędne jego wierzchołków.

0

Wejście

W pierwszej lini liczba naturalna n <105 ilość wierzchołków. W kolejnych n liniach, dwie liczby całkowite oddzielone spacją, współrzędne kolejnych wierzchołków figury -106 <x,y<106

Wyjście

Pole figury z dokładnością do 2 miejsc po przecinku.

Przykład:

3

0 0

0 1

1 1

wyjście:

0.50
Przechodzi tylko dwa testy ktos pomoze ?

Mój kod:

 #include <iostream>
#include <cmath>
using namespace std;

int main()
{
int B,x,y,x2,y2;
double S=0;
cin>>B;
cin>>x>>y;
for(int i=1;i<B;i++)
{
cin>>x2>>y2;
S=S+(x*y2-x2*y);
x=x2;
y=y2;
}
S=S/2;
cout.precision(2);

cout<<fixed<<abs(S);
return 0;
}
0

A liczysz to w jaki sposób? Bo ja bym np. podzielił wielokąt na trójkąty i liczył ich wspólne pole.

0

Brakuje ci domknięcia początku z końcem. Jak pierwszy lub ostatni punkt jest w (0, 0) to twój nieprawidłowy kod pokazuje prawidłowe wyniki.
Tu masz dowód na te same dane testowe a dający błędny wynik: http://ideone.com/ilAdco

0

Dziwnie że jakiekolwiek testy przechodzi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1