我在函数中返回数组有问题。 编译器说:
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[];
}
答案 0 :(得分:1)
您的代码中有几个问题:
您的函数声明和定义函数不同double Area(Trapec);
和double Area(Trapec p[], int br)
是两个不同的函数。
循环结束条件错误(for(int i=0;i<=br;i++)
),在这种情况下,它会比你输入的更多+1次迭代,必须是for(int i=0;i<br;i++)
,i<br
而不是{ {1}}。
你的参数i<=br
(p
)接受数组,编译器也接受它作为指针,所以不需要返回值,p会改变传递数组的所有数据,改变代码double Area(Trapec p[], int br)
至:
Area(...)
传递参数错误,你不能像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
。
所以最后你的代码看起来像是:
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;
}
}