在函数 c++ 中返回数组时出现问题

Issue with returning array in function c++

本文关键字:问题 数组 返回 函数 c++      更新时间:2023-10-16

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

main.cpp:在函数 'int main((' 中: main.cpp:52:13: 错误: 预期 "]"标记 main.cpp 之前的主要表达式:在函数 'double 面积(Trapec*, int(': 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. 函数声明和定义函数是不同的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而不是i<=br

  3. 你的参数p(double Area(Trapec p[], int br)(接受数组,编译器也接受它作为指针,所以不需要返回值,p将更改传递数组的所有数据,将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; } }

  4. 传递
  5. 参数是错误的,你不能像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;
}
}

当输入测试数据输出如下所示时:

Vuvedete broq na trapecite : 2
Vuvedete a : 1
Vuvedete b : 1
Vuvedete h: 1
Vuvedete a : 2
Vuvedete b : 2
Vuvedete h: 2
Program ended with exit code: 0