在函数c ++中返回数组的问题

时间:2018-05-08 20:32:40

标签: c++ arrays function

我在函数中返回数组有问题。 编译器说:

  

main.cpp:在函数' int main()':main.cpp:52:13:错误:预期   在']'之前的初级表达token main.cpp:在函数' double中   区域(Trapec *,int)&#39 ;:main.cpp:65:12:错误:预期   在']'之前的初级表达令牌返回p [];

这是我的代码:

#include <iostream>
using namespace std;

struct Trapec
{
    double a=0;
    double b=0;
    double h=0;
};

double Area(Trapec);   

int main()
{
    int br;
    cout<<"Vuvedete broq na trapecite : ";
    cin>>br;
    // double S=0,min=0;
    //  double areas[50];
    Trapec p[50];
    for(int i=0;i<=br;i++){
        cout<<"Vuvedete a : ";
        cin>>p[i].a;
        cout<<"Vuvedete b : ";
        cin >>p[i].b;
        cout<<"Vuvedete h: ";
        cin>>p[i].h;
    }

    Area(p[]);

    return 0;
}

double Area(Trapec p[], int br)
{
    double S=0;
    double areas[50];
    for(int i=0;i<=br;i++){
        S=p[i].a + p[i].b + p[i].h;
        areas[i] = S;
    }
    return p[];
}

1 个答案:

答案 0 :(得分:1)

您的代码中有几个问题:

  1. 您的函数声明和定义函数不同double Area(Trapec);double Area(Trapec p[], int br)是两个不同的函数。

  2. 循环结束条件错误(for(int i=0;i<=br;i++)),在这种情况下,它会比你输入的更多+1次迭代,必须是for(int i=0;i<br;i++)i<br而不是{ {1}}。

  3. 你的参数i<=brp)接受数组,编译器也接受它作为指针,所以不需要返回值,p会改变传递数组的所有数据,改变代码double Area(Trapec p[], int br)至:

    Area(...)

  4. 传递参数错误,你不能像void Area(Trapec p[], int br) { double S=0; double areas[50]; for(int i=0; i<=br ;i++) { S=p[i].a + p[i].b + p[i].h; areas[i] = S; } }那样传递,并且必须有第二个参数Area(p[]);。您需要传递简单的br

  5. 所以最后你的代码看起来像是:

    Area(p,br);

    当输入测试数据输出如下:

    struct Trapec
    {
        double a=0;
        double b=0;
        double h=0;
    };
    
    void Area(Trapec p[], int br);
    
    int main()
    {
        int br;
        cout<<"Vuvedete broq na trapecite : ";
        cin>>br;
    
        Trapec p[50];
        for(int i=0;i<br;i++){
            cout<<"Vuvedete a : ";
            cin>>p[i].a;
            cout<<"Vuvedete b : ";
            cin >>p[i].b;
            cout<<"Vuvedete h: ";
            cin>>p[i].h;
        }
    
        Area(p, br);
    
        return 0;
    }
    
    void Area(Trapec p[], int br)
    {
        double S=0;
        double areas[50];
        for(int i=0; i<=br ;i++)
        {
            S=p[i].a + p[i].b + p[i].h;
            areas[i] = S;
        }
    }