Pagini recente » Cod sursa (job #2229836) | Cod sursa (job #2545585) | Cod sursa (job #1159179) | Cod sursa (job #942385) | Cod sursa (job #1779271)
#include <fstream>
#include <iomanip>
#include <cmath>
struct file_manip {
std::ifstream fin;
std::ofstream fout;
file_manip(const char* filename) {
std::string infilename = std::string(filename) + ".in";
std::string outfilename = std::string(filename) + ".out";
fin.open(infilename.c_str());
fout.open(outfilename.c_str());
}
template <class T>
file_manip& operator << (const T& rhs) {
fout << rhs;
return *this;
}
template <class T>
file_manip& operator >> (T& rhs) {
fin >> rhs;
return *this;
}
};
int main()
{
file_manip fm("aria");
int N;
fm >> N;
using Point = std::pair<float, float>;
Point first, curr, next;
fm >> curr.first >> curr.second;
first = curr;
double area = 0.0;
while (--N)
{
fm >> next.first >> next.second;
area += curr.first * next.second * 0.5 - next.first * curr.second * 0.5;
curr = next;
if (N == 1)
{
next = first;
area += curr.first * next.second * 0.5 - next.first * curr.second * 0.5;
}
}
fm << std::abs(area);
return 0;
}