如何添加返回3个数字的函数,而不仅仅是1

时间:2014-12-11 13:25:44

标签: c++ function

我的程序使用公式S = 0.5 * a * b * sin(A)计算用户输入的三角形的平方(A是a和b之间的角度)。程序做得对,但我想知道如何添加新函数,然后在for循环中调用它。我想要创建的函数应该包含这两行代码。问题是我不知道如何编写一个返回多个值的函数,而不只是一个。

cout<<"Enter triangle"<<endl; 
cin>>a>>b>>angle; 

程序的源代码是:

#include <iostream>
#include <math.h>
using namespace std;

double calc(double A, double B, double Angle);      
void printResults(double square, double max_square);

int main()
{
    int i, n;
    double a, b, angle, square, max_square = 0; 

    cout<<"How many triangles do you want to enter?"<<endl;
    cin>> n;

    for(i=1; i<=n; i++)
    {
        cout<<"Enter triangle"<<endl; // so I want to call my own function here
        cin>>a>>b>>angle;             // the body of function should contain these 2 lines

        square = calc(a,b,angle);   
        if (square > max_square)     
            max_square = square;
        printResults(square, max_square);
    }
    return 0;
}
double calc(double A, double B, double Angle)
{
double s, s_max = 0;
s = 0.5 * A * B * sin(Angle);
return s;
}
void printResults(double square, double max_square) 
{
    cout<<"------------------------\nCurrent square is"<<square<<endl;
    cout<<"Maximum square is"<<max_square<<"\n------------------------\n";
    return;
}

1 个答案:

答案 0 :(得分:1)

使用参考参数:

void readTriangle(double &param_a, double &param_b, double &param_angle) {
    cout<<"Enter triangle"<<endl;
    cin>>param_a>>param_b>>param_angle;
}

然后你的循环可以使用:

readTriangle(a, b, angle);

您也可以使用指针进行操作:

void readTriangle(double *a_ptr, double *b_ptr, double *angle_ptr) {
    cout<<"Enter triangle"<<endl;
    cin>>*a_ptr>>*b_ptr>>&angle_ptr;
}

你称之为:

readTriangle(&a, &b, &angle);

第二个版本稍微冗长一点,但它更清楚地说明了这些参数是否会被覆盖。