diff options
Autocommit at 07.05.2022 @ 12:13
4 files changed, 13 insertions, 9 deletions
| -rw-r--r-- | src/Generic/String/String.h | 3 | ||||
| -rw-r--r-- | src/Services/EventService.cpp | 14 | ||||
| -rw-r--r-- | src/Services/EventService.h | 2 | ||||
| -rw-r--r-- | src/UserInterface/VenueConsoleUI.cpp | 3 |
diff --git a/src/Generic/String/String.h b/src/Generic/String/String.h index 9ef6795..5c5231d 100644 --- a/src/Generic/String/String.h +++ b/src/Generic/String/String.h @@ -9,10 +9,13 @@ class String { void copyFrom(const String& other); public: + String(unsigned length); String(const char* str); const char* get_cstr() const; unsigned get_length() const; + char& operator[](unsigned index); + String(); String(const String& other); String& operator=(const String& other); diff --git a/src/Services/EventService.cpp b/src/Services/EventService.cpp index 58b355f..ac3129d 100644 --- a/src/Services/EventService.cpp +++ b/src/Services/EventService.cpp @@ -135,8 +135,8 @@ StatusCode EventService::buyTicket(const char* name, const Date& date, const Tic return Success; } -void EventService::createSeatingString(const char* name, const Date& date, unsigned* seatsPerRow, char* out) { - delete[] out; +void EventService::createSeatingString(const char* name, const Date& date, unsigned* seatsPerRow, char** out) { + delete[] *out; unsigned eInd = indexOfEvent(name, date); if (eInd == events.get_count()) { @@ -146,18 +146,18 @@ void EventService::createSeatingString(const char* name, const Date& date, unsig unsigned rowCount = events[eInd].get_hall().get_rows(), seatsCount = events[eInd].get_hall().get_seatsPerRow(); *seatsPerRow = seatsCount; - out = new char[rowCount * seatsCount + 1]; + *out = new char[rowCount * seatsCount + 1]; for (unsigned acc = 0, row = 1; row <= rowCount; row++) { for (unsigned seat = 1; seat <= seatsCount; seat++, acc++) { if (events[eInd].get_tickets().contain(Ticket(row, seat))) - out[acc] = 'B'; + *out[acc] = 'B'; else if (events[eInd].get_reservations().contain(Ticket(row, seat))) - out[acc] = 'R'; + *out[acc] = 'R'; else - out[acc] = ' '; + *out[acc] = ' '; } } - out[seatsCount * rowCount] = '\0'; + *out[seatsCount * rowCount] = '\0'; } diff --git a/src/Services/EventService.h b/src/Services/EventService.h index c4dbf0c..7fc0830 100644 --- a/src/Services/EventService.h +++ b/src/Services/EventService.h @@ -34,7 +34,7 @@ public: StatusCode buyTicket(const char* name, const Date& date, unsigned row, unsigned seat); StatusCode buyTicket(const char* name, const Date& date, const Ticket& ticket); - void createSeatingString(const char* name, const Date& date, unsigned* seatsPerRow, char* out); + void createSeatingString(const char* name, const Date& date, unsigned* seatsPerRow, char** out); void queryMostVisited(); void queryInsufficientlyVisited(); diff --git a/src/UserInterface/VenueConsoleUI.cpp b/src/UserInterface/VenueConsoleUI.cpp index cd73dc5..b5d74ae 100644 --- a/src/UserInterface/VenueConsoleUI.cpp +++ b/src/UserInterface/VenueConsoleUI.cpp @@ -47,13 +47,14 @@ void command_freeSeats() { unsigned seatsPerRow = 0; char* seating = nullptr; - es->createSeatingString(name, date, &seatsPerRow, seating); + es->createSeatingString(name, date, &seatsPerRow, &seating); if (seating == nullptr) { handleStatusCode(E_EventDoesNotExist, ticketManagementMenu); return; } table(1, seatsPerRow, seating); + delete[] seating; char tmp; inputLineBox("[Press enter to continue]", &tmp, 1); |
