Как поменять код, чтобы при заполнении двумерного массива распознавалась переменная int и не запрашивало указатель?
#include <random>
#include <iostream>
using namespace std;

void zxc(int* arr, const int row, const int col)
{

	srand(time(NULL));
	for (int f = 0; f < row; f++)
	{
		for (int j = 0; j < col; j++)
			arr[f* col + j] = rand() % 10;
	}

}

void qwe(int* arr, const int row, const int col)
{

	for (int i = 0; i < col; i++) {
		for (int f = 0; f < row; f++)
			cout << arr[f * col + i] << "\t";
		cout << endl;
	}
}

//qwe и zxc это самые удачные названия для функции, из названия сразу ясно что эти функции делают.

int main()
{
	const int row = 5;
	const int col = 7;
	int arr[row * col];
	zxc(arr, row, col);
	qwe(arr, row, col);
}
программисты C++ таким не занимаются, это больше похоже на C.
вот как выглядит нормальный код на C++:
#include <random>
#include <iostream>
#include <vector>
using namespace std;

void zxc(vector<vector<int>>& arr, const int row, const int col)
{
	srand(time(NULL));
	arr.resize(row);
	for (auto& line : arr)
	{
		line.resize(col);
		for (auto& x: line)
		{
			x = rand() % 10;
		}
	}

}

void qwe(const vector<vector<int>>& arr, const int row, const int col)
{
	for (const auto& line : arr)
	{
		for (const auto& x : line)
		{
			cout << x << "\t";
		}
		cout << endl;
	}
}

int main()
{
	const int row = 5;
	const int col = 7;
	vector<vector<int>> arr;
	zxc(arr, row, col);
	qwe(arr, row, col);
}
простые массивы имеют массу неприятностей, связанных с НЕгибкостью кода. если вы пишете на плюсах, познакомьтесь с векторами.
!!!!!!!!!извиняюсь, предыдущая версия была с ошибками, я отредачил
У тебя в обе функции передаются три числа, а должно (указатель на указатель на целое, целое, целое)