Ok so i wanna make a code thats gonna print a magic square that works like the one in the picture (https://i.stack.imgur.com/q3vud.jpg) ( which is a 5x5 matrix ) but it is 11x11.Code seems fine to me but unfortunately it doesnt work , can anyone help me ?
int main(int argc, char *argv[]) {
int i, j,k,l;
int a[10][10] = {0} ;
k=5;
l=5;
a[k][l]=1;
for (i=1; i<11; i++) {
if (i%2!=0){
for (j=0; j<i; j++) {
a[k][l+1]=a[k][l] + 1;
l++; }
for (j=0;j<i;j++) {
a[k+1][l]= a[k][l] + 1;
k++; }
}
if (i%2==0){
for (j=0; j<i; j++){
a[k][l-1]= a[k][l] + 1;
l--; }
for (j=0; j<i; j++){
a[k-1][l]= a[k][l] + 1;
k--; }
}
if (i==10){
for (j=0; j<10; j++){
a[k][l+1]=a[k][l] + 1;
l++;
}
}
}
for(i=0; i<11;i++){
for(j=0;j<11;j++){
printf("%d ", a[i][j]); }
printf("\n");
}
return 0;
}
Ok so i fixed it to be a[11][11] ( stupid mistake ) , but it gets printed like that ( https://i.stack.imgur.com/HS2pF.jpg ) , why is that ?