c++ anfänger brauch hilfe mit do-while



  • servus ihr lieben,

    also erstmal der code:

    #include <iostream>
    #include <cstdlib>
    #include <cmath>
    #include <fstream>
    
    #define filmzahl 3
    
    //using namespace std;
    
    struct kunde
    {
    	char vorname;
    	char nachname;
    	float telenummer;
    } kundenanzahl[filmzahl];
    
    void neuerkunde(kunde film);
    //void bestellung;
    //void umsatz;
    //void spiel;
    
    int main()
    {
    char cmode;
    
    std::cout << "\n\nWelcome to my pizza programm. Please choose a mode. <n>ew client, <o>rder, <e>xchange,<p>lay a game\n\n\n";
    
    std::cin>> cmode;
    bool bauswahl=false;
    do
    {
        if (cmode =='n'||cmode=='N')
    	{
            std::cout<< "\nnew client";
    	//neuerkunde();
    	}
        else if (cmode=='o' || cmode=='O')
            std::cout<<"\noder";
        else if (cmode=='e' || cmode=='E')
            std::cout<<"\nexchange";
        else if (cmode=='p' || cmode=='P')
            std::cout<<"\nplay the game";
        else
    	{
            bauswahl=true;
    	std::cout <<"\nfalsche eingabe bittenochmal!";
    	}
    }while(bauswahl!=true);
    
    std::cout << "hier geht das programm weiter!";
    
    return 0;
    
    }
    
    void neuerkunde(kunde film)
    {
    
    std::cout<< "hallo";
    
    }
    

    so wie ihr set das programm ist noch nicht fertig 🙂 ich wollte so bischen das gelernte von einem monat mal anwenden und bin hier schon auf ein problem gestoßen.

    ich will das die do while schleife solange ausgeführt wird, bis man die richtige eingabe macht (n,N,o,O,p,P,e,E) ich hab das so versucht aber irgendwie wenn ich einen andren buchstaben eingeben, wird die schleife nicht fortgeführt. Mach ich da was falsch? mir scheint doch alles sehr logisch 😕

    so hab ich das auch probiert. wär cool wenn ich wissen würde wieso das auch net geht:

    }while(bauswahl=false);
    }while(!bauswahl);
    danke im voraus

    hicham


  • Mod

    Du solltest das Einlesen von cmode wohl lieber noch mit in die Schleife packen, sonst kann man seine Auswahl nicht mehr Ändern und hängt in einer Endlosschleife.



  • sers,

    so danke erstmal das habe ich nun getan. Das gute ist die schleife klappt 🙂

    das blöde ist nun das 1. wenn ich "ooooo" eingebe und <Enter> führt er für jedes o die anweisung extra. Ich möchte aber das es nur einmal ausgeführt wird bzw. das er mir dann ein fehler ausgibt wenn jemand "oooo" eintippt (mit "popop" führt er sogar beide anweisungen abwechselnd durch 😞 )
    und 2. nach der eingabe "o" und <Enter> bleibt er noch in der schleife aber er soll eben raus aus der schleife nur bei einer eingabe anders als meine ausgewählten buchstaben soll er in der schleife bleiben.

    thx
    hicham


  • Mod

    hicham schrieb:

    sers,

    so danke erstmal das habe ich nun getan. Das gute ist die schleife klappt 🙂

    das blöde ist nun das 1. wenn ich "ooooo" eingebe und <Enter> führt er für jedes o die anweisung extra. Ich möchte aber das es nur einmal ausgeführt wird bzw. das er mir dann ein fehler ausgibt wenn jemand "oooo" eintippt (mit "popop" führt er sogar beide anweisungen abwechselnd durch 😞 )

    Das ist schon nicht mehr ganz so leicht: Ich würde an deiner Stelle getline verwenden (liest eine ganze zeile ein) und dann nur das erste Zeichen der eingelesenen Zeichenkette betrachten.

    und 2. nach der eingabe "o" und <Enter> bleibt er noch in der schleife aber er soll eben raus aus der schleife nur bei einer eingabe anders als meine ausgewählten buchstaben soll er in der schleife bleiben.

    Dies liegt daran, dass deine Abbruchbedingung falsch ist (habe ich bei meiner ersten Antwort übersehen). Bei einer falschen Eingabe muss bauswahl auf false gesetzt werden (oder eben unverändert bleiben, weil es vorher false war) und bei einer richtigen Auswahl musst du es auf true setzen.



  • sers,

    ahhhhhhhhhhhhh superrr es hat geklappt =). Hab cin mit getline ausgetauscht und den zweiten Rat auch befolgt es klappt wie angegossen super danke dir =))

    ich hoffe dann bis bald und übrigens spitzen forum freue mich wenn ich auch mal irgendwann soweit bin fragen zu beantworten.

    mfg

    hicham


Anmelden zum Antworten