Przekazywanie tablicy do funkcji

0
#include <iostream>
#include <cmath>
using namespace std;

const double* aver(const double* arr,
    size_t size, double& average);

int main()
{
    double arr[] = { 1, 2, 3, 4, 5, 7 };
    double cos;
    size_t size = sizeof(arr) / sizeof(arr[0]);
    double average = 0;
    //const double* p = aver(arr, size, average);
    //cout << *p << " " << average << endl;

    double suma;
    //wyliczamy sume
    for (int i = 0; i < size; i++) {
        suma += arr[i];
    }
    average = suma / 6;
    cout << average << endl;
    double c;
    c = abs(average - arr[0]);
    cout << c;
}

const double* aver(const double& arr, size_t size, double& average)
{
    double a, o1, o2, o3, o4, o5, o6;
    a = abs(average - arr[0]);
    o1 = abs(average - *arr[1]);
    o2 = abs(average - &arr[2]);
    o3 = abs(average - arr[3]);
    o4 = abs(average - arr[4]);
    o5 = abs(average - arr[5]);
    o6 = abs(average - arr[6]);
}

W funkcji main działa ale jak próbuje przekazać do funkcji to dostaje błąd
declaration of 'arr' as array of references|

Kompletnie zgłupiałem i nie wiem jak to przekazać ;[

1

Na pewno piszesz o tym samym kodzie, który wkleiłeś? Tutaj nie deklarujesz nigdzie tablicy referencji.

1

Twoja funkcja powinna wyglądać tak:

const double *aver(const double arr[], size_t size, double *average) { ... }

Później możesz dostać się do poszczególnych elementów tak jak w normalnej tablicy (tj. arr[0], arr[1] itd.).

Aby przekazać tablicę do funkcji używasz po prostu jej nazwy:

aver(arr, size, &average);
0
kq napisał(a):

Na pewno piszesz o tym samym kodzie, który wkleiłeś? Tutaj nie deklarujesz nigdzie tablicy referencji.

próbuje dostać się do tablicy z main:

double arr[] = { 1, 2, 3, 4, 5, 7 };
1

W żaden sposób nie odpowiedziałeś na moje pytanie.

declaration of 'arr' as array of references|

Której linii to dotyczy?

0
kq napisał(a):

W żaden sposób nie odpowiedziałeś na moje pytanie.

declaration of 'arr' as array of references|

Której linii to dotyczy?

||=== Build: Debug in Doppowturki (compiler: GNU GCC Compiler) ===|
G:\Projekty c++\Doppowturki\main.cpp||In function 'int main()':|
G:\Projekty c++\Doppowturki\main.cpp|19|warning: comparison between signed and unsigned integer expressions [-Wsign-compare]|
G:\Projekty c++\Doppowturki\main.cpp|11|warning: unused variable 'cos' [-Wunused-variable]|
G:\Projekty c++\Doppowturki\main.cpp||In function 'const double* aver(const double&, size_t, double&)':|
G:\Projekty c++\Doppowturki\main.cpp|35|error: invalid types 'const double[int]' for array subscript|
G:\Projekty c++\Doppowturki\main.cpp|36|error: invalid types 'const double[int]' for array subscript|
G:\Projekty c++\Doppowturki\main.cpp|37|error: invalid types 'const double[int]' for array subscript|
G:\Projekty c++\Doppowturki\main.cpp|38|error: invalid types 'const double[int]' for array subscript|
G:\Projekty c++\Doppowturki\main.cpp|39|error: invalid types 'const double[int]' for array subscript|
G:\Projekty c++\Doppowturki\main.cpp|40|error: invalid types 'const double[int]' for array subscript|
G:\Projekty c++\Doppowturki\main.cpp|41|error: invalid types 'const double[int]' for array subscript|
G:\Projekty c++\Doppowturki\main.cpp|44|warning: no return statement in function returning non-void [-Wreturn-type]|
||=== Build failed: 7 error(s), 3 warning(s) (0 minute(s), 0 second(s)) ===|
1

Jak widzisz, nie ma nic takiego. Podawanie błędów do innego kodu, niż ten o który pytasz mija się z celem.

0
kq napisał(a):

Jak widzisz, nie ma nic takiego. Podawanie błędów do innego kodu, niż ten o który pytasz mija się z celem.

Wysyłam scr bo widzę że mi nie wierzysz ;[

1

double& arr - to nie jest tablica.

1

I gdzie tam masz declaration of 'arr' as array of references|?

1 użytkowników online, w tym zalogowanych: 0, gości: 1