我一直在做一个涉及在c ++中旋转方阵的问题。数组的长度在' len'。但是,这些rotate和flip方法返回一个2d数组,需要2d数组参数。编译器给了我这个错误:
错误:宣布' a'因为多维数组必须具有除第一个之外的所有维度的边界。
然而,数组的大小取决于输入 - 当我有输入' len'并声明方法,它给了我未在此范围内声明的旧变量'问题
差不多,我不能说数组的长度,因为它会根据输入而改变。
有没有办法解决这个问题?
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
class transform{
private:
int len;
public:
bool rot90[][](bool a[][]);
bool rot180[][] (bool a[][]);
bool check (bool a[][], bool b[][]);
bool rot270[][] (bool a[][]);
bool flip[][] (bool a[][]);
};
bool transform::check(bool a[len][len], bool b[len][len]){
for(int h=0; h<len; h++){
for(int w=0; w<len; w++){
if(a[h][w] != b[h][w])
return false;
}
}
return true;
}
bool transform::rot90[len][len] (bool a[len][len]){
bool[len][len] b;
for(int h=0; h<len; h++){
for(int w<0; w<len; w++){
b[w][len-1-h] = a[h][w];
}
}
return b;
}
bool transform::rot270[len][len] (bool a[len][len]){
bool[len][len] b;
for(int h=0; h<len; h++){
for(int w<0; w<len; w++){
b[len-1-w][h] = a[h][w];
}
}
return b;
}
bool transform::flip[len][len] (bool a[len][len]){
bool[len][len] b;
for(int h=0; h<len; h++){
for(int w<0; w<len; w++){
b[h][len-1-w] = a[h][w];
}
}
return b;
}
...代码继续