Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

hallo zusammen,

ich hab folgendes problem bzw. frage:

das ganze programm läuft in der konsole

ich hab mir ein simples menü gemacht realisiert mit switch anweisungen und dieses ding hab ich dann in eine do-while-schleife gepackt (denke das ist ne gute lösung, oder gibts da bessere/einfachere methoden??)

nun wenn ich zu meiner bedinung komme hab ich folgendes stehen


...

}

while((menuC != 'f') || (menuC != 'F'));

wenn ichs so mach kann ich so oft ein f oder ein F eingeben wie ich lustig bin das ding beendet die schleife einfach nicht... wieso? ich hab absolut keine ahnung mach ichs allerdings nur mit

...

}

while(menuC != 'f');

funktioniert das ganze ding wunderbar.

kann das evtl dran liegen dass es bei c++ (das ich nicht beherrsche) keinen || und da ja mei visual studio der compiler ja eigentlich ein c++ compiler ist??

und meine zweite frage ist:

wenn ich einen durchlauf der schleife habe, also z.b. menüpunkt a) ausführe und das programm dannach wieder das menü zeigt macht es das zwar auch aber zweimal

ich hab dann in der konsole zweimal das menü stehen aber beim ersten mal nur die printf anzeigen.

weis leider überhaupt nicht wieso.

wenn ihr den ganzen code braucht sagt bescheid, is noch nicht sehr viel zu posten :)

gruß

franky_

hmm das macht durchaus sinn :) da hat mich die logik mal wieder geschlagen ;)

danke dir habs versucht und jetzt funktionierts auch :)

aber was ich immer noch nicht verstehe ist wieso ich mein menü nach einem durchlauf dann plötzlich zweimal in der konsole stehen hab?!?

gruß und danke

franky_

ich kopier einfach mal die ganze main rein:

int main()

{

	char menuC;


	do

	{

	printf("W\x84hlen Sie ihre Aktion im Men\x81 durch Eingabe aus, best\x84tigen Sie mit Enter\n\n");

	printf(" a) alle Kontakte anzeigen\n");

	printf("  Kontakt suchen\n");

	printf(" c) Kontakt hinzuf\x81gen\n");

	printf(" d) Kontakt bearbeiten\n");

	printf(" e) Kontakt l\x94schen\n");

	printf(" f) Beenden\n");

	scanf("%c", &menuC);


	switch(menuC)

	{

	case'a':

	case'A': list_contacts();

		break;


	case'b':

	case'B':


	case'c':

	case'C':


	case'd':

	case'D':


	case'e':

	case'E': break;

	}

	}

	while((menuC != 'f') && (menuC != 'F'));


	system("PAUSE"); 


	return 0;

}[/code]

gibts da bessere möglichkeiten die auswahl einzulesen?

gruß

wenn ich einen durchlauf der schleife habe, also z.b. menüpunkt a) ausführe und das programm dannach wieder das menü zeigt macht es das zwar auch aber zweimal

ich hab dann in der konsole zweimal das menü stehen aber beim ersten mal nur die printf anzeigen.

Das liegt daran, dass du zeichenweise einliest (mit %c). Damit erhältst du nach der ersten Eingabe, ohne dass scanf wartet, das Zeichen für den Zeilenwechsel, den du mit der Eingabetaste ausgelöst hast.

Du könntest solche Zeichen ignorieren, und gleich nochmal scanf aufrufen:

do {
scanf("%c", &menuC);
} while( menuC == '\n' );[/code]

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.