将值从一个函数传递到另一个C ++
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将值从一个函数传递到另一个C ++相关的知识,希望对你有一定的参考价值。
大家好。我有一个任务来创建两个函数:其中一个是用随机值“填充”数组,然后将第二个函数设置为int,第二个函数我必须使用相同的数组,选择一行并找到该行的min元素。但是问题是我不知道如何将值从一个函数传递给另一个函数。这是我的代码。请注意,我是编程的超级入门者,因此,如果您以一种可以理解的方式进行解释,我将非常高兴。
#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");
}
用dev c ++编写
fillarray(arr, rows, cols);
就像您到目前为止一样。现在,您已经全部填写了数组arr。minarray不在乎这是怎么发生的。因此,请不要通过您的填充方法。将其传递给数组。
minarray(cols, arr[z]);
您不需要传递整个数组-只需传递相关行。您还通过了宽度。并更改minarray的定义:
void minarray(int length, int[] array)
现在,您的minarray本身需要更改。首先,摆脱if-check。您现在不需要传递行号,但是您确实需要传递作为长度的列数。然后您的for循环如下:
for (int index = 0; index < length; ++index) { if (array[index] < min) { min = array[index]; } }
所以,总结一下:
- Main声明数据并调用您的两个方法。
- fillarray填充数组。从头开始以现有方式调用它。
- minarray在一行上打印最小值。也从main调用它,传入数组,而不是填充它的方法。
但是,您还有一个问题。 fillarray将数组大小硬编码为5x5,但是main使用定义的常量。我会将那些内容移到文件的顶部,并在两个地方都使用它们。
移到顶部,在任何#includes下面:
const int rows = 5;
const int cols = 5;
定义fillarray:
void fillarray(int arr[rows][cols]) {
当您从main调用它时:
fillarray(arr);
fillarray
具有冗余参数cols
,因为从第一个参数int arr[5][5]
的声明中知道此数字。可以这样声明函数
void fillarray(int arr[5][5], int rows )
如果未在函数中填充整个数组,则可以提供参数cols
。您已经通过此调用填充了数组
fillarray ( arr, rows, cols );
该功能已执行其任务。因此,您在尝试时无需再次引用该函数
minarray(z, fillarray)
函数minarray
可以这样声明:
void minarray( const int arr[], size_t n );
并称为
minarray( arr[z], cols );
初步检查z小于5。或者可以这样声明
void minarray( const int arr[][5], size_t n, size_t row );
并称为
minarray( arr, rows, z );
请注意,有一种标准算法std::min_element
允许在数组中查找最小元素。要用值填充数组,可以使用标准算法std::generate
。
以上是关于将值从一个函数传递到另一个C ++的主要内容,如果未能解决你的问题,请参考以下文章