私のプログラムでは、私の2次元配列の下位部分の値を追加しようとしています。私は行と列の3%(モジュラス3)で小さなボックスを選択しています。 (0 [0]、[0] [3]などのようなセルを使用することを意味する) これはボックスの右上に配置して、私たちが[0] [0]で開始した場合、[0-2] [0-2](3x3ボックス)を追加します。私はそれを関数を使って計算しています(関数を使う練習として)。問題は、プログラムがその小さなボックスから最初のセルの値だけを取り込むように見えることです。その小さなボックスの残りの部分をループしてその値を追加しようとすると、値が正しく取得されませんすべて) 私のパラメータが間違っているかどうか、あるいは関数に間違ったパラメータを与えているかどうかを知りたい。 ご協力いただければ幸いです。私の行列(2次元配列)の一部に関数を渡す
//------------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;
}
}
thats great !!その小さな箱に最初の数字だけを出力していることに気がついたが、私はそれらの変更を行うだろう!!ありがとう、非常に感謝します。 –
私は同じ機能の中で特性の測定値( 'issquare')を組み合わせることは良い考えではないと思っています(これらの特性はここでは適用されません)。したがって、そのような概念の混乱(読書と測定)は避けるべきです。 – Walter