#include #include int const MAX_NUMBER = 50; /* maximum increment between numbers in matrix /* inline function that returns the max of two numbers */ inline int max(int a, int b) { return (a > b) ? a : b; } void find(int key, int **matrix, int n) { // YOUR CODE GOES HERE } main(int argc, char *argv[]) { int **matrix; int n; long seed; if (argc != 3) { fprintf(stderr, "usage: matrix n seed\n"); exit(1); } if (sscanf(argv[1], "%d", &n) != 1) { fprintf(stderr, "n, %s, must be an integer\n", argv[1]); exit(1); } if (sscanf(argv[2], "%ld", &seed) != 1) { fprintf(stderr, "seed, %s, must be an integer\n", argv[2]); exit(1); } srandom(seed); matrix = new int * [n+2]; for (int i = 0; i < n+2; i++) matrix[i] = new int[n+2]; int row, col; matrix[1][1] = random() % MAX_NUMBER; for (row = 1, col = 2; col <= n; col++) matrix[row][col] = matrix[row][col-1] + (random() % MAX_NUMBER) + 1; for (col = 1, row = 2; row <= n; row++) matrix[row][col] = matrix[row-1][col] + (random() % MAX_NUMBER) + 1; for (row = 2; row <= n; row++) for (col = 2; col <= n; col++) matrix[row][col] = max(matrix[row-1][col], matrix[row][col-1]) + (random() % MAX_NUMBER) + 1; for (row = 1; row <= n; row++) { for (col = 1; col <= n; col++) { printf(" %5d", matrix[row][col]); } printf("\n"); } int key; printf("enter a number: "); while(scanf("%d", &key) != EOF) { find(key, matrix, n); printf("enter a number: "); } }