Dit loop overskriver ud over det dobbelte array.
Følgende:
int matrix[num_stykker-1][num_stykker-1];
...opretter et hukommelses område som kan indeholde 14*14 = 196 integers.
Men følgende loop:
for( i=0; i<num_stykker; i++ ) {
for (j = 0; j < num_stykker; j++) {
...
}
}
...gennemløbes 15*15=225 gange og skriver derfor ud af matricen.
Følgende virker:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include <memory.h>
#define num_stykker 15
int main() {
int c395[] = {17, 19, 7, 24, 16, 1, 23, 18, 29, 22, 13, 10, 4, 6, 5, 17, -1};
int i, j;
int matrix[num_stykker][num_stykker];
for( i=0; i<num_stykker; i++ ) {
printf("c395[%i]: %2.1i\n",i, c395[i]);
for( j=0; j<num_stykker; j++ )
matrix[i][j] = 0;
}
for( i=0; i<num_stykker; i++ ) {
printf("c395[%i]: %2.1i\n",i, c395[i]);
}
return 0;
}
Indlæg senest redigeret d. 08.01.2009 13:09 af Bruger #2695