Menue-Aufbau mit Rücksprungfunktion...wie am besten implementieren?
-
Hi Leute,
ich will eine Art Menü-struktur aufbauen in der man durch auswahlen eine Ebene tiefer kommen kann aber auch wieder zurück oder bei falscheingabe erneut aufgefordert wird in der gleichen Ebene.
Mache ich das am besten über Strukturen oder schleifen oder wie ist es am elegantesten?
-
hallo
das hört sich sehr nach einem verschachtelten schleifenkonstrukt an, mit ein paar if abfragen und mit sprüngen, break .. aus der jeweils inneren schleife, oder continue.. zur nächsten schleifeniteration.
ps: was natürlich nicht heißt, daß in den schleifen nicht funktionen aufgerufen werden können... die dann an die stelle ihres aufrufes wieder zurückkehren.
-
so hab ich mir da auch gedacht. Sprungfunktionen sind die goto anweisungen oder?
-
no no .. nix goto
alles (fast alles sinnvolle) ist zu lösen mit while, for, break und continue.
break und continue sind sprünge, break aus der innersten schleife raus, continue setzt die iteration fort.
du wirst sehen, alles geht ohne goto
-
Na gut, probieren kann ich es ja einmal, und wenns net klappt ist dieses Forum ja auch noch da
-
@Airness
Ich rate dir, dass du deine Ebenen mit Funktionen realisierst. Du kannst dann jederzeit problemlos aus deiner "Ebene" mit einem return in die aufrufende Ebene "zurückspringen".
-
@ AJ
also praktisch als returnwert den Funktionsnamen der Funktion einer ebene höher?
Sorry das ich so blöd frage, aber ich wurde ohne C-Kenntnisse vor ein ziemlich großes Project gestellt und bin nun am rotieren...
-
Nein, ein einfaches Return reicht. Es wird immer zur aufrufenden Funktion zurückgesprungen. Wenn du natürlich einen Rückgabewert brauchst, musst du natürlich einen angeben, aber die Funktion weiss schon, wer sie aufgerufen hat.
-
Danke Carsten, dann probier ich das auch mal aus
-
Also sorry bekomme das nicht wirklich hin, könntt ihr mir mal den Code für eine Funktion mit rücksprung hinschreiben?
Mir ist irgendwie das Prinzip nicht wirklich klar! THX
-
Hallo??? keiner da der mir einen kleinen Schupps geben könnte
-
#include <stdio.h> #include <stdlib.h> void ungueltig() { printf("Eingabe ungueltig\n\n"); return; } void schreiben() { int zahl; printf("--- Untermenue: Schreiben --- \n"); printf("1 - Brief schreiben\n"); printf("2 - Bewerbung schreiben\n"); printf("----------------- \n"); printf("Bitte auswaehlen:\n"); do {scanf("%i",&zahl);} while ( getchar() != '\n' ); switch(zahl){ case 1: printf("Sie haben einen Brief geschrieben\n"); printf("Rueckkehr zum Hauptmenue mit Return\n\n\n"); return; case 2: printf("Sie haben eine Bewerbung geschrieben\n"); printf("Rueckkehr zum Hauptmenue mit Return\n\n\n"); default: return; } } int hauptmenue() { int auswahl; printf("--- Hauptmenue --- \n"); printf("1 - Schreiben\n"); printf("2 - Lesen\n"); printf("3 - Ende\n"); printf("----------------- \n"); printf("Bitte auswaehlen:\n"); do {scanf("%i",&auswahl);} while ( getchar() != '\n' ); switch (auswahl){ case 1: schreiben(); break; case 2: printf("Lesen\n"); break; case 3: printf("Ende\n"); return 1; default: break; } return 0; } int main() { int status = 0; while(status != 1) status = hauptmenue(); return 0; }
Das wird zwar keinen Schönheitspreis gewinnen, sollte aber erstmal funktionieren. Ich hoffe, es hilft dir auch, dir deine Lösung fertig basteln.
-
Super danke! Das hat mir total geholfen!
Nun kann ich selber noch weiter rumbasteln!