funkcja, switch i system cls - co tutaj zrobiłem źle?

0
int first_choice()
{
	int first_choice;
	std::cout << "1. Zapoznałem się z działaniem programu" << std::endl;
	std::cout << "2. Wyjdź z programu" << std::endl;
	std::cout << std::endl;
	std::cin >> first_choice;
	std::cin.get();

	switch (first_choice)
	{
	case 1:
		system("cls");
		break;
	case 2:
		return 0;
	}
}

To jest moja DRUGA funkcja. Pierwsza powoduje, że na ekranie wyświetla się napis pobrany z pliku. Teraz wchodzi ta, której kod wkleiłem wyżej. Chcę, aby działało to tak, że jak ktoś wybierze opcję 1 to ekran się wyczyści (a kolejne funkcje coś tam będą robić, wyświetlać menu itp), a jak opcję 2 to program się wyłączy. Niestety, opcja 1 i 2 powoduje to samo, tzn program się wyłącza.

Może mi ktoś to zmienić?
return first_choice(); --> tak wywołuję tą drugą funkcję

2

Bo kończy Ci się program, a wtedy zamyka się konsola. Zamknij to w jakiejś pętli. I czyść bufor klawiatury, żeby przed następną iteracją nie pozostał w nim jaki enter.

BTW identyczna nazwa zmiennej i funkcji to proszenie się o nieszczęście,

1

Ta funkcja powoduje niezdefiniowane zachowane (UB). Nie ma obsłużonych wszystkich możliwych wyjść z funkcji.
Wybranie case 1: powoduje zwrócenie - właśnie, czego? Program po wykonaniu tego fragmentu program opuszcza
instrukcję wielokrotnego wyboru, czyli przechodzi do ostatniego nawiasu funkcji, a tam nie ma żadnego return.

0

Nazwę funkcji i zmiennej zmieniłem tak, żeby się różniły. Dodam, że jeśli zrobiłem dokładnie to samo ale bez funkcji to działa tak jak chciałem, ale w tej funkcji coś mi nie śmiga. Czy mógłby ktoś z Was poprawić mi ten kawałek kodu?

Chciałbym, żeby po wybraniu case 1: to co było wcześniej na ekranie zniknęło i pojawiły się inne komunikaty, które planuję później dodać.

Z góry dziękuję.

1

Powiedz coś więcej. Jakie znaczenia ma zwrócenie z funkcji wartości zerowej?
Najlepiej wklej cały kod, bo mam wrażenie, że nie rozumiesz działania funkcji i po co się z niej cokolwiek zwraca.

0

Ale to co napisałem to właściwie dopiero tyle mam. Mam jeszcze jedną funkcję wcześniej, która wyświetla mi spory tekst na ekranie (pobiera tekst z pliku) a ta funkcja, która mi nie działa ma za zadanie po wybraniu opcji 1 wykasować to, co wyświetliła funkcja 1 (żeby konsolka się wyczyściła i jakieś inne komunikaty się pokazały)

0

Nie odpowiedziałeś na pytanie. Po co funkcja zwraca wartość zero?

0

To w case 2? Robi to po to, żeby program się wyłączył. Chcę mieć możliwośc wyboru czy chcę wybrać opcję 1 i kontynuować program (np będą tam jakieś pytania) albo wyjść z programu.

1

Do poczytania: Funkcje
Zwrócenie z funkcji return 0 nie spowoduje zakończenia programu. Jedynie zwróci wartość 0 do miejsca wywołania.
Zmień typ zwracanej wartości z funkcji na void, a w case 2: zamień return 0 na instrukcję wyjścia z programu std::quick_exit(EXIT_SUCCESS) z <cstdlib>.

0

Ok, dzięki wielkie za pomoc!

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