#include <stdio.h>
void spiral(int n,int m,int arr[][m])
{
int top = 0,
right = m - 1,
bottom = n - 1,
left = 0,
k;
while( top <= bottom && left <= right )
{
//print top row
for ( k = left; k <= right; k++ )
{
}
++top;
//print right column
for( k = top; k <= bottom; k++ )
{
}
--right;
//print bottom row
for( k = right; k >= left; k-- )
{
}
--bottom;
//print left column
for( k = bottom; k >= top; k-- )
// this was wrong ^^^^^^ in OP's code
{
}
++left;
}
}
int main(void) {
int rows = 4, cols = 5;
int board[rows][cols];
for ( int i = 0; i < rows; ++i ) {
for ( int j = 0; j < cols; ++j ) {
board[i][j] = 1 + i*cols + j;
}
}
printf("\nSpiral printing:\n"); spiral(rows,cols,board);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp2b2lkIHNwaXJhbChpbnQgbixpbnQgbSxpbnQgYXJyW11bbV0pCnsKCWludCB0b3AgPSAwLAkJCQoJCXJpZ2h0ID0gbSAtIDEsCQkKCQlib3R0b20gPSBuIC0gMSwJCQoJCWxlZnQgPSAwLCAKCQlrOyAgCgoJd2hpbGUoIHRvcCA8PSBib3R0b20gICYmICBsZWZ0IDw9IHJpZ2h0ICkKCXsKCQkvL3ByaW50IHRvcCByb3cKCQlmb3IgKCBrID0gbGVmdDsgayA8PSByaWdodDsgaysrICkKCQl7CgkJCXByaW50ZigiJWQgICIsYXJyW3RvcF1ba10pOwoJCX0KCQkrK3RvcDsKCgkJLy9wcmludCByaWdodCBjb2x1bW4KCQlmb3IoIGsgPSB0b3A7IGsgPD0gYm90dG9tOyBrKysgKQoJCXsKCQkJcHJpbnRmKCIlZCAgICIsYXJyW2tdW3JpZ2h0XSk7CgkJfQoJCS0tcmlnaHQ7CgoJCS8vcHJpbnQgYm90dG9tIHJvdwoJCWZvciggayA9IHJpZ2h0OyBrID49IGxlZnQ7IGstLSApCgkJewoJCQlwcmludGYoIiVkICAgIixhcnJbYm90dG9tXVtrXSk7CgkJfQoJCS0tYm90dG9tOwoKCQkvL3ByaW50IGxlZnQgY29sdW1uCgkJZm9yKCBrID0gYm90dG9tOyBrID49IHRvcDsgay0tICkKCQkvLyB0aGlzIHdhcyB3cm9uZyBeXl5eXl4gaW4gT1AncyBjb2RlCgkJewoJCQlwcmludGYoIiVkICAgIixhcnJba11bbGVmdF0pOwoJCX0KCQkrK2xlZnQ7Cgl9Cn0KCmludCBtYWluKHZvaWQpIHsKCWludCByb3dzID0gNCwgY29scyA9IDU7CglpbnQgYm9hcmRbcm93c11bY29sc107CgkKCXByaW50ZigiT3JpZ2luYWw6XG4iKTsKCWZvciAoIGludCBpID0gMDsgaSA8IHJvd3M7ICsraSApIHsKCQlmb3IgKCBpbnQgaiA9IDA7IGogPCBjb2xzOyArK2ogKSB7CgkJCWJvYXJkW2ldW2pdID0gMSArIGkqY29scyArIGo7CgkJCXByaW50ZigiJWQgIiwgYm9hcmRbaV1bal0pOwoJCX0KCQlwcmludGYoIlxuIik7Cgl9CglwcmludGYoIlxuU3BpcmFsIHByaW50aW5nOlxuIik7CglzcGlyYWwocm93cyxjb2xzLGJvYXJkKTsKCXJldHVybiAwOwp9Cg==