From 3b0d1b5ed77b2858c0dfe1a3b93efdb0d56e777f Mon Sep 17 00:00:00 2001 From: Sambo Chea Date: Mon, 3 Aug 2020 19:01:26 +0700 Subject: [PATCH] Updated the final file and source and zip --- {real => final}/README.md | 2 + {real => final}/q1.c | 0 {real => final}/q2.c | 0 final/q3.c | 286 +++++++++++++++++++++++++++++++++++ {real => final}/students.txt | 0 swi-final.zip | Bin 0 -> 6463 bytes 6 files changed, 288 insertions(+) rename {real => final}/README.md (58%) rename {real => final}/q1.c (100%) rename {real => final}/q2.c (100%) create mode 100644 final/q3.c rename {real => final}/students.txt (100%) create mode 100644 swi-final.zip diff --git a/real/README.md b/final/README.md similarity index 58% rename from real/README.md rename to final/README.md index 027e92f..c0f72c5 100644 --- a/real/README.md +++ b/final/README.md @@ -1,3 +1,5 @@ +### Guide +#### Compile ```shell gcc q1.c -o q1 ./q1 diff --git a/real/q1.c b/final/q1.c similarity index 100% rename from real/q1.c rename to final/q1.c diff --git a/real/q2.c b/final/q2.c similarity index 100% rename from real/q2.c rename to final/q2.c diff --git a/final/q3.c b/final/q3.c new file mode 100644 index 0000000..c5adc90 --- /dev/null +++ b/final/q3.c @@ -0,0 +1,286 @@ +#include "stdio.h" +#include "stdlib.h" +#include "string.h" +#include "time.h" + +#define DEPOT_SIZE 10 + +struct Bus +{ + int BusID; + int RouteID; + time_t schedule; +} Depot[DEPOT_SIZE]; + +typedef enum +{ + true, + false +} bool; + +void createBuses(); +void printBuses(); +void scheduleBuses(); +void alignupBuses(); +void releaseBuses(); +void emergency(); + +// utils variable +bool has_created = false; +bool has_scheduled = false; +bool has_aligned = false; +int top = -1; + +// utils function +void clrscr(); +void print_depot(struct Bus *depot); + +time_t get_random_time(); + +void confirm_on_finish(); +int quicksort_compare_func(const void *elem1, const void *elem2); +bool isEmpty(); +int menu(); + +void remove_index_of_array(int index); + +// Main Function +int main() +{ + while (1) + { + int selection = menu(); + clrscr(); + printf("You Select : %d", selection); + printf("\n"); + + switch (selection) + { + case 1: + createBuses(); + break; + case 2: + printBuses(); + break; + + case 3: + scheduleBuses(); + break; + case 4: + alignupBuses(); + break; + + case 5: + releaseBuses(); + break; + + case 6: + emergency(); + break; + + default: + printf("You are enter incorrect option number"); + } + + confirm_on_finish(); + }; + + return EXIT_SUCCESS; +} + +int menu() +{ + fflush(stdout); + + clrscr(); + + printf("\nQuestion 3 "); + printf("\n========================================="); + printf("\n"); + printf("\n1. Create Buses"); + printf("\n2. Print Buses"); + printf("\n3. Schedule Buses"); + printf("\n4. Align up Buses"); + printf("\n5. Release Buses"); + printf("\n6. Emergency Buses"); + + int chosen; + printf("\n\nEnter Your Selection : "); + scanf("%d", &chosen); + return chosen; +} + +void createBuses() +{ + + if (has_created == true) + { + printf("\nYou have created already..."); + return; + } + + printf("\n\nStart Create Buses..."); + + for (int i = 0; i < DEPOT_SIZE; i++) + { + top++; + Depot[i].BusID = i + 1; + Depot[i].RouteID = 1000 + (i + i); + printf("\n - Starting Create Bus %d", i + 1); + } + + has_created = true; + + printf("\nFinish Created Buses"); +} + +void printBuses() +{ + if (has_created == false) + { + printf("\nPlease Create Buses First!"); + return; + } + print_depot(Depot); +} + +void scheduleBuses() +{ + if (has_created == false) + { + printf("\nPlease Create Buses First!"); + return; + } + + printf("\nStart Scheduling Buses...\n\n"); + + size_t currentLen = sizeof(Depot) / sizeof(Depot[0]); + + for (int i = 0; i < currentLen; i++) + { + printf("\n - Start Random Schedule %d...", i); + + Depot[i].schedule = get_random_time(); + } + + printf("\n\nEnd Scheduling Buses..."); + + has_scheduled = true; +} + +void print_depot(struct Bus *depot) +{ + + size_t currentLen = sizeof(Depot) / sizeof(*Depot); + + for (int i = 0; i < top; i++) + { + printf("Bus ID: %d\n", depot[i].BusID); + printf("Route ID: %d\n", depot[i].RouteID); + + char *scheduleForShow = ""; + if (depot[i].schedule != 0) + { + scheduleForShow = ctime(&depot[i].schedule); + } + + printf("Schdule Time : %s\n\n", scheduleForShow); + } +} + +void alignupBuses() +{ + if (has_scheduled == false) + { + printf("\n\nYou are not scheduling buses yet ..."); + return; + } + size_t currentLen = sizeof(Depot) / sizeof(Depot[0]); + + qsort(Depot, sizeof(Depot) / sizeof(*Depot), sizeof(*Depot), quicksort_compare_func); + + printf("\n\nFinish Align up Buses Schedule ... "); + has_aligned = true; +} + +void releaseBuses() +{ + if (has_aligned == false) + { + printf("\n\nYou are not align buses schedule yet ..."); + return; + } + + int last_index = sizeof(Depot) / sizeof(*Depot) - 1; + + remove_index_of_array(last_index); + + printf("\n\nRelease Complete...\n\n"); +} + +void emergency() +{ + if (has_aligned == false) + { + printf("\n\nYou are not align buses schedule yet ..."); + return; + } + + remove_index_of_array(0); + + printf("\n\nRelease Complete...\n\n"); +} + +void remove_index_of_array(int remove_index) +{ + + int current_len = sizeof(Depot) / sizeof(*Depot); + memmove(Depot + remove_index, Depot + remove_index + 1, (sizeof(Depot) - remove_index - 1) * sizeof(*Depot)); + top--; +} + +time_t get_random_time() +{ + time_t currentTime; + + time(¤tTime); + + long currentTimeNumber = (long)localtime(¤tTime); + + // Random in next 5 hours + long randomAddOnTime = rand() % (60 * 60 * 5); + + long additionTime = currentTimeNumber + randomAddOnTime; + + return additionTime; +} + +void clrscr() +{ + system("clear"); +} + +void confirm_on_finish() +{ + + printf("\n\nPress Enter to Back to Menu..."); + + getchar(); + getchar(); +} + +bool isFull() +{ + return top == -1; +} + +int quicksort_compare_func(const void *elem1, const void *elem2) +{ + struct Bus element1 = *((struct Bus *)elem1); + struct Bus element2 = *((struct Bus *)elem2); + if (element1.schedule > element2.schedule) + return -1; + if (element1.schedule < element2.schedule) + return 1; + return 0; +} \ No newline at end of file diff --git a/real/students.txt b/final/students.txt similarity index 100% rename from real/students.txt rename to final/students.txt diff --git a/swi-final.zip b/swi-final.zip new file mode 100644 index 0000000000000000000000000000000000000000..d2d38063cf4f05b66e26aa6bb86d63743c2fae19 GIT binary patch literal 6463 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 literal 0 HcmV?d00001