Проблема с возвращением массива в функцию c ++ - PullRequest
0 голосов
/ 08 мая 2018

У меня проблема с возвращаемым массивом в функции. Компилятор говорит:

main.cpp: в функции 'int main ()': main.cpp: 52: 13: ошибка: ожидается Первичное выражение перед токеном ']' main.cpp: В функции 'double Area (Trapec *, int) ': main.cpp: 65: 12: ошибка: ожидается первичное выражение перед токеном ']' return 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 голосов
/ 08 мая 2018

У вас есть несколько проблем в вашем коде:

  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. Передан неверный аргумент, вы не можете передать как 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...