Advertisement
Tucancitto

Proiect AF - Aria unui poligon

Jan 2nd, 2021 (edited)
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.16 KB | None | 0 0
  1. /*
  2.     CORMEN - pag 1021 (1042 din 1313)
  3.     Ex 33.1-8
  4.     Show how to compute the area of an n - vertex simple, but not necessarily convex,
  5.     polygon in theta(n) time.
  6. */
  7.  
  8. #include <iostream>
  9. #include <fstream>
  10. using namespace std;
  11.  
  12. struct Punct
  13. {
  14.     int coordX, coordY;
  15. };
  16.  
  17. // Citire in timp liniar
  18. void citire(Punct poligon[], int& nrVarfuri)
  19. {
  20.     ifstream f("ariePoligon.in");
  21.     f >> nrVarfuri;
  22.  
  23.     // Introducem varfurile poligonului in sens trigonometric
  24.     for (int i = 0; i < nrVarfuri; i++)
  25.         f >> poligon[i].coordX >> poligon[i].coordY;
  26.  
  27.     poligon[nrVarfuri].coordX = poligon[0].coordX;
  28.     poligon[nrVarfuri].coordY = poligon[0].coordY;
  29. }
  30.  
  31. // Calculul ariei poligonului in timp liniar
  32. // Demonstratia formulei: https://www.infoarena.ro/notiuni-de-geometrie-si-aplicatii/arii
  33. float ariePoligon(Punct poligon[], int nrVarfuri)
  34. {
  35.     int Aria = 0;
  36.  
  37.     for (int i = 0; i < nrVarfuri; i++)
  38.         Aria += (poligon[i].coordX * poligon[i + 1].coordY - poligon[i].coordY * poligon[i + 1].coordX);
  39.  
  40.     return (float)Aria / 2;
  41.  
  42. }
  43.  
  44. int main()
  45. {
  46.     Punct poligon[50] = { 0 };
  47.     int nrVarfuri;
  48.     citire(poligon, nrVarfuri);
  49.  
  50.     cout << ariePoligon(poligon, nrVarfuri);
  51.  
  52.     return 0;
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement