작은 2D 배열의 배열을 2 차원 배열 : 나는 chunksize 영역 CS 주어진 구조체 MATRIX 의 배열로 2 차원 배열 (구조체 MATRIX)를 분할 할분할을 감안할 때 C
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
: 대답은 여기에
Seg[0]:
1 2
1 2
1 2
Seg[1]:
3 4
3 4
3 4
....
Seg[3]:
7 8
7 8
7 8
것 CS 2, 을로 내 매트릭스 구조체되어 가정
typedef struct MATRIX {
int nrow;
int ncol;
int **element;
} MATRIX;
,369 1,363,210
여기가 seperates 그 함수이다 PRINTM 기본적 행렬을 출력하는 것이
가void SegmentMatrix(MATRIX input,MATRIX* segs,int Chunksize, int p) {
int i,j,r;
//Allocate segs
for (i = 0; i<p;i++)
{
CreateMatrix(&(segs[i]),input.nrow ,Chunksize,0);
}
//Now Copy the elements from input to the segs
//where seg0 takes from 0 to cs cols of a, and all their rows, and seg1 takes from cs to 2cs ...
printf("Stats:\n\t P: %d\t CS: %d\n",p,Chunksize);
for (r = 0; r<p; r++) {
for (i = 0; i<input.nrow;i++) {
for (j = r*Chunksize; j<r*Chunksize+Chunksize-1; j++) {
//I tried (&(segs[r]))->element... Doesn't work, produces wrong data
segs[r].element[i][j] = input.element[i][j];
}
}
PRINTM(segs[r]);
}
}
참고는 & (다음 입력 segs [R] .nrow하고을 NcoI 및 CreateMatrix 걸립니다 확인하여 제한을 알고 행 수, 열의 수, filltype) 및 내부에서 malloc.
filltype:
0- generates zeroth matrix
1- generates identity
else A[i][j] = j; for simplicity
문제는 내가 [I], 그들은 모두 기본 CreateMatrix에 의해 주어진 값, 그리고 새로 추가 된 값으로 내려와 행렬의 Segs를 인쇄하는 경우이다.
설명 : 너희들이 SegmentMatrix 함수의 마지막 PRINTM을 선택하면, 그래서 그것이 행렬 루프에 대한이 발생하지 않은 것처럼, 일명, 내가 삭제할 수를 출력 좋아 루프에 대한 동일한 출력을 얻을 것입니다. . 내가
Segs[r].element[i][j] = input.element[i][j];
어디에서 PRINTM에 전화를 걸어 잘못된 입력을 표시합니까? 나는 위의 코드에서 말 유형 문제 이전에 장바구니가 아닌지 확인하기 위해 전화를 걸 었는지보고 싶습니다. –
SegmentMatrix에서 마지막 문장을 보면 PRINTM을 볼 수 있습니다. for 루프 전체가 발생하지 않는 것처럼 segs의 기본값을 보여줍니다. – zellwwf
@MichaelDorgan 희망 설명 : – zellwwf