#include #include #include static int readNum(char *); int main(int argc, char const *argv[]) { char type; //type of numbers int amt_nums, i; // amount of numbers double average; //aveage //get type and number of elements do { fpurge(stdin); printf("Would you like floats(f) or ints(i) (Enter f or i): "); scanf("%c", &type); } while( (type!='f') && (type!='i') ); amt_nums = readNum("How many numbers would you like to store in the array"); if (type == 'i'){ //ints //create int array of user entered size int total = 0, *arr = (int *)calloc( amt_nums, sizeof(*arr) ); for (i = 0; i < amt_nums; i++) {//loop and get numbers printf("(%d)please enter an int: ", i+1); scanf("%d", &arr[(int)i]); total += arr[(int)i]; //add to total } average = total / amt_nums; //average printf("the average is %lf\n", average); do { //ask user if they want to add extra numbers and how many fpurge(stdin); printf("Would you like to add more numbers to list (y or n) "); scanf("%c", &type); } while( (type!='y') && (type!='n') ); if(type == 'y'){ int addition = readNum("How many new numbers would you like to store in the array"); arr = (int *) realloc(arr, ((amt_nums+addition) * sizeof(*arr)) ); for (i = amt_nums; i < amt_nums+addition; i++) { //loop and get the additional numbers printf("please enter int number %d: ", i+1); scanf("%d", &arr[i]); total += arr[i]; //add to total } average = ( total / (amt_nums+addition) ); //average printf("The new average is now %lf\n", average); } }else{ //floats //create float array of user entered size float total = 0, *arr = (float *)calloc( amt_nums, sizeof(*arr) ); for (i = 0; i < amt_nums; i++) { //loop and get floats printf("please enter float number %d: ", i+1); scanf("%f", &arr[i]); total += arr[i]; //add to total } average = total / amt_nums; //average printf("the average is %lf\n", average); do { //ask user if they would like to add more space to the float arrtay fpurge(stdin); printf("Would you like to add more numbers to list (y or n) "); scanf("%c", &type); } while( (type!='y') && (type!='n') ); int addition = readNum("How many new numbers would you like to store in the array"); if (type == 'y') { //add extra space in memory for the float array arr = (float *) realloc(arr, ((amt_nums+addition) * sizeof(*arr)) ); for (i = amt_nums; i < amt_nums+addition; i++) { //get additional floats printf("please enter float number %d: ", i+1); scanf("%f", &arr[i]); total += arr[i]; //add to total } average = ( total / (amt_nums+addition) ); //average printf("The new average is now %lf\n", average); } } return 0; } static int readNum(char *sen){ /* get a positive integer */ int input; printf("%s\n", sen); do { printf("%s", "enter a number : "); scanf("%d", &input); } while(input <= 0); return input; }