C++ Bc. 12

Z GeoWikiCZ
Přejít na: navigace, hledání
Výpočet plochy polygonu

Napište funkci plocha(), která počítá plochu polygonu podle vzorce


P = {1\over2} \sum_{i=0}^{N-1} (x_{i+1} - x_i)(y_{i+1} + y_i)

V závislosti na číslování vrcholů polygonu, může plocha vyjít i záporná a je proto nutno uvažovat absolutní hodnotu. V uvedeném vzorci se předpokládá, že polygon je uzavřený, tj. že poslední bod polygonu je identický s prvním bodem polygonu. Zajistěte aby funkce plocha() dávala správné výsledky pro uzavřené i neuzavřené polygony. Zajistěte, aby v případech kdy není zadán dostatečný počet bodů, funkce vyvolala výjimky Chyba.

struct Chyba
{
   Chyba(std::string t) : text(t) {}

   std::string text;
};

struct Bod {
  double x, y;
};

typedef std::vector<Bod> Polygon;

double plocha(const Polygon& p);

Použijte funkci plocha() v programu, který čte vstupní data ze vstupního proudu (např. ze souboru a pod.).

[ Zpět | C++ | Další ]