the lengths of edges are grouped and stored in a file named
the lengths of edges are grouped and stored in a file named “edges.txt”. Each line of the file contains a group of three edges, which may or may not produce a triangle as discussed above. Your program reads each group of three edges from the file and determines whether or not they produce a valid triangle. If the three edges produce a valid triangle, compute its area and store the area the file “area.txt” with the precision of 2. Otherwise, write the letter “*” in the corresponding line. Each line of the file “area.txt” contains an area or a “*” symbol.
Solution
/*
C ++ program that reads a text file called edges.txt which contains
sides of the triangles . The program finds area of the triangle which
satisfies the triangle sides property otherwise prints a star in the
area.txt file
*/
#include<iostream>
#include <iomanip>
#include <fstream>
#include <iomanip>
#include <cmath>
using namespace std;
//function prototypes
bool isValid (int tri1, int tri2, int tri3);
double area(int a, int b, int c);
void calc (int a, int b, int c, float &area);
int main ()
{
float refArea;
ifstream fin;
fin.open(\"edges.txt\");
if(!fin)
{
cout<<\"File doesnot exist ...\"<<endl;
system(\"pause\");
return -1;
}
ofstream fout;
fout.open(\"area.txt\");
int a, b, c;
//read until end of file
while(fin >> a >> b >> c)
{
/*Calling isValid function */
bool result = isValid (a, b, c);
if(result)
{
calc (a, b, c, refArea);
fout <<left<<setw(5)<<a<<setw(5)<<b<<setw(5)<<setw(5)<<c<<fixed << setprecision (2)<< refArea << endl;
}
else
fout <<left<<setw(5)<<a<<setw(5)<<b<<setw(5)<<setw(5)<<c<<setw(5)<<\"*\"<<endl;
} // end loop.
fin.close();
fout.close();
system(\"pause\");
return 0;
}//end main
// isValid Function
bool isValid (int tri1, int tri2, int tri3)
{
bool result;
if ((tri1 + tri2 > tri3) && (tri1 + tri3 > tri2) && (tri2 + tri3 > tri1))
result = true;
else
result = false;
return result;
} // end isValid
/* The function calc that takes three sides and finds the area of the triangle
using herons\' forumula*/
void calc(int a, int b, int c, float &area)
{
float s = ((a + b + c)/2.0);
area = sqrt(s*(s-a)*(s-b)*(s-c));
}
------------------------------------------------------------------------------------------------
Input text file
edges.txt
12 15 7
8 9 14
11 2 15
6 5 4
18 7 10
16 11 17
------------------------------------------------------------------------------------------------
Output text file
area.txt
12 15 7 41.23
8 9 14 33.67
11 2 15 *
6 5 4 9.92
18 7 10 *
16 11 17 85.21

