"Zapętlenie się" c++

0

mam taki mini program:

int main()
{
	tabliczka tablica;
	main_menu();
	if(menu==1)
	{
		do{
		tablica.napis();
		}while(litera != 'K');
		main_menu();
	}
	if(menu==2)
	{
		// jakies tam instrukcje
	}
}

Wszystko fajnie działa tylko jak wybiorę menu==1 i zrobi on tą pętlę do...while i nacisnę przycisk 'K' to później mam problem, bo powróci on do menu jednak wróci "2 razy", a nie tak jak powinien jeden raz. Czyli jak wybiorę funkcję pierwszą w menu i później zatrzymam pętlę przyciskiem 'K' to on żeby przejść do drugiej funkcji muszę 2 razy wykonać kombinację klawiszy 2 enter 2 enter i dopiero wtedy przechodzi do funkcji drugiej ... :/

funkcja main wygląda następująco i nie widzę niczego co on by mógł "powtarzać" to:

 
void main_menu()
{
	tabliczka tablica;
	system("cls");
	// wypisanie cout funkcji w programie
	cin >> menu;
}
1

nie wiem po co wywołujesz 2 razy main_menu. Ta funkcja z tego co widzę wczytuje tylko do zmiennej "opcję menu". Zrób to wszystko w pętli(wywołanie main_menu i te sprawdzanie warunków). Funkcję main_menu wywołaj tylko raz w tej pętli.

1

Tak powinno mniej więcej wyglądać prawidłowe menu

int main()
{
        tabliczka tablica;
       
	bool end = false;
	while(!end) {
                 std::cin >> menu;
        	if(menu==1)
        	{
                	do{
                	tablica.napis();
                	}while(litera != 'K');
        	}
        	if(menu==2)
        	{
                // jakies tam instrukcje
        	}
		if(menu == 3) {
			end = true;
		}
	}
}
 
1

to co napisałeś to trochę WT. Po co deklarujesz dwa razy

tabliczka tablica;

? Po co Ci ta funkcja z d**y? Jak wygląda klasa tabliczka? Gdzie zmienna litera zmienia jakiś stan? Jeżeli tworzysz już jakieś klasy, to nie możesz napisać tego jak człowiek, tylko piszesz jakąś hybrydę?

0

funkcja tablica wygląda następująco:

class tabliczka{
public:
void napis()
{
    cout << "Napis";
}

};
 

To jest tylko taka testowa klasa na razie tylko teraz mam problem bo nie umiem stworzyc menu do tego pozniej będę bawić się tymi klasami :P

0

Oto cały kod:

#include <iostream>

using namespace std;
char litera;
int menu;

class tabliczka{
public:
        void napis()
{
cout << "Napis";
};

};


void main_menu()
{
        tabliczka tablica;
        system("cls");		
	cout << "Wybierz: \n1 aby wyswietlic napis\n2 bedzie w przyszlosci";
        cin >> menu;
}

int main()
{
        tabliczka tablica;
        main_menu();
        if(menu==1)
        {
                do{
                tablica.napis();
                }while(litera != 'K');
                main_menu();
        }
        if(menu==2)
        {
                // nie ma tutaj na razie 
        }
}
0

Dziękuję wam za cierpliwość i pomoc :D
otóż zmieniłem trochę ten program co mi podał rabcio i tak on wygląda aktualnie i co najwazniejsze działa

bool end = false;
        while(!end) {
                main_menu();
                if(menu==1)
                {
                        do{
							tablica.napis();
                        }while(litera != 'K');
                }
                if(menu==2)
                {
                           // jakies funkcje ktorych aktualnie nie ma a beda w przyszlosci
                }
                if(menu == 3) {
                        end = true;
                }
        }

to jest int main() bo reszta pozostała bez zmian :D
Jeszcze raz Wam Dziękuję :-)

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