I have been working on this C++ source file for weeks and do not understand where I am going wrong at..
//This program will ask the user for the measurement of all 3 sides of a triangle
//and first determine if the numbers will equal a triangle, then give the area and
//perimeter of the triangle.
#include开发者_如何转开发 <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
void calc(double , double , double ,double &, double &);
void s(double , double , double , double &);
int main()
{
double a;
double b;
double c;
double per;
double sr;
double areat;
cout<<"Enter the three side of your triangle: ";
cin>> a >> b >> c;
per = a+b+c;
if (a > b || a < b || b > c || b < c)
{
cout<< "Sorry, this is not a triangle.\n";
}
else
{
cout<<"For a Triangle with the sides of "<<a<<", "<<b<<",and " <<c <<endl;
cout<< setprecision(3)<<fixed<<showpoint;
cout<<"The Perimeter is "<<per<<endl;
calc(a,b,c,sr,areat);
cout<< "The Area is "<<areat<<endl;
}
system ("pause");
return 0;
}
void s(double a, double b, double c, double &sr)
{
sr = (a+b+c)/2;
}
void calc(double a, double b, double c, double &sr, double &areat)
{
areat = sqrt(sr*(sr-a)*(sr-b)*(sr-c));
}
You aren't calling function s()
, therefore variable sr
is not getting initialized.
Other minor things:
if (a > b || a < b || b > c || b < c)
cout << "Sorry, this is not a triangle.\n";
This line will reject all triangles unless a == b == c. Did you intend to limit to equilateral triangles?
In function calc()
, sr
is not an output, it does not need to be passed by reference.
精彩评论