行列を関数に渡すことはできません。問題は"列 "と関係があります。しかし私は確信していません。 ポインタやアドレスは使用しないでください。 私のコードの品質に関するコメントがありましたら、教えてください! https://s12.postimg.org/5iuoci4bx/Untitled.png行列を関数に渡します。 "int(*)[columns]"から "int" [-fpermissive]への無効な変換 "
[#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <iostream>
#include <time.h>
#include <stack>
void random_create(void);
int random_eval(const int, int, int);
using namespace std;
int main() {
random_create();
system("pause");
}
void random_create (void)
{
const int Low = 0, High = 1000; unsigned int rows, columns;
cout<<"Number of rows = "; cin>>rows;
cout<<"Number of columns = "; cin>>columns;
int a[rows][columns];
srand((unsigned)time(NULL));
cout<<"Randomly generated matrix of size "<<rows<<":"<<columns;
for (int i = 0; i<rows; i++){
cout<<endl;
for (int j = 0; j<columns; j++){
a[i][j] = Low + rand() % (High - Low + 1);
cout<<a[i][j]<<" ";
}
cout<<endl;
}
random_eval (a, rows, columns);
}
int random_eval(const int array, int rows, int columns){
std::stack<int> stackMin;
std::stack<int> stackMax;
stackMin.push(100000);
stackMax.push(0);
for (int i=0; i<rows; i++){
for (int j = 0; j<columns; j++){
if (array[i][j]> stackMax.top()){
stackMax.pop();
stackMax.push(array[i][j]);
}
else if (array[i][j]<stackMin.top()){
stackMin.pop();
stackMin.push(array[i][j]);
}
}
}
cout<<"The biggest element in this array is "<<stackMax.top()<<endl;
cout<<"The smallest element in this array is "<<stackMin.top()<<endl;
}
を使用すると、コードを見てみたいと考えてあなたは投稿しました。奇妙な、コンパイル不可能なものがたくさんあります。 – user4581301
あなたは正しいです、teサイトと関係があります。修正する –
まず、 'int [N]'も 'int [N1] [N2]'も 'int'でも' int'にも変換できません。 'template int func(int(&arr)[Rows] [Cols])'のようにテンプレートを渡すのが最も簡単です。第2に、C++プログラムでは、自動ストレージC配列のサイズをコンパイル時に指定する必要があります。ランタイム時にディメンションを指定する場合は、 'random_create()'は 'new'を使用して動的配列を作成する必要があります。おそらく 'std :: vector'を見たり、独自のクラスを作るのでしょうか? –