// Lab D // By Perry Huang // 11/27/2007 /* Notes & Comments: - string.h is required for memcpy - math.h is required for roundf function - arrays were used to maintain sanity - flush used after scanf's - numbers[10] contains 10 numbers that are from user input - rounded[10] is same as numbers[10], but rounded with roundf after - average carries the average of the values in numbers array */ #include #include #include #define FLUSH while(getchar()!='\n') float input(); float findaverage(float *numbers); void output(float *numbers, float *rounded, float, float); void printasterisk(float); void repeat(); void main() { float numbers[10], rounded[10], average, raverage; puts("Hi. This program will have you input 10 numbers from 1 to 30. Then it will print out the numbers and print out a rounded number of asterisks. At the end, the average of the numbers will be printed along with the corresponding rounded number of asterisks."); numbers[0] = input(); numbers[1] = input(); numbers[2] = input(); numbers[3] = input(); numbers[4] = input(); numbers[5] = input(); numbers[6] = input(); numbers[7] = input(); numbers[8] = input(); numbers[9] = input(); memcpy(rounded, numbers, sizeof numbers); rounded[0] = roundf(rounded[0]); rounded[1] = roundf(rounded[1]); rounded[2] = roundf(rounded[2]); rounded[3] = roundf(rounded[3]); rounded[4] = roundf(rounded[4]); rounded[5] = roundf(rounded[5]); rounded[6] = roundf(rounded[6]); rounded[7] = roundf(rounded[7]); rounded[8] = roundf(rounded[8]); rounded[9] = roundf(rounded[9]); average = findaverage(numbers); raverage = roundf(average); puts("\nOUTPUT\n"); printf("%20s%20s%30s\n", "Numbers", "Rounded Values", "Asterisks"); output(numbers, rounded, average, raverage); repeat(); } float input() { float inputnum; printf("Please input a number: "); scanf("%f", &inputnum); FLUSH; while (inputnum < 1 || inputnum > 30) { printf("You have entered a false value. Please enter a number from 1 to 30: "); } return(inputnum); } float findaverage(float *numbers) { return((numbers[0] + numbers[1] + numbers[2] + numbers[3] + numbers[4] + numbers[5] + numbers[6] + numbers[7] + numbers[8] + numbers[9]) / 10); } void output(float *numbers, float *rounded, float oaverage, float oraverage) { printf("%20.2f%20.2f", numbers[0], rounded[0]); printasterisk(rounded[0]); printf("%20.2f%20.2f", numbers[1], rounded[1]); printasterisk(rounded[1]); printf("%20.2f%20.2f", numbers[2], rounded[2]); printasterisk(rounded[2]); printf("%20.2f%20.2f", numbers[3], rounded[3]); printasterisk(rounded[3]); printf("%20.2f%20.2f", numbers[4], rounded[4]); printasterisk(rounded[4]); printf("%20.2f%20.2f", numbers[5], rounded[5]); printasterisk(rounded[5]); printf("%20.2f%20.2f", numbers[6], rounded[6]); printasterisk(rounded[6]); printf("%20.2f%20.2f", numbers[7], rounded[7]); printasterisk(rounded[7]); printf("%20.2f%20.2f", numbers[8], rounded[8]); printasterisk(rounded[8]); printf("%20.2f%20.2f", numbers[9], rounded[9]); printasterisk(rounded[9]); puts("Average"); printf("%20.2f%20.2f", oaverage, oraverage); printasterisk(oraverage); } void printasterisk(float nos) { float count; printf("\t\t"); for (count = 1; count <= nos; count++) { printf("*"); } printf("\n"); } void repeat() { char getme; puts("\nWould you like to repeat this program? Y/n"); getme = getchar(); if (getme == 'Y' || getme == 'y' || getme == '\n') { puts("\nRepeating..."); main(); } else { puts("\nDone. OK to exit."); } }