Classes/csci218/header.c
2024-09-19 09:07:30 -04:00

111 lines
2.9 KiB
C

#include <stdio.h>
#include <string.h>
void header(int width, int margin, char lineChar, char *headerTitle, char *message);
int main() {
char message[] = "This program will calculate your BMI, Life Expectancy, and BSA(multiple methods) with just your weight(kg), height(cm), and gender.";
printf("%d\n", (int)strlen(message));
header(80, 4, '*', "Purpose", message);
return 0;
}
void header(int width, int margin, char lineChar, char *headerTitle, char *message) {
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 + 1] = '\0';
strcpy(topLine, line);
// Add header title
for (int i = TITLE_MARGIN; i < (strlen(headerTitle) + TITLE_MARGIN); i++) {
topLine[i] = headerTitle[i - TITLE_MARGIN];
}
topLine[width + 1] = '\0';
printf("%d\n", (int)strlen(message));
int rowCheck = 1;
while(1) {
printf("%d > %d = %d\n", contentWidth * rows, (int)strlen(message), (contentWidth * rows) > (int)strlen(message));
if ((contentWidth * rows) > (int)strlen(message)) { break; }
if (message[(contentWidth * rows)] != ' ') {
int i = 1;
while (1) {
printf("previous char = %c\n", message[(contentWidth * rows) - i]);
if (message[(contentWidth * rows) - i] == ' ') {
int start = ((contentWidth * rows) - i) + 1;
char tempMessage[(int)strlen(message)];
printf("check char = %c\n", message[contentWidth * rows]);
printf("start = %d\n", start);
printf("char after start = %c\n", message[start]);
int k = 0;
for (int j = 0; j < (int)strlen(tempMessage); j++) {
tempMessage[j] = ' ';
}
for (int j = start; j < strlen(message); j++) {
tempMessage[k] = message[j];
k++;
}
for (int j = 0; j < i; j++) {
message[start + j] = ' ';
}
for (int j = 0; j < ((int)strlen(message)) - start - 1; j++) {
message[(start + i) + j] = tempMessage[j];
}
break;
}
i++;
}
}
rows++;
}
printf("%s\n", tempMessage);
printf("%s\n",message);
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 (j + (i * contentWidth) == (int)strlen(message)) {
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);
}