我有一個分配訪問值,需要以下內容:爲行和列C++ - 在動態數組
-Take命令行輸入並動態地創建填充有隨機數
- 創建2-d陣列一個名爲find_greatest_product的函數來查找數組中四個相鄰 數字的最大乘積。四個相鄰的數字可以是陣列中游戲「俄羅斯方塊」中發現的形狀 的任何配置。您的功能需要返回最大產品,使用結構開始 位置,形狀和四個數字的方向。
是的,這是純粹用於練習二維數組的完全無用的程序。
我已經創建了我的數組,所以我開始使用最簡單的形狀:盒子。但是,當我嘗試訪問包含隨機數的數組時,產品和因素似乎都是0.任何暗示爲什麼我無法訪問隨機數陣列中的整數來查找產品?相關的代碼位如下。你可以假設這裏沒有複製的所有函數都能正常工作
struct shape {
int highest;
int factors[4];
int startRow;
int startColumn;
} tShape, sShape, iShape, boxShape;
int main(int argc, char* argv[]) {
if(argc == 5) {
for(int i = 1; i < argc; i++) {
rows = getArg(argc, argv, i, compare1);
}
for(int i = 1; i < argc; i++) {
columns = getArg(argc, argv, i, compare2);
}
}
int ** array = new int*[rows];
int i, j;
for (i = 0; i < rows; i++) {
array[i] = new int[columns];
}
create_array(array, rows, columns);
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
cout << array[i][j];
cout << " ";
}
cout << endl;
}
boxProduct(array, rows, columns, boxShape);
cout << boxShape.highest << endl;
for (int i = 0; i < 4; i++) {
cout << boxShape.factors[i];
cout << " ";
}
cout << endl;
return 0;
}
void boxProduct(int *array[], int rows, int columns, shape boxShape) {
int highest = 0;
int product = 0;
for (int i = 0; i < rows - 1; i++) {
for (int j = 0; j < columns - 1; j++) {
product = (array[i][j]*array[i][j+1]*array[i+1][j]*array[i+1][j+1]);
if (product > highest) {
boxShape.highest = product;
boxShape.factors[0] = array[i][j];
boxShape.factors[1] = array[i][j+1];
boxShape.factors[2] = array[i+1][j];
boxShape.factors[3] = array[i+1][j+1];
}
}
}
}
這裏是與基質的樣本輸出端10行×5列:
27 86 4 41 44
17 6 5 40 32
42 58 14 95 53
8 28 95 27 91
63 22 27 49 2
38 37 39 37 76
9 17 14 13 10
10 30 16 67 22
49 10 33 63 5
86 71 86 34 50
0 <- product
0 0 0 0 <- the four factors
您正在修改boxProduct函數中'shape boxShape'的副本,因此看不到更改 – doctorlove