"JustSomeGuy" <no**@nottelling.com> wrote in message
news:FEwvc.654789$Ig.380269@pd7tw2no...
mx = Cols/2;
if ((mx * 2) != Cols) // Odd.
++mx;
}
for (y1=0; y1 < Rows; ++y1)
{
y2 = Rows-1 - y1;
for (x1=0; x1 < mx; ++x1)
{
x2 = Cols-1 - x1;
p = t[y1][x1];
t[y1][x1] = t[y2][x2];
t[y2][x2] = p;
}
}
This code doesn't seem to do the center column of
a matrix whos dimensions are odd on the x dimensions...
Can any one see why? I tried I don't see it...
You're swapping the center column twice.
Here's one solution:
// rotate top half with bottom half
int y1 = 0;
int y2 = Rows-1;
for (; y1 < y2; ++y1, --y2)
{
int x2 = Columns-1;
// swap all columns
for (int x1 = 0; x1 < Columns; ++x1, --x2)
swap( t[y1,x1], t[y2,x2] );
}
// odd number of rows? rotate middle row
if (y1 == y2)
{
int x2 = Columns-1;
// only swap left with right (to prevent swapping twice)
for (int x1 = 0; x1 < x2; ++x1, --x2)
swap( t[y1,x1], t[y1,x2] );
}
-Howard
"All programmers write perfect code.
....All other programmers write crap."
"I'm never wrong.
I thought I was wrong once,
but I was mistaken."