diff --git a/csci218/Assignments/BMI.c b/csci218/Assignments/BMI.c index d10634e..f612099 100644 --- a/csci218/Assignments/BMI.c +++ b/csci218/Assignments/BMI.c @@ -1,11 +1,15 @@ +/* Name: Garrett Haldrup +BMI.c +Problem: Take in the weight, heightm, and gender of a user and calculate and display their BMI, Life Expectancy, and BSA score using multiple methods. +Certification of Authenticity: +I certify that this assignment is entirely my own work. +*/ + #include -#include #include #include #include - -void header(int width, int margin, char lineChar, char *headerTitle, char *inputMessage, int meslen); - +#include int main(){ @@ -18,12 +22,31 @@ int main(){ // Char to store the gender with max length of 7 and a line string for formatting char gender[7]; - char message[] = "This program will calculate your BMI, Life Expectancy, and BSA(multiple methods) with just your weight(kg), height(cm), and gender."; + + // declare and set bools to false as default + bool isMale = false; + bool isFemale = false; + bool overWeight = false; + // Display Program Purpose - header(80, 4, '*', "Purpose", message, (int)strlen(message)); + printf("***Purpose**********************************************************************\n"); + printf("* This program will calculate your BMI, Life Expectancy, and *\n"); + printf("* BSA(multiple methods) with just your weight(kg), height(cm), and *\n"); + printf("* gender. *\n"); + printf("********************************************************************************\n"); + + // Nice little space + printf("\n"); + + // Litte overview of the data input section + printf("***Data Input*******************************************************************\n"); + printf("* Please enter your weight in kg fmt: XX.X and your height in cm fmt: *\n"); + printf("* XXX.X, Male and Female are the only valid options for gender. *\n"); + printf("********************************************************************************\n"); // Read in weight, height, and gender from user + // Make sure correct values for weight is entered printf("Please enter your weight(kg): "); weightResult = scanf("%f", &weight); while (weight <= 0 || weightResult != 1) { @@ -37,6 +60,7 @@ int main(){ weightResult = scanf("%f", &weight); } + // Make sure correct values for weight is entered printf("Please enter your height(cm): "); heightResult = scanf("%f", &height); while (height <= 0 || heightResult != 1) { @@ -60,19 +84,26 @@ int main(){ for (int i = 0; i < (int)strlen(gender); i++) { gender[i] = tolower(gender[i]); } + isMale = !strcmp("male", gender); + isFemale = !strcmp("female", gender); // Check if gender is valid - if (!(strcmp("male", gender)) || !(strcmp("female", gender))) { + if (isMale || isFemale) { break; } else { printf("Bad value: Please enter either male or female\n"); } } + // nice space + printf("\n"); // Calculate the BMI bmi = 10000 * (weight / pow(height, 2)); + // Assign bool + overWeight = bmi > 25; + // Calculate the BSA(Mosteller's) mostellar = sqrt((height * weight) / 3600); @@ -84,20 +115,23 @@ int main(){ // 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) { + if (isFemale) { + if (overWeight) { lifeExpect = 81.4; } else { lifeExpect = 83.5; } } else { - if (bmi > 25) { + if (overWeight) { lifeExpect = 77.3; } else { lifeExpect = 79.4; } } + // Demark output + printf("***Output***********************************************************************\n"); + // Display values and output printf("For a %s with weight(kg) of %.1fkg and height(cm) of %.1fcm\n", gender, weight, height); printf("You have a BMI of %.1f and a life expectancy of %.1f years\n", bmi, lifeExpect); @@ -109,106 +143,4 @@ int main(){ return 0; } -void header(int width, int margin, char lineChar, char *headerTitle, char *inputMessage, int meslen) { - int TITLE_MARGIN = 3; - int CONTENT_MARGIN = margin; - - int rows = 1; - - - char line[width + 1]; - char topLine[width + 1]; - - int contentWidth = (width - 2 * CONTENT_MARGIN) - 2; - // Create Line - for (int i = 0; i < width; i++) { - line[i] = lineChar; - } - - line[width] = 0; - - strcpy(topLine, line); - // Add header title - for (int i = TITLE_MARGIN; i < ((int)strlen(headerTitle) + TITLE_MARGIN); i++) { - topLine[i] = headerTitle[i - TITLE_MARGIN]; - } - - topLine[width] = 0; - - - char *message = (char *)malloc((meslen + 100) * sizeof(char)); - if (message == NULL) { - printf("Memory allocation failed!\n"); - exit(1); - } - - - strncpy(message, inputMessage, meslen + 100); - - - while(1) { - if ((contentWidth * rows) > (int)strlen(message)) { break; } - if (message[(contentWidth * rows)] != ' ') { - int i = 1; - int tempCounter = 0; - while (1) { - if (message[(contentWidth * rows) - i] == ' ') { - int start = ((contentWidth * rows) - i) + 1; - char tempMessage[(int)strlen(message)]; - int k = 0; - for (int j = 0; j < (int)strlen(message); j++) { - tempMessage[j] = ' '; - } - for (int j = start; j < strlen(message); j++) { - tempMessage[k] = message[j]; - tempCounter = k; - k++; - } - for (int j = 0; j < i; j++) { - message[start + j] = ' '; - } - for (int j = 0; j < tempCounter + 2; j++) { - message[(start + i) + j] = tempMessage[j]; - if (tempCounter + 1 == j) { - message[(start + i) + j] = 0; - } - } - break; - } - i++; - } - } - rows++; - } - - - printf("%s\n", topLine); - - for (int i = 0; i < rows; i++) { - int charCount = 0; - printf("*"); - for (int j = 0; j < CONTENT_MARGIN; j++) { - printf(" "); - } - for (int j = 0; j < contentWidth; j++) { - if (charCount == 0 && (message[j + (i * contentWidth)] == ' ')) {j++;} - if (!(message[j + (i * contentWidth)])) { - break; - } - printf("%c", message[j + (i * contentWidth)]); - charCount++; - } - for (int j = 0; j < contentWidth - charCount; j++) { - printf(" "); - } - for (int j = 0; j < CONTENT_MARGIN; j++) { - printf(" "); - } - printf("*\n"); - } - - printf("%s\n", line); - - free(message); -} diff --git a/csci218/Assignments/bmi.out b/csci218/Assignments/bmi.out index c24325d..1d8b842 100755 Binary files a/csci218/Assignments/bmi.out and b/csci218/Assignments/bmi.out differ diff --git a/csci218/Lect/919class.c b/csci218/Lect/919class.c new file mode 100644 index 0000000..80f4f63 --- /dev/null +++ b/csci218/Lect/919class.c @@ -0,0 +1,18 @@ +#include + +int main() { + + int x; + + printf("Enter number: "); + scanf("%d", &x); + + if (!(11 % x)) { + printf("is multiple\n"); + } else { + printf("not multiple\n"); + } + + + return 0; +} diff --git a/csci218/Lect/a.out b/csci218/Lect/a.out index 688c3a3..b8f541b 100755 Binary files a/csci218/Lect/a.out and b/csci218/Lect/a.out differ diff --git a/csci218/a.out b/csci218/a.out index 90e229d..e7fd194 100755 Binary files a/csci218/a.out and b/csci218/a.out differ diff --git a/csci218/header2.c b/csci218/header2.c new file mode 100644 index 0000000..d88116c --- /dev/null +++ b/csci218/header2.c @@ -0,0 +1,170 @@ +#include +#include +#include + +void header(int width, int margin, char lineChar, char *headerTitle, char *inputMessage, int meslen); + +int main() { + + char message1[] = "This program will calculate your BMI, Life Expectancy, and BSA(multiple methods) with just your weight(kg), height(cm), and gender."; + char message2[] = "Please enter your weight in kg fmt: XX.X and your height in cm fmt: XXX.X, Male and Female are the only valid options for gender."; + + + header(80, 4, '*', "Purpose", message1, (int)strlen(message1)); + + printf("\n"); + + header(80, 4, '*', "Data Input", message2, (int)strlen(message2)); + + header(80, 4, '*', "Output", "", 1); + + int width, margin, meslen; + char *message, *title, lineChar; + + size_t messageSize = 500; + + title = (char *)malloc(100 * sizeof(char)); + message = (char *)malloc(messageSize * sizeof(char)); + + while (1) { + printf("Welcome to header maker 2!\n"); + printf("Please enter the width as an int: "); + scanf("%d", &width); + printf("Please enter the margin: "); + scanf("%d", &margin); + printf("Please enter the char: "); + while (getchar() != '\n'); + scanf("%c", &lineChar); + printf("Please enter the title: "); + while (getchar() != '\n'); + scanf("%s", title); + printf("Please enter the message: "); + while (getchar() != '\n'); + if (getline(&message, &messageSize, stdin) == -1) { + printf("Error reading message!"); + free(message); + return 1; + } + printf("%s\n", message); + + message[(int)strlen(message) - 1] = 0; + + header(width, margin, lineChar, title, message, (int)strlen(message)); + + break; + + } + + return 0; +} + +void header(int width, int margin, char lineChar, char *headerTitle, char *inputMessage, int meslen) { + int TITLE_MARGIN = 3; + int CONTENT_MARGIN = margin; + + int rows = 1; + + + + char line[width + 1]; + char topLine[width + 1]; + + int contentWidth = ((width - 2 * CONTENT_MARGIN) - 2); + // Create Line + for (int i = 0; i < width; i++) { + line[i] = lineChar; + } + + line[width] = 0; + + strcpy(topLine, line); + // Add header title + for (int i = TITLE_MARGIN; i < ((int)strlen(headerTitle) + TITLE_MARGIN); i++) { + topLine[i] = headerTitle[i - TITLE_MARGIN]; + } + + topLine[width] = 0; + + + char *message = (char *)malloc((meslen + 100) * sizeof(char)); + if (message == NULL) { + printf("Memory allocation failed!\n"); + exit(1); + } + + + strncpy(message, inputMessage, meslen + 100); + + + while(1) { + if ((contentWidth * rows) > (int)strlen(message)) { break; } + if (message[(contentWidth * rows)] != ' ') { + int i = 1; + int tempCounter = 0; + while (1) { + if (message[(contentWidth * rows) - i] == ' ') { + int start = ((contentWidth * rows) - i) + 1; + char tempMessage[(int)strlen(message)]; + int k = 0; + for (int j = 0; j < (int)strlen(message); j++) { + tempMessage[j] = ' '; + } + for (int j = start; j < strlen(message); j++) { + tempMessage[k] = message[j]; + tempCounter = k; + k++; + } + for (int j = 0; j < i; j++) { + message[start + j] = ' '; + } + for (int j = 0; j < tempCounter + 2; j++) { + message[(start + i) + j] = tempMessage[j]; + if (tempCounter + 1 == j) { + message[(start + i) + j] = 0; + } + } + break; + } + i++; + } + } + rows++; + } + + + //printf("%s\n", topLine); + printf("printf(\"%s\\n\");\n", topLine); + + for (int i = 0; i < rows; i++) { + int charCount = 0; + + printf("printf(\""); + + printf("%c", lineChar); + + for (int j = 0; j < CONTENT_MARGIN; j++) { + printf(" "); + } + for (int j = 0; j < contentWidth; j++) { + if (charCount == 0 && (message[j + (i * contentWidth)] == ' ')) {j++;} + if (!(message[j + (i * contentWidth)])) { + break; + } + printf("%c", message[j + (i * contentWidth)]); + charCount++; + } + for (int j = 0; j < contentWidth - charCount; j++) { + printf(" "); + } + for (int j = 0; j < CONTENT_MARGIN; j++) { + printf(" "); + } + printf("%c", lineChar); + printf("\\n\");\n"); + } + + // printf("%s\n", line); + printf("printf(\"%s\\n\");\n", line); + + free(message); +}