Search code examples
c++function-declaration

Passing value from one function to another C++


I'm writing two functions: one of them is for "filling" array with random values and int the second function I have to use the same array, choose one row and find the min element of that row.

But the problem is that I don't know how to pass values from one function to another.

Here is my code:

#include <cstdlib>
#include <ctime>
#include <iostream>
using namespace std;

void fillarray(int arr[5][5], int rows, int cols) {
    cout << "Static Array elements = \n\n" << flush;

    for(int i = 0; i < rows; ++i) {
        cout << "Row " << i << "  ";
        for(int j = 0; j < cols; ++j) {
            arr[i][j] = rand() % 10;
            cout << arr[i][j] << " " << flush;
        }
        cout << endl;
    }
    cout << " \n\n";
}

void minarray(int a, void fillarray) { // don't know what to write here

there:
    int min = INT_MAX; // Value of INT_MAX is 2147483648.

    if(a > 4) {
        cout << "Invalid input! " << endl;
        goto there;
    }

    for(int counter = 0; counter < 5; ++counter) {
        if(arr[a][counter] < min) min = arr[a][counter];
    }
    cout << "Minimum element is " << min << endl;
}
int main() {
    int z;

    srand(time(NULL));
    const int rows = 5;
    const int cols = 5;
    int arr[rows][cols];
    fillarray(arr, rows, cols);
    cout << "Enter the number of row: ";
    cin >> z;
    minarray(z, fillarray) 
    system("PAUSE");
}

Solution

  • For starters the function fillarray has redundant parameter cols because this number is known from the declaration of the first parameter int arr[5][5].

    Th function can be declared like

    void fillarray(int arr[5][5], int rows )
    

    You could supply the parameter cols in case when not the whole array is filled in the function.

    You already filled the array by this call

    fillarray ( arr, rows, cols );
    

    The function performed its task. So there is no need to reference the function one more time as you are trying

    minarray(z, fillarray)
    

    The function minarray can be declared either like

    void minarray( const int arr[], size_t n );
    

    and called like

    minarray( arr[z], cols );
    

    with a preliminary check that z is less than 5.

    Or it can be declared like

    void minarray( const int arr[][5], size_t n, size_t row );
    

    and called like

    minarray( arr, rows, z );
    

    Pay attention to that there is the standard algorithm std::min_element that allows to find minimum element in an array. And to fill an array with values you can use the standard algorithm std::generate.

    And each function should do only one task. For example the function fillarray should silently fill the array with values. To output the array you could write a separate function.