c++ na płaszczyźnie

0

Witam, mam zadanko następujące, czy możecie mi wytłumaczyć jak je zrobić?

Policz pole wielokąta
Wejście

W pierwszej linii wejścia znajduje się ilość wierzchołków, następnie podane są wierzchołki w kolejności dodatniej (tzn przeciwnie do ruchu wskazówek zegara). Współrzędne Y będą na pewno nieujemne.

Wyjście
Wypisz jedną liczbę oznaczającą pole wielokąta. Błąd ma być nie większy od 10^(-8).
Przykład

Dla danych wejściowych
4
1.0 1.0
2.0 1.0
2.0 2.0
1.0 2.0

poprawną odpowiedzią jest
1.00000
lub
1.00000000000007

Mam napisany program który liczy pole trójkąta, kolega powiedział mi że w nim trzeba dopisać jakąś pętle ale za bardzo nie wiem jak to zrobić :(


#include<iostream> 
#include<cstdio> 
#include<cstdlib> 

using namespace std; 
int main() 
{ 
cout.setf(ios::fixed, ios::floatfield); 
cout.precision(1);
    float argumenta, wartosca, argumentb, wartoscb, argumentc, wartoscc;
    cin>>argumenta>>wartosca>>argumentb>>wartoscb>>argumentc>>wartoscc;

    float abx;

    abx=(((argumentb-argumenta)*(wartoscc-wartosca))-((argumentc-argumenta)*(wartoscb-wartosca)))/2;
    if(abx<0)
        {
        abx=abx*(-1);
        cout<<abx<<"\n";
    }
    else
        cout<<abx<<"\n";

    system("pause"); 
    return 0; 
} 
1

Z wierzchołków tak podawanych możesz składać trójkąty. Tzn po wczytaniu 3 wierzchołków masz pierwszy trójkąt, wczytujesz kolejny wierzchołek i tworzysz kolejny trójkąt. Np. dla:
A B C D E
i z tego masz trójkąty (A,B,C), (A,C,D), (A,D,E)
Liczysz pola z wzoru herona i sumujesz.

edit: poprawiłem ewidentnego babola ;]

2

Radzę rozbić na trójkąty:
ABC
ACD
ADE
Liczyć ze wzoru macierzowego: S=abs((bx-ax)*(cy-ay)-(cx-ax)*(by-ay))/2;

0

a pomożecie to zakodzić?

1

A pomożesz uzupełnić budżet rodzinny o 50 zł ?

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