Menüschleife mit Buchstaben Auswahl



  • Hallo, ich bin dabei ein Menü zu erstellen in dem ich mit Buchstaben navigieren möchte. So siehts bisher aus:

    // Programm zur Volumenberechnung
    // Sebastian Hösl
    // 03.03.2008
    
    #include "stdafx.h"
    //Unterprogramme:
    
    // Funktionsname:	Begrüßungstext
    // Beschreibung:	"
    // Parameter:		keine
    // Rückgabewert:	keine
    // 
    // Erstellt von R. Dudas, S. Hösl
    void title(void)
    {
    	printf("------------------------------------------------------------------------------\n");
    	printf("[ Willkommen zur Volumen Berechnung von Wuerfel, Kugel, Quader oder Zylinder ]\n");
    	printf("------------------------------------------------------------------------------\n\n");
    	return;
    }
    // Funktionsname:	Menüabfrage
    // Beschreibung:	Auswahl der gewünschen Form
    // Parameter:		keine
    // Rückgabewert:	wert
    // 
    // Erstellt von R. Dudas, S. Hösl
    int menu(void)
    {
    	int wert;
    	printf("bitte auswählen:\n\n");
    	printf("   | Wuerfel  -  1\n");
    	printf("   | Kugel    -  2\n");
    	printf("   | Quader   -  3\n");
    	printf("   | Zylinder -  4\n");
    	printf("   | Beenden  -  0\n\n   ");
    	scanf("%i", &wert);
    	fflush(stdin);
    	return wert;
    }
    // Funktionsname:	Ausgabe des Ergebnis
    // Beschreibung:	Ergebnis wird ausgegeben
    // Parameter:		erg
    // Rückgabewert:	keine
    // 
    // Erstellt von R. Dudas, S. Hösl
    double ausgabe(double erg)
    {
    	printf("das Volumen betraegt %lf\n\n", erg);
    	return erg;
    }
    // Funktionsname:	Würfel Volumen Berechnung
    // Beschreibung:	"
    // Parameter:		x
    // Rückgabewert:	Vw
    // 
    // Erstellt von R. Dudas, S. Hösl
    double vwuerfel (double x)
    {
    	double Vw;
    	Vw=x*x*x;
    	return Vw;
    }
    // Funktionsname:	Kugel Volumen Berechnung
    // Beschreibung:	"
    // Parameter:		r
    // Rückgabewert:	Vk
    // 
    // Erstellt von R. Dudas, S. Hösl
    double vkugel (double r)
    {
    	double Vk;
    	double PI=3.14;
    	Vk=r*r*r*PI/6;
    	return Vk;
    }
    // Funktionsname:	Quader Volumen Berechnung
    // Beschreibung:	"
    // Parameter:		a, b, c
    // Rückgabewert:	Vq
    // 
    // Erstellt von R. Dudas, S. Hösl
    double vquader (double a, double b, double c)
    {
    	double Vq;
    	Vq=a*b*c;
    	return Vq;
    }
    // Funktionsname:	Zylinder Volumen Berechnung
    // Beschreibung:	"
    // Parameter:		h, r
    // Rückgabewert:	Vz
    // 
    // Erstellt von R. Dudas, S. Hösl
    double vzylinder (double h, double r)
    {
    	double Vz;
    	double PI=3.14;
    	Vz=r*r*PI*h;
    	return Vz;
    }
    // Funktionsname:	Hauptschleifen Bedingung
    // Beschreibung:	"
    // Parameter:		keiner
    // Rückgabewert:	weiter
    // 
    // Erstellt von R. Dudas, S. Hösl
    char wiederholen(char weiter)
    {
    	printf("   | nochmal was berechnen?\n");
    	printf("   | Wenn ja dann geben Sie ein j ein\n");
    	printf("   | Alles andere beendet das Programm!\n\n   ");
    	scanf("%c", &weiter);
    	fflush(stdin);
    	return weiter;
    }
    // Funktionsname:	Abfrage Fall 1 - Würfel
    // Beschreibung:	"
    // Parameter:		wuerfel
    // Rückgabewert:	wuerfel
    // 
    // Erstellt von R. Dudas, S. Hösl
    double abfrage(double wuerfel)
    {
    	printf("bitte Seitenlaenge Ihres Wuerfels angeben!\n\n   ");
    	scanf("%lf", &wuerfel);
    	fflush(stdin);
    	return wuerfel;
    }
    //Hauptprogramm:
    int _tmain(int argc, _TCHAR* argv[])
    {
    //Variablen Deklaration des Hauptprogramms:int auswahl;
    	double x=0, a, b, c, h, r, erg, wuerfel=0;
    	char k, weiter=0;
    
    //Begrüßung:
    	title();
    //Hauptschleife:
    do
    {
    //Menüabfrage:
    auswahl=menu();
    //Menü:
    switch (auswahl)
    {
    	case 1: //Würfel
    		x=abfrage(wuerfel);
    		erg=vwuerfel(x);		
    		ausgabe(erg);
    	break;
    
    	case 2: //Kugel
    		//abfrage(r)
    		printf("bitte Radius Ihrer Kugel angeben!\n\n   ");
    		scanf("%lf", &r);
    		fflush(stdin);
    		erg=vkugel(r);
    		ausgabe(erg);
    	break;
    
    	case 3: //Quader
    		printf("bitte die Seitenlaengen Ihres Quaders angeben!\n\n   ");
    		scanf("%lf%c%lf%c%lf", &a, &k, &b, &k, &c);
    		fflush(stdin);
    		erg=vquader(a, b, c);
    		ausgabe(erg);
    	break;
    
    	case 4: //Zylinder
    		printf("bitte geben Sie erst die Hoehe und dann den Radius Ihres Zylinders an!\n\n   ");
    		scanf("%lf%c%lf", &h, &k, &r);
    		fflush(stdin);
    		erg=vzylinder(h, r);
    		ausgabe(erg);
    	break;
    
    	case 0: //Beenden
    		printf("   | ENDE");
    		return 0;
    
    	default: //Fehlerfall
    		printf("Bitte treffen Sie eine gueltige Auswahl!\n\n   ");
    }
    //Hauptschleifen Bedingung
    	weiter=wiederholen(weiter);
    }
    while (weiter=='j');
    
    	return 0;
    }
    

    Nun soll ich das ganze so umbauen das es nur mit Buchstaben funkt.
    Müsste sie also irgendwie als char einlesen - bloß wie, ich komm nicht darauf.

    Gebt mir nur nen Tipp, will ja schließlich selbst darauf kommen. :p



  • Das ist doch gar kein C++. Falsches Forum.



  • Falsches Forum, aber dennoch ein Tipp:

    http://www.cppreference.com/stdio/scanf.html

    Sollte reichen..



  • Ich dachte mir schon das mal wieder nur Produktive Antworten bekomme 🙂

    Es geht folgendermaßen:
    Die abzufragenden Buchstaben in der Switch-Verzweigung in Hochkommas stellen und mit char einlesen. dann gehts

    //Projektname:	 Kasino
    // Erstellt von S. Hösl
    
    #include "stdafx.h"
    //Unterprogramme:
    /////////////////
    // Funktionsname:	Begrüßungstext
    // Beschreibung:	"
    // Parameter:		keine
    // Rückgabewert:	keine
    // 
    // Erstellt von S. Hösl
    void title(void)
    {
    	printf("------------------------------------------------------------------------------\n");
    	printf("                        [ Willkommen im Kasino!!! ]\n");
    	printf("------------------------------------------------------------------------------\n\n");
    	return;
    }
    // Funktionsname:	Hauptschleifen Bedingung
    // Beschreibung:	"
    // Parameter:		keiner
    // Rückgabewert:	weiter
    // 
    // Erstellt von S. Hösl
    char wiederholen(char weiter)
    {
    	printf("   | nochmal was berechnen?\n");
    	printf("   | Wenn ja dann geben Sie ein j ein\n");
    	printf("   | Alles andere beendet das Programm!\n\n   ");
    	scanf("%c", &weiter);
    	fflush(stdin);
    	return weiter;
    }
    // Funktionsname:	Menüabfrage
    // Beschreibung:	Spielauswahl
    // Parameter:		keine
    // Rückgabewert:	wert
    // 
    // Erstellt von S. Hösl
    char menu(void)
    {
    	char wert;
    	printf("hier koennen Sie Ihr gewuenschtes Spiel auswaehlen:\n\n");
    	printf("	| Muenzspiel   - M |\n");
    	printf("	| Wuerfelspiel - W |\n");
    	printf("	| Roulette     - R |\n");
    	printf("	| Gluecksrad   - G |\n");
    	printf("	| Ende         - E |\n\n");
    	scanf("%c", &wert);
    	fflush(stdin);
    	return wert;
    }
    int _tmain(int argc, _TCHAR* argv[])
    {
    //Variablen Deklaration des Hauptprogramms:
    	char M=1, W=1, R=1, G=1, E=1;
    	char auswahl;
    	double x=0, a, b, c, h, r, erg, wuerfel=0;
    	char k, weiter=0;
    //Begrüßung:
    	title();
    //Hauptschleife:
    do
    {
    //Menüabfrage:
    auswahl=menu();
    //Menü:
    switch(auswahl)
    {	
    	case 'M': printf("Münzspiel"); //Münzspiel
    		break;
    	case 'W': printf("Würfelspiel"); //Würfelspiel
    		break;
    	case 'R': printf("Roulettespiel"); //Roulettespiel
    		break;
    	case 'G': printf("Glücksrad"); //Glücksrad
    		break;
    	case 'E': printf("Ende"); //Ende
    		return 0;
    		break;
    	default: printf("Bitte treffen Sie eine gueltige Auswahl!\n\n   "); //Fehlerfall
    }
    //Hauptschleifen Bedingung
    	weiter=wiederholen(weiter);
    }
    while (weiter=='j');
    
    	return 0;
    }
    

    Nochmals vielen herzlichen Dank allerseits ... 😃



  • naja hat nix mit produkiven antworten zu tuen...du hast schlicht und einfach in das falsch unterforum gepostet, dein code ist nicht C++



  • Also wenn einer kommt und fragt, wie man mit scanf char's einliest, dann muss ich denjenigen hald leider einfach nochmal zur Referenz schicken, weil so einen riesen Code denke ich nicht mal durchzulesen. Vor allem, wenns so eine einfache Aufgabe ist..

    Wie du ja jetzt selber gemerkt hast, ist es genau das gleiche, wie mit Integer. Und das hättest du auch in dem Link gefunden..


Anmelden zum Antworten