/////////////////////////////////// // // program_9 project // // created 10/5/21 by tj // rev 0 // /////////////////////////////////// // // read in an 2 dimensional nxn array, rotate, and print // // input - nxn array from user // output - original and rotated array // /////////////////////////////////// #include "mbed.h" #include // only needed when printing #define N 5 // required by Mbed limitations // function prototypes void get_ary(int size, int ary[][N]); void print_ary(int size, const int ary[][N]); void rotate_ary(int size, const int in_ary[][N], int out_ary[][N]); int main(void){ setbuf(stdout, NULL); // disable buffering when printing // splash printf("\n\nprogram_9\n"); printf("Using Mbed OS version %d.%d.%d\n\n", MBED_MAJOR_VERSION, MBED_MINOR_VERSION, MBED_PATCH_VERSION); printf("Welcome to array rotation program\n\n"); int input_ary[N][N]; int output_ary[N][N]; while(1){ get_ary(N, input_ary); printf("The array you entered is:\n"); print_ary(N, input_ary); rotate_ary(N, input_ary, output_ary); print_ary(N, output_ary); }// end while return 0; }// end main void get_ary(int size, int ary[][N]){ int i; int j; for(i = 0; i < size; i++){ printf("please enter the values for row %i: ", i); for(j = 0; j < size; j++) scanf("%i", &ary[i][j]); } return; }// end print_ary void print_ary(int size, const int ary[][N]){ int i; int j; for(i = 0; i < size; i++){ for(j = 0; j < size; j++) printf("\t%i", ary[i][j]); printf("\n"); } printf("\n"); return; }// end print_ary void rotate_ary(int size, const int in_ary[][N], int out_ary[][N]){ int i; int j; char dir; // no need to copy original, have a separate output printf("Would you like to rotate the array right (R) or left(L)? "); scanf(" %c", &dir); if((dir == 'r') || (dir == 'R')) for(i = 0; i < size; i++) for(j = 0; j < size; j++) out_ary[i][j] = in_ary[(size - 1) - j][i]; else for(i = 0; i < size; i++) for(j = 0; j < size; j++) out_ary[i][j] = in_ary[j][(size - 1) - i]; return; }// end rotate_ary