"JustSomeGuy" <(EMail Removed)> 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 = Rows1  y1;
>
> for (x1=0; x1 < mx; ++x1)
> {
> x2 = Cols1  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 = Rows1;
for (; y1 < y2; ++y1, y2)
{
int x2 = Columns1;
// 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 = Columns1;
// 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."
