switch - czy jest możliwość cofnięcia dokonanego wyboru?

0

Hej. Chciałbym się dzisiaj dowiedzieć czy jak mam zrobione menu za pomocą switch i jest tam menu w menu, używam kilka różnych switch, czyli

  1. aaa
  2. bbb
  3. ccc

jeśli wybrałem 1. aaa to wyświetla się kolejne

  1. ddd
  2. eee
  3. fff

i tak dalej, pytanie czy jeśli wybiorę w menu "1.aaa" to przeniesie mnie dalej i wyświetli mi się "1.ddd, 1.eee, 1.fff) to mogę zrobić jakiś myk, żeby cofnąć się do wcześniejszego wyboru, tzn znowu mogę wybrać z 1.aaa 2.bbb 3.ccc

Jest jakiś myk na to? Wiem, że mogę w do while zrobić, że mi się to zapętla, ale mój program będzie miał dużo różnych wyborów, więc wolałbym nie wciskać "na pałę, żeby się powtórzyło" jeśli coś wczęsniej przypadkiem źle wcisnę.

Nigdy nie spotkałem się z czymś takim, więc nie wiem czy jest to możliwe do wykonania. Jeśli tak, to prosiłbym o jakiś gotowy kod, jestem początkujący więc nawet coś ze stacka może sprawić mi trudność, jeśli nie będzie opisane co i jak.

Bardzo dzięuję i pozdrawiam :).

5

prosiłbym o jakiś gotowy kod, jestem początkujący więc nawet coś ze stacka może sprawić mi trudność, jeśli nie będzie opisane co i jak.

Jesteś początkujący, więc tym bardziej powinieneś takie rzeczy analizować na własną rękę - nawet jeśli zrozumienie prostego kodu zajmie Ci tydzień - a nie prosić o gotowce.

Narysuj swój pomysł na kartce i pomyśl jak chciałbyś takie menu przechowywać w pamięci bez wykorzystania if/switch/itd. - czyli inaczej: w jaki sposób to menu może być zaprezentowane jako struktura danych.

Lektura: tablice, listy jedno/dwu-kierunkowe, struct.

0

Możesz mieć tablice

W tablicy i w tej tablicy tablice, które będą zawierać funkcje z wyboru.

Pierwszy switch, pierwsza tablica w tablicy, a funkcje ze switcha w tych tablicach.
Drugi, druga tablica w tablicy itp.

I jak będziesz chciał switcha cofnąć, to tylko odejmiesz -2 gdyż iteration wzrośnie do następnego jeśli to zrobisz w pętli.
I tyle.

2

czy jak mam zrobione menu za pomocą switch i jest tam menu w menu, używam kilka różnych switch, czyli

Nie myśl o switch, pomyśl najpierw o tym, w jaki sposób będziesz reprezentował menu w programie:
("Bad programmers worry about the code. Good programmers worry about data structures and their relationships." Linus Torvalds)

możesz zrobić na przykład drzewko (jako strukturę danych, nie wnikam już w jaki sposób to w C++ się implementuje), które będzie reprezentowało różne pozycje menu i zrobić "kursor" tj. jakąś zmienną, która będzie trzymała dane o aktualnym menu (przypuszczam, że w C++ to może być jakiś wskaźnik, ale to nie jest ważne już). Wtedy zrobiłbyś np. przycisk powrót, który by podmieniał tę zmienną na poprzednią - możesz też użyć stosu (w sensie struktury danych) do zapamiętania iluś poprzednich pozycji.

ale możliwości zaimplementowania jest więcej. Można by to też zrobić (tak przypuszczam) na maszynie stanów (finite state machine), czy pewnie jeszcze inaczej.

Jeśli tak, to prosiłbym o jakiś gotowy kod,

Sam kod ci niewiele da pewnie, jeśli nie będziesz miał w głowie koncepcji, dlaczego tak, a nie inaczej (owszem, tę koncepcję możesz sobie wydedukować z gotowego kodu - problem w tym, że musisz podjąć tak czy siak pewien wysiłek, żeby zrozumieć).

0

Jeśli nie jesteś na zupełnym początku drogi i ogarniasz klasy i dziedziczenie, to pomyśl o maszynie stanów. Nawet w ramach ćwiczeń. Jeśli jednak nie ogarniasz, to dobre odpowiedzi padły wyżej.

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