diff options
Autocommit at 07.05.2022 @ 11:47
2 files changed, 9 insertions, 8 deletions
| -rw-r--r-- | src/Services/EventService.cpp | 15 | ||||
| -rw-r--r-- | src/Services/EventService.h | 2 |
diff --git a/src/Services/EventService.cpp b/src/Services/EventService.cpp index 56f513e..50fb2a8 100644 --- a/src/Services/EventService.cpp +++ b/src/Services/EventService.cpp @@ -135,7 +135,7 @@ StatusCode EventService::buyTicket(const char* name, const Date& date, const Tic return Success; } -String EventService::createSeatingString(const char* name, const Date& date, unsigned* seatsPerRow) { +String EventService::createSeatingString(const char* name, const Date& date, unsigned* seatsPerRow, char* out) { unsigned eInd = indexOfEvent(name, date); if (eInd == events.get_count()) return ""; @@ -143,15 +143,16 @@ String EventService::createSeatingString(const char* name, const Date& date, uns unsigned rowCount = events[eInd].get_hall().get_rows(), seatsCount = events[eInd].get_hall().get_seatsPerRow(); *seatsPerRow = seatsCount; - String out; - for (unsigned row = 1; row <= rowCount; row++) { - for (unsigned seat = 1; seat <= seatsCount; seat++) { + delete[] out; + out = new char[rowCount * seatsCount]; + 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 += 'B'; + out[acc] = 'B'; else if (events[eInd].get_reservations().contain(Ticket(row, seat))) - out += 'R'; + out[acc] = 'R'; else - out += ' '; + out[acc] = ' '; } } return out; diff --git a/src/Services/EventService.h b/src/Services/EventService.h index 214d6ff..c4dbf0c 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); - String createSeatingString(const char* name, const Date& date, unsigned* seatsPerRow = nullptr); + void createSeatingString(const char* name, const Date& date, unsigned* seatsPerRow, char* out); void queryMostVisited(); void queryInsufficientlyVisited(); |
