diff --git a/csci218/Assignments/BMI.c b/csci218/Assignments/BMI.c index 1077169..bf84009 100644 --- a/csci218/Assignments/BMI.c +++ b/csci218/Assignments/BMI.c @@ -1,31 +1,70 @@ #include #include #include +#include int main(){ // Declare Variables + // Float values for calculations float bmi, weight, height, mostellar, duBois, boyd, lifeExpect; - char gender[15]; + + // Int values to store the result of the scanf fucntion + int weightResult, heightResult; + + // Char to store the gender with max length of 7 and a line string for formatting + char gender[7]; char line[] = "********************************"; + // Display Program Purpose - printf("%s%s%s\n", line, line, line); - printf("This program will calculate your BMI, Life Expectancy, and BSA(mulitple methods)\nwith just your weight(kg), height(cm), and gender.\n"); - printf("%s%s%s\n", line, line, line); + printf("%s%s%s*\n", line, line, line); + printf("*\tThis program will calculate your BMI, Life Expectancy, and BSA(mulitple methods)\t*\n"); + printf("*\twith just your weight(kg), height(cm), and gender.\t\t\t\t\t*\n"); + printf("%s%s%s*\n", line, line, line); + // Read in weight, height, and gender from user printf("Please enter your weight(kg): "); - scanf("%f", &weight); - printf("Please enter your height(cm): "); - scanf("%f", &height); + weightResult = scanf("%f", &weight); + while (weight <= 0 || weightResult != 1) { + while (getchar() != '\n'); + if (weight <= 0) { + printf("Bad Value: Weight must greater than 0! fmt: XX.X\n"); + } else { + printf("Bad Value: Please enter a decimal input! fmt: XX.X\n"); + } + printf("Please re-enter your weight(kg): "); + weightResult = scanf("%f", &weight); + } + printf("Please enter your height(cm): "); + heightResult = scanf("%f", &height); + while (height <= 0 || heightResult != 1) { + while (getchar() != '\n'); + if (height <= 0) { + printf("Bad Value: Height must greater than 0! fmt: XX.X\n"); + } else { + printf("Bad Value: Please enter a decimal input! fmt: XX.X\n"); + } + printf("Please re-enter your height(cm): "); + heightResult = scanf("%f", &height); + } + // Make sure correct values for gender are entered while (1) { + // Read in gender from user printf("Please enter your gender(male or female): "); scanf("%s", gender); - if (strcmp("male", gender) == 0 || strcmp("female", gender) == 0) { + + // Loop through all chars in gender and convert to lower case + for (int i = 0; i < strlen(gender); i++) { + gender[i] = tolower(gender[i]); + } + + // Check if gender is valid + if (!(strcmp("male", gender)) || !(strcmp("female", gender))) { break; } else { - printf("Bad value: Please enter either male or female all lowercase\n"); + printf("Bad value: Please enter either male or female\n"); } } @@ -43,6 +82,7 @@ int main(){ boyd = (0.0003207 * pow(height, 0.3)) * pow((1000 * weight), (0.6721 - (0.0188 * log10(weight)))); // Check if overweight and gender to select correct life expectancy message + // Only need to check one since the input screens to just two options if (strcmp("male", gender)) { if (bmi > 25) { lifeExpect = 81.4; diff --git a/csci218/Assignments/bmi.out b/csci218/Assignments/bmi.out index bc1b7eb..fff20ca 100755 Binary files a/csci218/Assignments/bmi.out and b/csci218/Assignments/bmi.out differ