Attached Files main.cpp.txt Point.cpp.txt Point.h.txt triangle_data.txt triangle
ID: 3622423 • Letter: A
Question
Attached Files
main.cpp.txt
Point.cpp.txt
Point.h.txt
triangle_data.txt
triangle.cpp.txt
triangle.h.txt
contains the x- and y-coordinates of 9 points. These 9 points are to be made into 3 triangles. Modify the program such that it reads in these points in order (the first point is the first vertex of the first triangle). Output the following to a text file: the lengths, angles, and area of each of the 3 triangles. Format your output file for ease of reading.
To read from triangle_data.txt, the file must be placed in the folder that contains all the header and source files of your program. There's no need to specify anything else.
main.cpp.txt……………………………………………………………………………………………………………
#include
#include
#include
#include
#include "triangle.h"
using namespace std;
int main()
{
double x[9]={0,1,0,0,5,2.5,-7,-9,-2}, y[9]={0,0,1,0,0,5,-2,-10,-8};
Point p1, p2, p3;
triangle t1, t2, t3;
p1.setX(x[0]);
p1.setY(y[0]);
p2.setX(x[1]);
p2.setY(y[1]);
p3.setX(x[2]);
p3.setY(y[2]);
t1.setvertex1(p1);
t1.setvertex2(p2);
t1.setvertex3(p3);
p1.setX(x[3]);
p1.setY(y[3]);
p2.setX(x[4]);
p2.setY(y[4]);
p3.setX(x[5]);
p3.setY(y[5]);
t2.setvertex1(p1);
t2.setvertex2(p2);
t2.setvertex3(p3);
p1.setX(x[6]);
p1.setY(y[6]);
p2.setX(x[7]);
p2.setY(y[7]);
p3.setX(x[8]);
p3.setY(y[8]);
t3.setvertex1(p1);
t3.setvertex2(p2);
t3.setvertex3(p3);
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(4);
cout << "Triangle 1"< cout << "Length of side 1: "< cout << "Length of side 2: "< cout << "Length of side 3: "< cout << "Angle 1 in deg.: "< cout << "Angle 2 in deg.: "< cout << "Angle 3 in deg.: "< cout << "Area: "< cout << endl;
cout << "Triangle 2"< cout << "Length of side 1: "< cout << "Length of side 2: "< cout << "Length of side 3: "< cout << "Angle 1 in deg.: "< cout << "Angle 2 in deg.: "< cout << "Angle 3 in deg.: "< cout << "Area: "< cout << endl;
cout << "Triangle 3"< cout << "Length of side 1: "< cout << "Length of side 2: "< cout << "Length of side 3: "< cout << "Angle 1 in deg.: "< cout << "Angle 2 in deg.: "< cout << "Angle 3 in deg.: "< cout << "Area: "< cout << endl;
return 0;
}
triangle.h.txt…………………………………………………………………………………………………………………………
#include "Point.h"
using namespace std;
class triangle
{
// Declaration of attributes
private:
Point vertex1, vertex2, vertex3;
double side1, side2, side3, angle1, angle2, angle3;
// Function prototypes
public:
triangle::triangle();
triangle::triangle(Point p1, Point p2, Point p3);
Point getvertex1();
Point getvertex2();
Point getvertex3();
double getside1();
double getside2();
double getside3();
double getangle1();
double getangle2();
double getangle3();
void setvertex1(Point p);
void setvertex2(Point p);
void setvertex3(Point p);
double Area();
};
Point.cpp.txt………………………………………………………………………………………………………………………….
#include "Point.h"
#include
using namespace std;
double Point::getX() const
{
return xCoord;
}
double Point::getY() const
{
return yCoord;
}
void Point::setX(double newX)
{
xCoord = newX;
}
void Point::setY(double newY)
{
yCoord = newY;
}
double Point::distance(const Point rhs) const
{
double t1, t2, d;
t1 = rhs.xCoord - xCoord; // (x2 - x1)
t2 = rhs.yCoord - yCoord; // (y2 - y1)
d = sqrt(pow(t1,2) + pow(t2,2));
return d;
}
Point.h.txt……………………………………………………………………………………………………………………………
class Point
{
// Declaration of attributes
private:
double xCoord, yCoord;
// Function prototypes
public:
double getX() const; // Returns x value
double getY() const; // Returns y value
void setX(double newX);
void setY(double newY);
// Distance between two points
double Point::distance(const Point rhs) const;
};
triangle_data.txt……………………………………………………………………………………………………………………...
0.0 0.0
1.0 0.0
0.0 1.0
0.0 0.0
5.0 0.0
2.5 5.0
-7.0 -2.0
-9.0 -10.0
-2.0 -8.0
triangle.cpp.txt………………………………………………………………………………………………………………………
#include
#include "triangle.h"
using namespace std;
const double pi(3.141592654);
triangle::triangle()
{
vertex1.setX(0.0);
vertex1.setY(0.0);
vertex2.setX(1.0);
vertex2.setY(0.0);
vertex3.setX(0.0);
vertex3.setY(1.0);
side1 = pow(2,0.5);
side2 = 1.0;
side3 = 1.0;
angle1 = 90.0;
angle2 = 45.0;
angle3 = 45.0;
}
triangle::triangle(Point p1, Point p2, Point p3)
{
vertex1.setX(p1.getX());
vertex1.setY(p1.getY());
vertex2.setX(p1.getX());
vertex2.setY(p1.getY());
vertex3.setX(p1.getX());
vertex3.setY(p1.getY());
side1 = p2.distance(p3);
side2 = p1.distance(p3);
side3 = p1.distance(p2);
angle1 = (180.0/pi) * acos((side2*side2 + side3*side3 - side1*side1)/(2*side2*side3));
angle2 = (180.0/pi) * acos((side1*side1 + side3*side3 - side2*side2)/(2*side1*side3));
angle3 = (180.0/pi) * acos((side1*side1 + side2*side2 - side3*side3)/(2*side2*side1));
}
double triangle::getside1()
{
return side1;
}
double triangle::getside2()
{
return side2;
}
double triangle::getside3()
{
return side3;
}
double triangle::getangle1()
{
return angle1;
}
double triangle::getangle2()
{
return angle2;
}
double triangle::getangle3()
{
return angle3;
}
void triangle::setvertex1(Point p)
{
vertex1.setX(p.getX());
vertex1.setY(p.getY());
side1 = vertex2.distance(vertex3);
side2 = vertex1.distance(vertex3);
side3 = vertex1.distance(vertex2);
angle1 = (180.0/pi) * acos((side2*side2 + side3*side3 - side1*side1)/(2*side2*side3));
angle2 = (180.0/pi) * acos((side1*side1 + side3*side3 - side2*side2)/(2*side1*side3));
angle3 = (180.0/pi) * acos((side1*side1 + side2*side2 - side3*side3)/(2*side2*side1));
}
void triangle::setvertex2(Point p)
{
vertex2.setX(p.getX());
vertex2.setY(p.getY());
side1 = vertex2.distance(vertex3);
side2 = vertex1.distance(vertex3);
side3 = vertex1.distance(vertex2);
angle1 = (180.0/pi) * acos((side2*side2 + side3*side3 - side1*side1)/(2*side2*side3));
angle2 = (180.0/pi) * acos((side1*side1 + side3*side3 - side2*side2)/(2*side1*side3));
angle3 = (180.0/pi) * acos((side1*side1 + side2*side2 - side3*side3)/(2*side2*side1));
}
void triangle::setvertex3(Point p)
{
vertex3.setX(p.getX());
vertex3.setY(p.getY());
side1 = vertex2.distance(vertex3);
side2 = vertex1.distance(vertex3);
side3 = vertex1.distance(vertex2);
angle1 = (180.0/pi) * acos((side2*side2 + side3*side3 - side1*side1)/(2*side2*side3));
angle2 = (180.0/pi) * acos((side1*side1 + side3*side3 - side2*side2)/(2*side1*side3));
angle3 = (180.0/pi) * acos((side1*side1 + side2*side2 - side3*side3)/(2*side2*side1));
}
double triangle::Area()
{
double area, s;
s = (0.5*(side1 + side2 + side3));
area = sqrt(s*(s - side1)*(s - side2)*(s -side3));
return area;
}
Explanation / Answer
Hope this helps. Let me know if you have any questions. Please rate. :) The only thing that needs to change is the main.cpp. I've added comments to show you what is happening in the code. Feel free to message me or post a comment ifyou have any questions. ----------------main.cpp------------------ #include #include #include #include "triangle.h" using namespace std; int main() { // Declare the arrays, but don't initialize them double x[9], y[9]; Point p1, p2, p3; triangle t1, t2, t3; // Declare two file streams - one for input and one for output ifstream inFile; ofstream outFile; // Open the input file inFile.open("triangle_data.txt"); // If it failed to open, exit the program if (!inFile.is_open()) { cerr > x[i] >> y[i]; } // Close the input file when we're done with it inFile.close(); p1.setX(x[0]); p1.setY(y[0]); p2.setX(x[1]); p2.setY(y[1]); p3.setX(x[2]); p3.setY(y[2]); t1.setvertex1(p1); t1.setvertex2(p2); t1.setvertex3(p3); p1.setX(x[3]); p1.setY(y[3]); p2.setX(x[4]); p2.setY(y[4]); p3.setX(x[5]); p3.setY(y[5]); t2.setvertex1(p1); t2.setvertex2(p2); t2.setvertex3(p3); p1.setX(x[6]); p1.setY(y[6]); p2.setX(x[7]); p2.setY(y[7]); p3.setX(x[8]); p3.setY(y[8]); t3.setvertex1(p1); t3.setvertex2(p2); t3.setvertex3(p3); // Open the output file outFile.open("output.txt"); // If the output file failed to open, exit the program if (!outFile.is_open()) { cerrRelated Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.