开发者

void return types using reference variables in c++

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜