Как использовать значение return в функции

77
30 марта 2022, 12:10

Написать функцию, которая принимает указатель на массив и количество элементов и возвращает минимальный элемент массива (значение и номер элемента).

Я не понимаю каким образом я вернув номер элемента должен его вывести из массива. Можете просто объяснить? не обязательно расписывать ответ

int decision(const int size,int *pmas) {
    int pos = pmas[0];
    for (int i = 0; i < size; i++) {
        if (pmas[i] < pos) {
            pos = pmas[i];
        }
    }
    return pos;
}
void main() {
    setlocale(LC_ALL, "Rus");
    const int size = 10;
    int mas[size];
    srand(time(NULL));
    int* pmas = mas;

    for (int i = 0; i < size; i++) {
        mas[i] = rand() % 10;
        cout << mas[i] << " ";
    }
    cout << endl;
    cout << "Номер минимального индекса массива: " << decision(size, pmas);
Answer 1

Попробуйте тут искать не значение, а индекс:

int decision(const int size,int *pmas) {
    int pos =0, min = pmas[0];
    for (int i = 1; i < size; i++) {
        if (pmas[i] < min) {
            min = pmas[pos = i];
        }
    }
    return pos;
}

тогда будет легко и просто вывести и индекс, и значение:

int pos = decision(size, pmas);
cout << "Индекс минимального значения массива: " << pos << "\n";
cout << "Минимальное значение массива: " << pmas[pos] << "\n";
Answer 2

При определении функции название переменного, таких как int pos, только является подсказкой о том, что вы намерены там хранить. Но одно только название не дает гарантию, что там действительно сохранено ожидаемое значение. В вашем определении функции, переменная(обьект) pos вовсе не хранит позицию минимального элемента, а хранит значение минимального элемента. Чтобы вызывающая функция могла использовать значение, определяемое в вызываемой функции, нужно:

вернуть из функции это значение. В данном вернуть значение позиции (смотрите ответ от Harry)

Или

предположив, что вызывающая функция обязательно сохранит в каком нибудь обьекте это значение, обеспечить передачу в вызываемую функцию, ссыльку на этот обьект:

int decision(const int size,int *pmas, int& index) {
     //...
     index = //определить значение позиции
     min_element = //значение минимального элемента
     return min;
}

Тут мы храним индекс в переменной, переданной функции по ссыльке, и таакже возвращаем из функции значение самого элемента. Тогда вызывающая функция(программа) может быть записан так:

int pos; 
cout << "Минимальное значение массива: "
     << decision(size, pmas, pos) 
     << "\nИндекс минимального значения массива: " << pos;
READ ALSO
Повернуть jpeg изображение на 90 градусов

Повернуть jpeg изображение на 90 градусов

Имеется бинарный буффер jpeg:

90
Совпадение имен

Совпадение имен

Подскажите, пожалуйста, что Стандарт говорит про следующую ситуацию:

78
Ошибка: QSqlDatabase: QMYSQL driver not loaded на Linux (C++)

Ошибка: QSqlDatabase: QMYSQL driver not loaded на Linux (C++)

В попытках поставить драйвер, перерыл пол-интернетаВ качестве БД использую MySql, но обертка поверх нее XAMPP

69
Условие не видит Ajax результат

Условие не видит Ajax результат

Отправляю определенный пост запрос на сервер и исходя из отправленных данных получаю ответ от сервера Success либо Updated

175