Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- CORMEN - pag 1021 (1042 din 1313)
- Ex 33.1-8
- Show how to compute the area of an n - vertex simple, but not necessarily convex,
- polygon in theta(n) time.
- */
- #include <iostream>
- #include <fstream>
- using namespace std;
- struct Punct
- {
- int coordX, coordY;
- };
- // Citire in timp liniar
- void citire(Punct poligon[], int& nrVarfuri)
- {
- ifstream f("ariePoligon.in");
- f >> nrVarfuri;
- // Introducem varfurile poligonului in sens trigonometric
- for (int i = 0; i < nrVarfuri; i++)
- f >> poligon[i].coordX >> poligon[i].coordY;
- poligon[nrVarfuri].coordX = poligon[0].coordX;
- poligon[nrVarfuri].coordY = poligon[0].coordY;
- }
- // Calculul ariei poligonului in timp liniar
- // Demonstratia formulei: https://www.infoarena.ro/notiuni-de-geometrie-si-aplicatii/arii
- float ariePoligon(Punct poligon[], int nrVarfuri)
- {
- int Aria = 0;
- for (int i = 0; i < nrVarfuri; i++)
- Aria += (poligon[i].coordX * poligon[i + 1].coordY - poligon[i].coordY * poligon[i + 1].coordX);
- return (float)Aria / 2;
- }
- int main()
- {
- Punct poligon[50] = { 0 };
- int nrVarfuri;
- citire(poligon, nrVarfuri);
- cout << ariePoligon(poligon, nrVarfuri);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement