#include int *grow_array(int *inarr, int *currsize, int newsize); int getval_array(int *inarr, int index); int setval_array(int *inarr, int idx, int val); int clear_array(int *inarr); int print_array(int *inarr, int size); main() { int *myarray; int arraysize; int done=0, idx, val, choice; arraysize = 0; myarray = NULL; while(!done) { printf("\n\n1 -- print array\n"); printf("2 -- get val from array\n"); printf("3 -- set val in array\n"); printf("4 -- clear array\n"); printf("5 -- exit\n"); printf("Enter Menu Option: "); scanf("%d", &choice); printf("---------------------------\n"); switch(choice) { case 1: print_array(myarray, arraysize); break; case 2: printf("Enter idx: "); scanf("%d", &idx); if (idx < arraysize && idx >= 0) { val = getval_array(myarray, idx); printf("val=%d\n", val); } else { printf("invalid index\n"); } break; case 3: printf("Enter idx and val to add (i,v): "); scanf("%d,%d", &idx, &val); if (idx >= arraysize) { myarray = grow_array(myarray, &arraysize, idx+1); } setval_array(myarray, idx, val); break; case 4: clear_array(myarray); arraysize = 0; break; case 5: exit(0); break; } } } int clear_array(int *inarr) { free(inarr); return(0); } int *grow_array(int *inarr, int *currsize, int newsize) { int *temp; temp = (int *)malloc(sizeof(int)*newsize); bzero(temp, newsize); memcpy(temp, inarr, sizeof(int) * *currsize); free(inarr); *currsize = newsize; return(temp); } int setval_array(int *inarr, int idx, int val) { inarr[idx] = val; return(0); } int getval_array(int *inarr, int idx) { return(inarr[idx]); } int print_array(int *inarr, int size) { int i; printf("Current Array Contents: "); for (i=0; i