Fehlerhaftes Menü verbessern



  • Hallo Leute,

    Könnt ihr mir vielleicht helfen das geschriebene Menü zu verbessern? Man soll die Optionspunkte mit Ziffern wählen können. Wird jedoch ein Buchstabe eingegeben, läuft das Programm in einer Endlosschleife. Habe schon versucht das Problem mit -> if (cin.fail()) zu lösen, blieb jedoch erfolgslos. Würde mich sehr freuen

    Das ist aus der Gui.cpp

    Gui::MenueChoice Gui::getUserMenueChoice()
    {
    	int eingabe;
    
    	std::cout
    		<< "Options Menu" << std::endl			
    		<< "-----------" << std::endl
    		<< "1 : Programm 1 ausführen" << std::endl
    		<< "2 : Programm 2 ausführen" << std::endl
    		<< "3 : Programm 3 ausführen" << std::endl;
    
    	std::cout << "Eingabe: ";
    	std::cin >> eingabe;
    
    	{
    		return (MenueChoice)eingabe;
    	}
    
    	std::cout << "Falsche Eingabe!" << std::endl;
    
    	return MENUE_INVALID_CHOICE;
    }
    

    Das ist aus der Gui.h

    enum MenueChoice
    	{
    			MENUE_INVALID_CHOICE = 0,	
    			MENUE_ONE,
    			MENUE_TWO,
    			MENUE_EXIT
    	};
    
    MenueChoice getUserMenueChoice();
    

    das ist aus der main.cpp

    Gui gui1(test);		
    	int auswahl;
    
    	do
    	{
    		auswahl = gui1.getUserMenueChoice();	
    
    		if (auswahl == Gui::MENUE_ONE)
    		{
    			cout << "run test1" << endl;	 
    		}
    		else if (auswahl == Gui::MENUE_TWO)
    		{
    			cout << "run test2" << endl;	
    		}
    	} while (auswahl != Gui::MENUE_EXIT);
    


  • Ein paar Beiträge weiter unten gibt es eine ähnliche Anfrage (mit Lösung): If/else Abfrage solange wiederholen, bis eine Zahl eingegeben wurde.



  • //---------------------------------------------------------------------------

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

    #pragma hdrstop
    //---------------------------------------------------------------------------
    USERES("Project1.res");
    //---------------------------------------------------------------------------
    int main(int argc, char **argv)
    { int z1, z2, n1, n2, Z, N, R, Zn, Nn, x, y, wahl;

    printf("Programm 1\n");
    printf("=============\n");
    system("color F0");

    do
    {
    printf("Waehle aus folgenden Programmen:\n\n");
    printf(" 1) Addieren\n");
    printf(" 2) Subtrahieren\n");
    printf(" 3) Multiplizieren\n");
    printf(" 4) Dividieren\n");
    printf(" 5) Ende\n\n");
    printf("Deine Wahl:");
    scanf("%i",&wahl);
    printf("\n\n");

    printf("Geben Sie einen Wert fuer z1 ein: ");
    scanf("%i",&z1);
    printf("Geben Sie einen Wert fuer n1 ein: ");
    scanf("%i",&n1);
    printf("Geben Sie einen Wert fuer z2 ein: ");
    scanf("%i",&z2);
    printf("Geben Sie einen Wert fuer n2 ein: ");
    scanf("%i",&n2);
    printf("\n");
    switch (wahl)
    {
    case 1: printf("Addieren\n");
    printf("==========\n\n");

    Z = (z1 * n2) + (z2 * n1); Z = a;
    N = n1 * n2; N = b;

    while(a!=b)
    {
    if(a<b)
    {
    a = a + x;
    }
    if(b<a)
    {
    b = b + y;
    }
    }

    Zn = (z1 * n2) + (z2 * n1) / a;
    Nn = n1 * n2 /a;

    printf("Ergebnis:\n\n");
    printf("%i\n",Zn);
    printf("----\n");
    printf("%i\n\n",Nn);

    system("pause");
    break;

    case 2: printf("Subtrahieren\n");
    printf("==============\n\n");

    Z = (z1 * n2) - (z2 * n1);
    N = n1 * n2;

    printf("Ergebnis:\n\n");
    printf("%i\n",Z);
    printf("----\n"),
    printf("%i\n\n",N);

    system("pause");
    break;

    case 3: printf("Multiplizieren\n");
    printf("================\n\n");

    Z = z1 * z2;
    N = n1 * n2;

    printf("Ergebnis:\n\n");
    printf("%i\n",Z);
    printf("----\n");
    printf("%i\n\n",N);

    system("pause");
    break;

    case 4: printf("Dividieren\n");
    printf("===========\n\n");

    Z = z1 * n2;
    N = z2 * n1;

    printf("Ergebnis:\n\n");
    printf("%i\n",Z);
    printf("----\n");
    printf("%i\n\n",N);

    system("pause");
    break;

    case 5: printf("Das Programm wird beendet!!\n\n");
    break;

    default: printf("Fehler bei der Eingabe!!\n\n");
    } // switch-case Ende
    } while(wahl!=5);

    system("pause");
    return 0;
    }
    //---------------------------------------------------------------------------

    Hey kann mir jemand helfen es funktioniert nicht, weis nicht was der Fehler ist, Fehlermeldung:
    [C++ Error] Project1.cpp(26): Declaration Syntax error.
    😕



  • Fantastische Leistung... einfach mal 100 Zeilen Quelltext unformatiert in´s Forum gekotzt. Wenn du dir keine Mühe gibst das Problem zu lösen, warum erwartest du das dann von anderen? So guckt sich das niemand an.



  • Wenn du dir keine Mühe gibst das Problem zu lösen

    Wer sagt dass das = supertrue ist? (Vielleich gab man sich auch Mühe und es war trotzdem zu wenig gut! Gut sein == Mühe geben ? Hedonismus ist keine Anstrengung (Mühsal) zu haben und trotzdem "Gut/Besser" zu sein!)

    warum erwartest du das dann von anderen?

    Wenn oben tatsächlich true ist (wie auch immer) wieso dann nochmals = supertrue? (Man könnte sich selbst keine Mühe geben und trotzdem von anderen "Mühe" erwarten!)

    So guckt sich das niemand an.

    Logik ist nicht mehr als true und false?

    Ihr Antipopulist!



  • DocShoe schrieb:

    Fantastische Leistung... einfach mal 100 Zeilen Quelltext unformatiert in´s Forum gekotzt. Wenn du dir keine Mühe gibst das Problem zu lösen, warum erwartest du das dann von anderen? So guckt sich das niemand an.

    Da gebe ich dir einfach mal Recht.

    Ansonsten ist an dem Programm des thread-Ersteller soviel im Argen, daß man gar nicht weiß wo man anfangen soll.
    Was soll denn sowas innerhalb einer Funktion?:

    {
            return (MenueChoice)eingabe;
        }
    

    gez. DocRatlos


Anmelden zum Antworten