Files
CPP-Queue/src/main.cpp

107 lines
3.1 KiB
C++
Raw Normal View History

#include "queue.h"
#include "utils.h"
#include <cstdlib>
#include <print>
void menu(Queue<int> queue);
int main(void) {
Queue<int> queue = {};
menu(queue);
return EXIT_SUCCESS;
}
void menu(Queue<int> queue) {
while (true) {
clear_screen();
std::println("---Queue Manager---");
std::println("1) Enqueue.");
std::println("2) Dequeue.");
std::println("3) Peek.");
std::println("4) Diplay.");
std::println("5) Exit.");
int choice;
if (!read_int("", &choice)) {
std::println("Invalid input.");
wait_enter();
continue;
}
clear_screen();
switch (choice) {
case 1: {
int input;
if (!read_int("Type the integer to enqueue:\n", &input)) {
std::println("Invalid input.");
wait_enter();
continue;
}
if (queue.enqueue(input) == QueueErr::bad_alloc) {
std::println("Program couldn't allocate memory for queue.");
wait_enter();
continue;
}
std::println("Integer {} was correclty enqueued.", input);
wait_enter();
break;
}
case 2: {
auto out = queue.dequeue();
if (!out.has_value() && out.error() == QueueErr::empty) {
std::println("The queue is empty.");
wait_enter();
continue;
} else if (!out.has_value() && out.error() == QueueErr::bad_alloc) {
std::println("Program couldn't allocate memory for queue");
wait_enter();
continue;
}
std::println("The element at the tail was {}.", out.value());
wait_enter();
break;
}
case 3: {
auto out = queue.peek();
if (!out.has_value() && out.error() == QueueErr::empty) {
std::println("The queue is empty.");
wait_enter();
continue;
} else if (!out.has_value() && out.error() == QueueErr::bad_alloc) {
std::println("Program couldn't allocate memory for queue");
wait_enter();
continue;
}
std::println("The element at the tail was {}.", out.value());
wait_enter();
break;
}
case 4: {
queue.print();
wait_enter();
break;
}
case 5: {
std::println("Goodbye :)");
wait_enter();
clear_screen();
exit(1);
}
default: {
std::println("Invalid option.");
wait_enter();
clear_screen();
break;
}
}
}
}