# PBinfo #932 – AriaPoligonSimplu – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: Darius

## Enunț

Cerința
Se dau coordonatele în plan pentru n puncte. Să se afișeze valoarea ariei poligonului pe care acestea îl formează.

Date de intrare
Fișierul de intrare ariapoligonsimplu.in conține pe prima linie numărul de vârfuri ale poligonului, notat cu n.  Pe următoarele n linii se găsesc câte două numere separate printr-un spațiu, reprezentând abscisa respectiv ordonata câte unui vârf. Acestea sunt date într-un sens de parcurgere a laturilor poligonului.

Date de ieșire
Fișierul de ieșire ariapoligonsimplu.out va conține pe prima linie un număr real, cu exact o zecimală, reprezentând valoarea cerută.

Restricții și precizări

Numerele din fișierul de intrare sunt întregi cuprinse între -1001 și 1001.
Poligonul nu este neapărat convex dar nu se autointersectează.

Exemplu:
ariapoligonsimplu.in

4
0 0
1 0
1 1
0 1
ariapoligonsimplu.out

1.0

## Cod sursă C++

```cpp
#include <fstream>
#include <iomanip>
#define DIM 100010
using namespace std;
ifstream fin ("ariapoligonsimplu.in");
ofstream fout("ariapoligonsimplu.out");
pair<int, int> v[DIM];
int sol;
int n, i;
int aria(pair<int, int> a, pair<int, int> b, pair<int, int> c) {
    return  (b.first-a.first) * (c.second-a.second) -
            (c.first-a.first) * (b.second-a.second);
}
int main() {
    fin>>n;
    for (i=1;i<=n;i++) {
        fin>>v[i].first>>v[i].second;
    }
    v[0] = v[n];
    for (i=0;i<n;i++) {
        sol += aria(v[0], v[i], v[i+1]);
    }
    fout<<setprecision(1)<<fixed<<sol/2.0;
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/932)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/932/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-932/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
