У вас есть несколько проблем в вашем коде:
Ваша функция объявления и определения функции разные 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
вместо i<=br
.
Ваш параметр 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;
}
}
Передан неверный аргумент, вы не можете передать как 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