#include <fstream>
/**************************************
** CLASS DEFINITIONS
**************************************/
struct point
{
double x, y;
};
/**************************************
** FUNCTION PROTOTYPES
**************************************/
point midpoint(point a, point b);
point readpoint();
void writepoint(point p);
void writepoint(point p, ostream&);
/**************************************
** MAIN FUNCTION
**************************************/
int main()
{
// Read in triangle vertices
cout << "Enter triangle vertices: ";
point a = readpoint(),
b = readpoint(),
c = readpoint();
// Compute midpoints
point e = midpoint(a,b),
f = midpoint(b,c),
g = midpoint(c,a);
// Write out midpoint triangle vertices
cout << "Midpoint triangle verts: ";
writepoint(e);
writepoint(f);
writepoint(g);
cout << endl;
// Write Excel
ofstream out("tri.txt");
// Original triangle
writepoint(a,out);
writepoint(b,out);
writepoint(c,out);
writepoint(a,out);
out << endl;
// Midpoint triangle
writepoint(e,out);
writepoint(f,out);
writepoint(g,out);
writepoint(e,out);
out << endl;
return 0;
}
/**************************************
** FUNCTION DEFINITIONS
**************************************/
point midpoint(point a, point b)
{
point m;
m.x = (a.x + b.x)/2;
m.y = (a.y + b.y)/2;
return m;
}
point readpoint()
{
point p;
char c;
cin >> c >> p.x >> c >> p.y >> c;
return p;
}
// Writes p to the screen in (x,y) notation
void writepoint(point p)
{
cout << '(' << p.x << ',' << p.y << ')';
}
// Writes p to ostream out in x <tab> y <endl> notation
void writepoint(point p, ostream &out)
{
out << p.x << '\t' << p.y << endl;
}