[M-10]
Write a function that clears to zero all the edge elements of
an MxN matrix.
Those are the elements that are in row 0, column 0, row M-1,
or column N-1.
For example:
Original: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 Edge Zeroed: 0 0 0 0 0 0 0 0 0 0 0 11 12 13 14 15 16 17 18 0 0 21 22 23 24 25 26 27 28 0 0 31 32 33 34 35 36 37 38 0 0 0 0 0 0 0 0 0 0 0
Here is a testing framework:
#include <stdio.h>
#include <stdlib.h>
void zeroEdges ( int nrows, int ncols, int x[nrows][ncols] )
{
. . .
}
/* Generate a random integer min < = r < = max */
int randInt( int min, int max )
{
return rand()%(max-min+1) + min ;
}
void fill2Drandom( int nrows, int ncols, int x[nrows][ncols], int low, int high )
{
int r, c;
for ( r=0; r<nrows; r++ )
{
for ( c=0; c<ncols; c++ )
x[r][c] = randInt( low, high );
}
}
void print2DArray ( int nrows, int ncols, int x[nrows][ncols] )
{
int r, c;
for ( r=0; r<nrows; r++ )
{
for ( c=0; c<ncols; c++ )
printf( "%3d ", x[r][c] );
printf("\n");
}
}
int tester( int nrows, int ncols )
{
int x[nrows][ncols];
fill2Drandom( nrows, ncols, x, 0, 125 );
printf("\n\nOriginal:\n");
print2DArray( nrows, ncols, x );
zeroEdges( nrows, ncols, x );
printf("\n\Edged:\n");
print2DArray( nrows, ncols, x );
return 0;
}
int main(int argc, char *argv[])
{
int nrows, ncols, rot;
printf("Number of rows: ");
scanf("%d", &nrows);
printf("Number of cols: ");
scanf("%d", &ncols);
tester( nrows, ncols );
}