void возвращаемые типы с использованием ссылочных переменных в c ++ - PullRequest
0 голосов
/ 28 ноября 2010

Я работаю над этим исходным файлом C ++ уже несколько недель и не понимаю, в чем я ошибаюсь ..

//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));
}

1 Ответ

5 голосов
/ 28 ноября 2010

Вы не вызываете функцию s(), поэтому переменная sr не инициализируется.

Другие мелочи:

if (a > b || a < b || b > c || b < c)
    cout << "Sorry, this is not a triangle.\n";

Эта линия отклонит все треугольники, если a == b == c. Вы намеревались ограничиться равносторонними треугольниками?

В функции calc(), sr не является выходом, его не нужно передавать по ссылке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...