Тема: C++ після повторного виклику меню, не працює вихід але продовжує ввід
після повторного виклику меню, не працює вихід але продовжує ввід. Якщо ж виходити з програми зразу то все працює, але якщо я введу дані, повернусь в меню, то вихід не працює, замість виходу програма продовжує ввід данних, не розумію в чому проблема
P.S.:
також вислухаю аргументовану критику на рахунок деяких реалізацій(можливо підкажете щодо динамічної структури, поки оюмежуюсь таким варіантом як є(вектори і файли не використовувати, обмеження завдання))
#include <iostream>
#include <stdlib.h>
#include <cctype>
#include <cstring>
#include <cstdlib>
#include <iomanip>
#include <locale>
#include <Windows.h>
#include <utility>
#include <algorithm>
using namespace std;
int n = 0;
struct vust {
    char Name[20];
    struct date {
        int day;
        int month;
        int year;
    }Date;
    int tickets; 
    int price;
}Group[100];
void enter(), print(), sortP(), sortN(), display(), menu(), display2();
int  quit();
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    menu();
    /*char choice;
    for (;;) {
        choice = menu();
        switch (choice) {
        case 'e': enter();
            break;
        case 'n': sortN();
            break;
        case 'p': sortP();
            break;
        case 'r': ;
            break;
        case 'd': ;
            break;
        case 'q': quit();
            break;
        }
    }
    system("pause");*/
}
void menu()
{
    char ch;
    cout << "\n";
    do {
        cout << "\n(E)Ввести данні про виставу\n";
        cout << "(N)Сортувати за назвою вистави\n";
        cout << "(P)Сортувати за ціною\n";
        cout << "(D)Вивести всі вистави\n";
        cout << "(Q)Вийти з програми\n";
        cout << "(T)Вивести вистави конкретного дня\n";
        cout << "Виберіть команду: ";
        cin >> ch;
    } while (!strchr("enptdq", tolower(ch)));
    switch (ch)
    {
    case 'e': enter();
        break;
    case 'n': sortN();
        break;
    case 'p': sortP();
        break;
    case 'q': quit();
        break;
    case 'd': display();
        break;
    case 't': display2();
        break;
    }
    //return tolower(ch);
}
 void enter()
{
    char c;
    for (int i = n; i < sizeof(Group); i++)
    {
        cout << endl << "Введіть назву вистави: ";
        cin >> Group[i].Name;
        cout << "Введіть день вистави: ";
        cin >> Group[i].Date.day;
        cout << "Введіть місяць вистави: ";
        cin >> Group[i].Date.month;
        cout << "Введіть рік вистави: ";
        cin >> Group[i].Date.year;
        cout << "Введіть кількість квітків: ";
        cin >> Group[i].tickets;
        cout << "Введіть ціну квитка: ";
        cin >> Group[i].price;
        n += 1;
        do {
            cout << "\n(M)Повернутись в меню";
            cout << "\n(E)Продовжити вводити дані";
            cout << "\nВиберіть команду: ";
            cin >> c;
        } while (!strchr("em", tolower(c)));
        switch (c)
        {
        case 'e': continue;
            break;
        case 'm': menu();
            break;
        }
    }
    
}
 void sortP()
 {
     for (int j = 0; j < n; j++)
     {
         for (int i = 0; i < n-1-j; i++)
         {
             if (Group[i].price > Group[i + 1].price)
             {
                 swap(Group[i], Group[i + 1]);
             }
         }
     }
     display();
     
 }
 void sortN()
 {
     for (int j = 0; j < n; j++)
     {
         for (int i = 0; i < n-1-j; i++)
         {
             if (strcmp(Group[i].Name, Group[i+1].Name) > 0)
             {
                 swap(Group[i], Group[i + 1]);
             }
         }
     }
     display();
 }
 void display()
 {
     if (n == 0)
         cout << "\nСписок пустий!\n";
     for (int i = 0; i < n; i++)
     {
         cout << endl << "\nНазва вистави: "; cout << Group[i].Name;
         cout << endl << "День вистави: "; cout << Group[i].Date.day;
         cout << endl << "Місяць вистави: "; cout << Group[i].Date.month;
         cout << endl << "Рік вистави: "; cout << Group[i].Date.year;
         cout << endl << "Кількість квітків: "; cout << Group[i].tickets;
         cout << endl << "Ціна квитка: "; cout << Group[i].price;
     }
     menu();
 }
 int quit()
 {
     return 0;
 }
 void display2()
 {
     int d, m, y, k = 0;
     cout << "\n\nВведіть дату";
     cout << "День: "; cin >> d;
     cout << "Місяць: "; cin >> m;
     cout << "Рік: "; cin >> y;
     for (int i = 0; i < n; i++)
     {
         if (d == Group[i].Date.day && m == Group[i].Date.month && y == Group[i].Date.year) 
         {
             cout << endl << "\nНазва вистави: "; cout << Group[i].Name;
             cout << endl << "День вистави: "; cout << Group[i].Date.day;
             cout << endl << "Місяць вистави: "; cout << Group[i].Date.month;
             cout << endl << "Рік вистави: "; cout << Group[i].Date.year;
             cout << endl << "Кількість квітків: "; cout << Group[i].tickets;
             cout << endl << "Ціна квитка: "; cout << Group[i].price;
             k = 1;
         }
     }
     if (k == 0)
         cout << "\nВистав у цей день немає!\n";
     menu();
     
 }
 