이진 데이터의 2 차원 배열 (10x10)을 입력으로 사용하고 각 0 또는 1을 0 또는 1로 대체하여 배열의 각 행을 압축하는 compress2d() 함수가 있습니다. 1과 발생 횟수를 표시하고 압축 결과를 각 행에 인쇄합니다.배열의 각 행을 압축
입력 :
1 1 1 1 1 0 0 0 0 0
0 0 0 0 0 1 1 1 1 1
1 1 1 1 1 0 0 0 0 0
0 0 0 0 0 1 1 1 1 1
1 1 1 1 1 0 0 0 0 0
0 0 0 0 0 1 1 1 1 1
1 1 1 1 1 0 0 0 0 0
0 0 0 0 0 1 1 1 1 1
1 1 1 1 1 0 0 0 0 0
0 0 0 0 0 1 1 1 1 1
원하는 출력 :
1 5 0 5
0 5 1 5
1 5 0 5
0 5 1 5
1 5 0 5
0 5 1 5
1 5 0 5
0 5 1 5
1 5 0 5
0 5 1 5
하지만 점점 오전 :
예를 들어, 데이터 0,011,100,011와 행 02130312.등으로 압축 될 수있다
1 5
1 4
1 4
1 4
.
.
.
.
1 4
void compress2D(int data[SIZE][SIZE])
{
int i,j=0, target, count=1, location=1;
for (i = 0; i < SIZE; i++) {
for (j = 0; j < SIZE; j++) {
if (data[i][j] == data[i][j+1] && (j+1) < 10)
count++;
else {
data[i][location] = count;
data[i][location+1] = data[i][j+1];
count = 1;
location +=2;
}
}
data[i][location] = '\0';
location = 1;
count = 0;
}
for (i = 0; i < SIZE;i++) {
for (j = 0; data[i][j] != '\0'; j++) {
printf("%d ", data[i][j]);
}
printf("\n");
}
}
하면이 시도 ericlippert.com/2014/03/05/how-to-debug-small-programs/ 및 https://stackoverflow.com/questions/2069367/how-to-debug-using-gdb – Yunnosch
어떻게 압축하겠습니까 '1010101010' ? 당신의 논리에 따르면 실제로 이것을 다음과 같이 확장했을 것입니다 :'11011101110111011101' (<순서가 완벽하지는 않지만 생각이납니다.) – babon
'data [i] [j +1]'과'j == SIZE-1'을 사용합니다. – Barmar