• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z prostym menu w c++

VPS Starter Arubacloud
0 głosów
1,363 wizyt
pytanie zadane 15 grudnia 2016 w C i C++ przez Krystian Nowak Początkujący (330 p.)

Witam, z góry chce powiedzieć że jeśli chodzi o programowanie w c++ jestem totalnym laikiem. Podczas tworzenia prostego menu gry(gra, tablica wyników, wyjście), napotkałem problem, program przechodzi z menu głównego do gry, później ponownie do menu jednak nie chce po raz kolejny wrócić do gry. Przypuszczam że robię jakiś głupi błąd, nie potrafię jednak samodzielnie go ustalić, byłbym bardzo wdzięczny gdyby ktoś mi go wskazał, ewentualnie doradził jak zrobić to lepiej. Z góry dzięki!

Edit: Wiem że lepiej w int'cie po prostu wywołać od razu menu, ale to oczywiście nie rozwiązuje żadnego problemu.

 

#include <iostream>
#include <cstdlib>
using namespace std;

int opcja;

void menu()
{
    system("cls");
    cout << "---------------------" << endl;
    cout << "1 Gra" << endl;
    cout << "2 Tablica wynikow" << endl;
    cout << "3 Wyjscie" << endl;
    cin >> opcja;
    cout<<endl;

    switch(opcja)
    {
    case 1:
    gra();
    break;
    case 2:
    cout<<"Wybrales opcje nr 2" <<endl;
    break;
    case 3:
    cout<<"Wybrales opcje nr 3" <<endl;
    break;
    }
}

void gra()
{
    system("cls");
    cout <<"gra, wynik etc"<<endl;
    cout<<endl<<endl;
    cout<<"---------------------"<<endl;
    cout<<"1 Menu glowne"<<endl;
    cin >>opcja;
    if(opcja==1)
    {
    menu();
    }
}

int main()
{
    cout<<"---------------------" << endl;
    cout << "1 Gra" << endl;
    cout << "2 Tablica wynikow" << endl;
    cout << "3 Wyjscie" << endl;
    cin >> opcja;
    cout<<endl;
    switch(opcja)
    {
    case 1:
    gra();
    break;
    case 2:
    cout<<"Wybrales opcje nr 2" <<endl;
    break;
    case 3:
    cout<<"Wybrales opcje nr 3" <<endl;
    break;
    }


    return 0;
}

 

3 odpowiedzi

0 głosów
odpowiedź 15 grudnia 2016 przez MyWash Bywalec (2,640 p.)
wybrane 15 grudnia 2016 przez Krystian Nowak
 
Najlepsza

Skopiowałem twój program, spróbowałem skompilować i nie ruszyło w cale.

W funkcji menu odwolujesz sie do funkcji gra, którą w kodzie masz niżej. Funkcja menu nie zna takiej funkcji jak gra bo jest ona w kodzie dopiero później. Trzeba kompilatorowi powiedzieć, żeby sie nie przejmował i taką funkcje spotka za chwile.

#include <iostream>
#include <cstdlib>
using namespace std;

int opcja;
void menu();


void gra()
{
	system("cls");
	cout << "gra, wynik etc" << endl;
	cout << endl << endl;
	cout << "---------------------" << endl;
	cout << "1 Menu glowne" << endl;
	cin >> opcja;
	if (opcja == 1)
	{
		menu();
	}
}

void menu()
{
	system("cls");
	cout << "---------------------" << endl;
	cout << "1 Gra" << endl;
	cout << "2 Tablica wynikow" << endl;
	cout << "3 Wyjscie" << endl;
	cin >> opcja;
	cout << endl;

	switch (opcja)
	{
	case 1:
		gra();
		break;
	case 2:
		cout << "Wybrales opcje nr 2" << endl;
		break;
	case 3:
		cout << "Wybrales opcje nr 3" << endl;
		break;
	}
}





int main()
{
	cout << "---------------------" << endl;
	cout << "1 Gra" << endl;
	cout << "2 Tablica wynikow" << endl;
	cout << "3 Wyjscie" << endl;
	cin >> opcja;
	cout << endl;
	switch (opcja)
	{
	case 1:
		gra();
		break;
	case 2:
		cout << "Wybrales opcje nr 2" << endl;
		break;
	case 3:
		cout << "Wybrales opcje nr 3" << endl;
		break;
	}


	return 0;
}

W ten sposób u mnie działa w porządku. Pozdrawiam

komentarz 15 grudnia 2016 przez Krystian Nowak Początkujący (330 p.)
Dzięki wielkie, przy okazji spróbuje zamknąć to w tej pętli.
komentarz 15 grudnia 2016 przez MyWash Bywalec (2,640 p.)
moim zdaniem nie ma potrzeby. W menu wywolujesz funkcje gra();

jak gra sie wykona to tam znowu wywolujesz funkcje menu, która pyta którą opcje wybrać, więc będzie sie to wykonywało w nieskonczonosc
0 głosów
odpowiedź 15 grudnia 2016 przez Patrix354 Bywalec (2,030 p.)

Nie rozumiem dokładnie o co ci chodzi. Mógłbyś sprecyzować działanie całego programu. Może gdzieś powinieneś wstawić pętle nieskończoną. 

while(true)
{

}

Jakbyś wszystko sprecyzował to by mi było łatwiej.

0 głosów
odpowiedź 15 grudnia 2016 przez webster24tv Początkujący (260 p.)

Zapisz to w pętli while (która jest nieskończona)

{
//jakis kod

}while(true)

 

Podobne pytania

0 głosów
1 odpowiedź 1,990 wizyt
pytanie zadane 3 grudnia 2017 w Systemy operacyjne, programy przez rarituto Nowicjusz (150 p.)
–1 głos
1 odpowiedź 479 wizyt
pytanie zadane 26 kwietnia 2017 w SQL, bazy danych przez Ugari Nowicjusz (200 p.)
0 głosów
1 odpowiedź 534 wizyt
pytanie zadane 26 listopada 2016 w Rozwój zawodowy, nauka, praca przez Jiin Obywatel (1,390 p.)

92,452 zapytań

141,262 odpowiedzi

319,085 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...