Problem z programem [C++]

0

Mam spory problem z programem. Jest to bardzo mocno rozbudowany program, więc nie będę zamieszczał całego kodu źródłowego. Mianowicie mam Menu i gdy chce wyjść w Menu z programu wszystko działa spoko. Jeśli jednak włącze program, a potem taki czytacz i znowu wejdę do menu to program się nie wyłącza tylko z menu trafia do czytacza. Wiem że trochę pogmatwany, ale nie wiem jak to wytłumaczyć.
To jest MENU:

 while(!(cin>>Suchecki)) 
    {
    cout << " Nieznana opcja!"; 
    cout << endl << endl << " Nacisnij dowolny klawisz"; //komunikat błędu
     cin.clear(); //kasowanie flagi błędu strumienia
     cin.sync();  //kasowanie zbędnych znaków z bufora
     getch(); system("cls"); MENU(); break;
     }                                                    //wybór rzeczy
    switch(Suchecki)
    {
                    case 1: system("cls"); kalkulator(); break;
                    case 5: system("cls"); kolory(); break;
                    case 3: system("cls"); geografia(); break;
                    case 4: system("cls"); rozrywka(); break;
                    case 2: system("cls"); czytacz(); break;
                    case 0: cout << " Dziekuje :)!!!! " << endl;
                            cout << " Do nastepnego razu\n"; system("PAUSE"); break;
                    default: cout << " Nieznana opcja!"; 
                    cout << endl << endl << " Nacisnij dowolny klawisz" ;
                    getch();
                    system("cls");
                    MENU(); break;

    }

Gdy wejdę w czytacz czyli w :

 int czytacz()
{
    cout << " UZYWAJ TYLKO LITER ANGIELSKICH BEZ :V: i :X: \n Q wyjscie \n \n";
      //pobranie tekstu
  string text;
  cin >> text; //wprowadzenie

  //odtwarzanie kolejnych literek
  char file_name[] = "_.wav"; //bufor tekstowy z nazwą pliku, będzie zmieniana tylko 1-szy znak
  for(size_t i = 0; i < text.size(); ++i)
  {
   Sleep(200);
    file_name[0] = text[i]; //ustawienie 1 znaku nazwy pliku na aktualny znak w podanym tekście
    if (text == "q")
    {
    system("cls");
      MENU();    
    }
if(PlaySound(file_name, NULL, SND_SYNC | SND_FILENAME | SND_NODEFAULT) == FALSE) 
    {
    // jeśli nie ma pliku
       Sleep(2000);
      system("cls");
      
    }
  }

Jak w trakcie działania programu nie wejdę do Czytacza to wszystko działa wporzo, jak wejdę, to potem gdy chce wyjść z programu wchodzi czytacz. Błagam pomóżcie jak nie znacie rozwiązania mojego pytania, to może znacie jakiś inny sposób na zamknięcie programu niż getch() lub system("pause").

BŁAGAM pomóżcie tyle się namęczyłem, a teraz coś nie działa wszystko się zaczęło gdy dodałem czytacz. Proszę pomóżcie mam dopiero 15 lat, więc nie rzucajcie się że jakąś głupotę zrobiłem.

0

Błagam pomóżcie jak nie znacie rozwiązania mojego pytania, to może znacie jakiś inny sposób na zamknięcie programu niż getch() lub system("pause").
To nie ma kompletnie sensu, przecież getch() to funkcja z niestandardowego nagłówka Borlanda <conio.h> czekajaca na wciśnięcie klawisza klawiatury (dosłownie, nie korzysta ona ze standardowego wejścia), a system("pause") odpala program o nazwie "pause" (może to być program czekający na wciśnięcie klawisza, albo jakiś dowolny inny program, na przykład formatujący dysk C w międzyczasie wyświetlając nam na ekranie nagie panienki).

Żadne z powyższych nie służy do "zamykania programu".

edit:
Zapewne chodzi o to:

    if (text == "q")
    {
    system("cls");
      MENU();    // <<<<<<<<<<
    } 
0

A co zrobić żeby po prostu wszystko się wyłączyło, bo gdy nie wejdę do czytacza, to przez system("pause") się wyłącza. To co zrobić żeby się wyłączył cały program i konsola się zamknęła? z góry dzięki :)

0

Sory bo w jednej rzeczy zrobiłem błąd kopiując kod źródłowy w czytaczu mam tak:

int czytacz()
{
    cout << " UZYWAJ TYLKO LITER ANGIELSKICH BEZ :V: i :X: \n Q wyjscie \n \n";
      //pobranie tekstu
  string text;
  cin >> text; //wprowadzenie
 
  //odtwarzanie kolejnych literek
  char file_name[] = "_.wav"; //bufor tekstowy z nazwą pliku, będzie zmieniana tylko 1-szy znak
  for(size_t i = 0; i < text.size(); ++i)
  {
   Sleep(200);
    file_name[0] = text[i]; //ustawienie 1 znaku nazwy pliku na aktualny znak w podanym tekście
    if (text == "q")
    {
    system("cls");
      MENU();    
    }
if(PlaySound(file_name, NULL, SND_SYNC | SND_FILENAME | SND_NODEFAULT) == FALSE) 
    {
    // jeśli nie ma pliku
       
//////////////////////////////////////////////////////////////////////////////////////////
 ///////////////////////////////////////     system("cls");czytacz();    /////////////////////patrzcie na to/////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////
 
    }
  } 

ten kawałek tekstu co zaznaczyłem źle wcześniej wkleiłem. Natomiast zauważyłem, że w tym kawałku jeśli zamiast czytacz() damy MENU() to wszystko potem spoko się wyłącza. A mi potrzebne jest tam czytacz() ,żeby można było po kilka razy dawać tekst, nie wiem, ale wg coś tu jest bez sensu

1 użytkowników online, w tym zalogowanych: 0, gości: 1