```#include <fstream>
#include <iostream>
using namespace std;

/**************************************
** CLASS DEFINITIONS
**************************************/
struct point
{
double x, y;
};

/**************************************
** FUNCTION PROTOTYPES
**************************************/
point midpoint(point a, point b);
void writepoint(point p);
void writepoint(point p, ostream&);

/**************************************
** MAIN FUNCTION
**************************************/
int main()
{
// Read in triangle vertices
cout << "Enter triangle vertices: ";
point a = readpoint(),

// Compute midpoints
point e = midpoint(a,b),
f = midpoint(b,c),
g = midpoint(c,a);

// Write out midpoint triangel 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 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;
}

```