[E-5]
Write a function that has two 2D array parameters:
void scramble2D( int rows, int cols, int orig[rows][cols], int scram[rows][cols] )
The function takes each value in orig
and places it
in a random location in scram
.
Of course, scram
must contain all the values originally in orig
.
It has the same values, but with locations scrambled.
#include <stdio.h> #include <stdlib.h> #include <time.h> /* Puzzle D10 -- scramble arrays */ #define COLS 6 #define ROWS 6 /* Generate a random integer min < = r < = max */ int randInt( int min, int max ) { return rand()%(max-min+1) + min ; } /* scramble a 2D array */ void scramble2D( int rows, int cols, int orig[rows][cols], int scram[rows][cols] ) { . . . . } 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"); } } void fill2DArray ( int nrows, int ncols, int x[nrows][ncols] ) { int r, c, val = 0; for ( r=0; r<nrows; r++ ) { for ( c=0; c<ncols; c++ ) x[r][c] = val++ ; } } int main() { int orig [ROWS][COLS] ; int scram[ROWS][COLS] ; srand( time(NULL) ); /* Fill orig with easy to debug values */ fill2DArray( ROWS, COLS, orig ); /* Make the scrambled array*/ scramble2D( ROWS, COLS, orig, scram ); /* Print the arrays */ printf("orig:\n"); print2DArray( ROWS, COLS, orig ); printf("\n\nScrambled:\n"); print2DArray( ROWS, COLS, scram ); printf("\n"); return 0; }