在我的程序即時通訊嘗試添加我的2D數組的一個子部分的值,從9乘9矩陣的3乘3的小方塊。我選擇這個小盒子的行和列的百分比除以3(模數3)。 (這意味着它需要像[0] [0],[0] [3]等等) 這樣的單元格,我希望這些單元格是框的右上角,然後再添加2行和列以使其適用於如果我們從[0] [0]開始,我們將添加[0-2] [0-2](3乘3箱)。我通過函數來計算(作爲使用函數的練習)。問題在於程序似乎只從該小框中獲取第一個單元格的值,並且當我嘗試在該小框的其餘部分上循環並添加它們的值時,它不會正確地(或在所有) 我想知道如果我的參數是錯誤的,或者即時通訊給功能錯誤的參數。 任何幫助,將不勝感激。傳入一個函數的一部分我的矩陣(二維數組)
//------------including section-----------
#include <iostream>
#include <cstdlib>
//------------using section---------------
using std::cin;
using std::cout;
using std::endl;
//-----our constants and variables---------
const int N=3; //initializing our rows and cols as constants
int counter=0, arr[N*N][N*N];
int sumofrow=0, sumofcol=0,sumsquare=0;
//-------prototypes----------------
void READ_MATRIX(int arr[][N*N]);
bool issquare(int arr[][N*N],int row, int col);
//-------main-------------
int main()
{
//calling on the function to input our matrix
READ_MATRIX(arr);
//checking what functions returned
if(counter==0)
cout<<1;
else
cout <<0;
return EXIT_SUCCESS;
}
//-----functions--------
//----readmatrix------
void READ_MATRIX(int arr[][N*N])
{
for (int row=0; row<N*N; row++)
for (int col=0; col<N*N; col++) {
cin >> arr[row][col];
if (row%3==0&&col%3==0)
issquare(arr, row, col);
}
}
//---------issquare-------------
bool issquare(int arr[][N*N],int row, int col)
{
sumsquare=0;
for (int r=0;r<3;r++) //trying to loop on values of array
for (int c=0;c<3;c++)//trying to loop {
//r+row(because row is passed into the function at 0,3,6)
//same for col.
sumsquare+=arr[r+row][c+col]; // this is where it goes wrong
}
//checking to see if sum reached a certain value..
if (sumsquare==45)
return true;
else {
counter++;
return false;
}
}
這是偉大的!我意識到它只是輸出該小盒子中的第一個數字,但我會做出這些改變!謝謝老兄,非常感謝。 –
我不認爲在相同函數內將讀數與屬性測量('issquare')結合是一個好主意(除非這些屬性對於讀取更多數據很重要,這在這裏不適用)。因此,應該避免這種概念混亂(閱讀和測量)。 – Walter