Switch case w while – powrót do menu głównego

0

Gdy chce wyjść z pętli while z warunkiem zamknięcia, wewnątrz drugiego while i kontynuować główną pierwszą pętle to program, wychodzi mi całkowicie, zamyka się. Co powinienem zmienić w moim kodzie żeby kontynuować działanie głównej pętli? Chodzi o case'4', przypadek z naciśnięciem n, czyli zamknięciem pętli wewnętrznej. Próbowałem uzywac continue ale chyba robie cos zle. Z góry bardzo dzękuje za pomoc:)

#include <iostream>
#include <string>
#include <windows.h>
#include <conio.h>
#include <algorithm>
#include <fstream>

using namespace std;
string napis;
string slowo;
string napisodw;
string konwersja;
int dl_cslowa;
int dl_napisu;
int dl_napisodw;
char wybor,wybor2;

int main()
{
    while(true)
    {
        system("cls");
        cout << "/ / MENU / / "<<endl;
        cout << "1. Zwraca liczbe liter w wyrazie."<<endl;
        cout << "2. Zwraca liczbe liter ciagu znakow ze spacjami."<<endl;
        cout << "3. Odrwaca ciag znakow."<<endl;
        cout << "4. Konwersja tekstu na DUZE LITERY."<<endl;
        cout << "5. Konwersja tekstu na MALE LITERY."<<endl;
        cout <<endl<<"PRESS Q TO EXIT"<<endl<<endl<<endl;
        cout << "Wybierz opcje z menu:";
        wybor=getch();
        system("cls");
        switch(wybor)
        {
            case '1':
                cout << "Podaj slowo:" << endl;
                cin >> slowo;
                dl_cslowa=slowo.length();
                cout<< "Posiada: "<<dl_cslowa<<" znakow"<<endl;
                system("PAUSE");

                cin.ignore();
            break;

            case '2':
                cout << "Podaj napis:" << endl;
                getline(cin,napis);
                dl_napisu=napis.length();
                cout << "Posiada: "<<dl_napisu<<" znakow"<<endl;
                system("PAUSE");
            break;

            case '3':
                cout << "Podaj napis do odwrocenia:" << endl<<endl;
                cout << "->    :";getline(cin,napisodw);
                dl_napisodw=napisodw.length();
                cout<<endl<< "<-    :";
                for (int i=dl_napisodw-1;i>=0;i--)
                {
                    cout <<napisodw[i];
                }
                cout<<endl<<endl;
                system("PAUSE");
            break;

            case '4':
                cout << "Wprowadz tekst do zmiany na DUZE litery:"<<endl<<endl;
                getline(cin,konwersja);
                transform(konwersja.begin(),konwersja.end(),konwersja.begin(),::toupper);
                cout <<endl<< konwersja<<endl;
                system("PAUSE");

                    while(wybor2!='n')
                    {
                        cout << "Czy chcesz zapisac do pliku?    PRESS  ( y )  to save to file, or  ( n )  to exit to menu.";
                        wybor2=getch();
                        switch (wybor2)
                            {
                            case 'y':
                                {
                                ofstream plik;
                                plik.open("ZmianaLiter.txt",ios::app);
                                plik << konwersja <<endl<<endl;
                                cout << "Zapisano dane"<<endl;
                                system("PAUSE");
                                }
                                break;
                            }
                            continue;
                    }
            case ('Q'):
            case ('q'):
                exit(0);

            default:
                cout <<endl<< "Nie ma takiej opcji w menu!"<<endl;
                system("PAUSE");
        }
    }
    return 0;
}

Nie wiem czy wszystko dobrze wyjaśniłem, więc dodam, że chodzi o powrót do menu głównego w przypadku naciśnięcia kolejno 4 potem n.

0

Znalazłem błąd, nie zamknąłem case'a 4 break'iem, continue usuniety bo byl niepotrzebny. Temat zamknięty.

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