diff --git a/include/generator.h b/include/generator.h index a9eb104..fbdd895 100644 --- a/include/generator.h +++ b/include/generator.h @@ -24,6 +24,4 @@ typedef enum { TIMETABLE generateTimetable(STUDENT *students, size_t size_students, COURSE *courses, size_t size_courses); -bool isFlex(char crsNo[MAX_COURSE_NO_LEN]); - #endif diff --git a/include/main.h b/include/main.h index 39761ea..02bf10b 100644 --- a/include/main.h +++ b/include/main.h @@ -35,4 +35,6 @@ static const char FLEX[][11] = {"XAT--12A-S", "XAT--12B-S"}; void handle(void* mem, char name[]); +bool isFlex(char crsNo[MAX_COURSE_NO_LEN]); + #endif \ No newline at end of file diff --git a/src/generator.c b/src/generator.c index aeeec67..7f38263 100644 --- a/src/generator.c +++ b/src/generator.c @@ -10,13 +10,6 @@ const char hex[] = "0123456789abcdefABCDEF"; -// May be needed later -bool isFlex(char crsNo[MAX_COURSE_NO_LEN]) { - for (uint8_t i = 0; i < sizeof(FLEX)/sizeof(FLEX[0]); i++) - if (strcmp(crsNo, FLEX[i]) == 0) return true; - return false; -} - void appendChar(char *str, char ch) { int len = strlen(str); str[len] = ch; diff --git a/src/main.c b/src/main.c index 1e8bbf9..ed5bbdc 100644 --- a/src/main.c +++ b/src/main.c @@ -18,6 +18,12 @@ void handle(void *mem, char name[]) { } } +bool isFlex(char crsNo[MAX_COURSE_NO_LEN]) { + for (uint8_t i = 0; i < sizeof(FLEX)/sizeof(FLEX[0]); i++) + if (strcmp(crsNo, FLEX[i]) == 0) return true; + return false; +} + int main(int argc, char *argv[]) { /* read csv data into array of structs that can diff --git a/src/students.c b/src/students.c index fb089b3..151b718 100644 --- a/src/students.c +++ b/src/students.c @@ -75,6 +75,8 @@ STUDENT *getStudents(CSV_LINE *lines, size_t lines_len, int total_blocks, UNIQUE request.alternate = lines[i].alternate; students[j].requests[students[j].requestsLen] = request; students[j].requestsLen++; + if (!isFlex(request.crsNo) && !request.alternate && students[j].expectedClasses < TOTAL_BLOCKS) + students[j].expectedClasses++; break; } }