Не работает функция в массив С++

Задача: написать функцию нахождения максимума и минимума в массиве. Ошибка G[i] 18 строчка а точнее funct(i, G[i]);.

Код програми:

#include <iostream>
double funct(int i, float G[], float min, float max)
{
    if (G[i] > max) max = G[i];
    if (G[i] < min) min = G[i];
}
int main()
{
    float min, max, G[8]{ 1, 5, 7, -10, 22, 4, 6, 6 };
    int i = 0;
    min = max = G[0];
    for (i = 0; i < 8; i++)
    {
        funct(i, G[i], min, max);
    }
    std::cout << "min : " << min << "\n" << "max : " << max << std::endl;
    return 0;
}

Ответы (1 шт):

Автор решения: KoVadim

Кол-во ошибок такое, что даже не знаю с чего начать.

Начнем с функции

double funct(int i, int G[])
{
    double min, max;
    int G[N]{ 1,2,3,4,5,6,7,8 };
    if (G[i] > max) max = G[i];
    if (G[i] < min) min = G[i];
}

в функцию передаете массив G, но при этом его ещё раз объявляете внутри, потом используете не инициализированные переменные min/max. Плюс ко всему, эта функция должна что то возвращать, но в коде этого нет.

Потом, эта функция используется, но так как будто Вы рассчитываете, что main как то узнает о внутренностях функции funct.

Давайте поудаляем все лишнее (define, using namespace). а его там ой как много и все будет работать

#include <iostream>

int main()
{
    double min, max;
    const int N = 8;
    int i = 0, G[N]{ 1, 5, 7, -10, 22, 4, 6, 6 };
    min = max = G[0];
    for (i = 0; i < 8; i++)
    {
        if (G[i] > max) max = G[i];
        if (G[i] < min) min = G[i];
    }
    std::cout << "min : " << min << "\n" << "max : " << max << std::endl;
    return 0;
}

Но если очень-очень хочется функцию, можно вынести все.

#include <iostream>

void find_min_max()
{
    double min, max;
    const int N = 8;
    int i = 0, G[N]{ 1, 5, 7, -10, 22, 4, 6, 6 };
    min = max = G[0];
    for (i = 0; i < 8; i++)
    {
        if (G[i] > max) max = G[i];
        if (G[i] < min) min = G[i];
    }
    std::cout << "min : " << min << "\n" << "max : " << max << std::endl;
}

int main()
{
    find_min_max();
    return 0;
}
→ Ссылка