NO0b kommt...;)again;)



  • if (x <= 100 || x >= 110) // wenn x zwichen 100 unf 110 ist,
    

    so wies da steht is es genau umgekehrt: das if tritt immer dann ein, wenn x kleiner-gleich 100 oder x größergleich 110 ist, dh genau die werte bei denen das if zutreffen soll werden ausgeschlossen 😃



  • Caipi schrieb:

    p3ac3 schrieb:

    aber wenn ichs ausführe kann ich immer noch nur eine zahl eingeben und dann schließt sichdas fenster wieder... 😕

    Win32-Konsolen-Applikationen schließen sich von selbst, wenn sie komplett ausgeführt wurden.

    Lösung: Entweder direkt aus der Konsole heraus das Programm starten, oder am Schluss noch eine "wait"-Funktion einbauen. Siehe dazu auch: Win32-Konsole FAQ - Automatisches schließen verhindern

    Caipi

    darum hat er wohl das cin.get() hingeklatscht, nur das allein hilft nich @ threadsteller!



  • ich habs jetzt so gemacht:

    #include <iostream>
    
    using namespace std;
    
       short x = 0;  // deklariert die var. x und weist ihr den wert 0 zu
    
    int variable;
    int main()
    {
        cout << " Bitte gib einen Wert ein: ";
        cin >> x;  // erwartet wert eingabe von var. x
    
        if (x == 100 || x == 200 || x == 300 )  // wenn x gleich 100 ist, 
        {
           cout << " x = " << x << '\n';
           x = x*4;    //dann mulzipliziere x *4 
        }  
       else if (x >= 100 || x <= 110) // wenn x zwischen 100 und 110 liegt 
        { 
           cout << " x = " << x << '\n';
           x = 400;            //gib x den wert 400
          }
    
       else                   //wenn alles nicht zutrifft dann,
        {
            cout << " x = " << x << '\n';                  
            x = 0;             // gib x den wert 0 !
        }
    
        cin >> variable;
    
        return 0;
    }
    

    jetzt kann ich zwar die zahl iengeben und das fenster bleibt offen aber er greift dann icht auf die if funktionen zu?? warum??



  • 1. sch... überschrift!!! 😡
    2. was geht nicht??? der error? das fenter schliessen? die geheimformel um die weltherschafft an sich zu reissen??? oder was



  • nee das fenster schliesst sich immer wieder nach dem ich die erste zahl eingegebnen hab...sry wegen der übeschrift... ➡ ...





  • oder statt des cin.get

    kannste auch

    int dummy;
    
    cin >> dummy;
    

    machen.

    oder wenn du die variable sparen willst auch ein einfaches

    cin >> x;  // das von oben halt, brauchst ja eh nicht mehr :)
    


  • und um sone quick'n'dirty lösung zu vermeiden gibts den EIntrag in der FAQ (link siehe oben)



  • THE_FreaK schrieb:

    und um sone quick'n'dirty lösung zu vermeiden gibts den EIntrag in der FAQ (link siehe oben)

    jetzt komm, 1. ist das ergänzend wenn der den link zur FAQ nicht checkt

    2. der pc wird nicht explodieren

    3. zu einem quick and dirt programm gehört auch ein quick 'n dirt'y'o lösung 🙂

    4. was soll ausserdem grossartiges passieren? die variable wird doch freigegeben und das wars. wo sind da also die nachteile fürs OS ?



  • newkid_ schrieb:

    THE_FreaK schrieb:

    und um sone quick'n'dirty lösung zu vermeiden gibts den EIntrag in der FAQ (link siehe oben)

    4. was soll ausserdem grossartiges passieren? die variable wird doch freigegeben und das wars. wo sind da also die nachteile fürs OS ?

    Was ist wenn noch Zeichen im Input-Puffer stehen? Dann bewirkt diese Anweisung wirklich großartiges... :p

    Deswegen (ich wiederhole mich zwar ungern aber was solls) siehe besser die Win32 und Konsolen-FAQ. (Direkter Link zum Thread wurde bereits zweimal gepostet).

    Caipi



  • Caipi schrieb:

    Was ist wenn noch ein '\n' im Input-Puffer steht? Dann bewirkt diese Anweisung wirklich großartiges... :p

    Caipi

    oder was ist wenn nachdem im puffer der code eines üblen wurms anfängt 🙄
    oder der code zu einer maschine die aus gülle gold herstellen kann



  • newkid_ schrieb:

    oder was ist wenn nachdem im puffer der code eines üblen wurms anfängt 🙄
    oder der code zu einer maschine die aus gülle gold herstellen kann

    Warum so Aggresiv? 🙂 Ist das so utopisch wie ein Wurm?

    Desweiteren habe ich mich in meinem Posting auf was du dich jetzt bezogen hast falsch ausgedrückt, ich meinte nicht '\n' sondern allgemein ein Zeichen, welches ungleich einem Blank ist 😉

    Caipi



  • nächste version(funktioniert immer noch nicht... :

    #include <iostream>
    
    using namespace std;
    
    void wait()
    {
              cin.clear();
              cin.ignore(std::cin.rdbuf()->in_avail()); 
              cin.get();
    }
    
    short x = 0;
    
    int main()
    {
            cout << " Bitte gib einen Wert ein: ";
            cin >> x;  
    
            if (x == 100 || x == 200 || x == 300 )   
        {
            cout << " x = " << x << '\n';
            x = x*4;     
        }  
            else if (x >= 100 || x <= 110)  
        { 
            cout << " x = " << x << '\n';
            x = 400;            
        }
    
            else                   
        {    
            cout << " x = " << x << '\n';                  
            x = 0;             
        }  
    
        return 0;
    }
    

    und es geht nicht darum das wenn ich es ausführe es sofort weider schließe, sondern das es sich erst schließt nachdem das erste cout ausgeführt wurde und ich den wert für x eingegebne habe... 🙄



  • und es geht nicht darum das wenn ich es ausführe es sofort weider schließe, sondern das es sich erst schließt nachdem das erste cout ausgeführt wurde und ich den wert für x eingegebne habe... 🙄

    Heißt das, dass du das Ergebnis von x nicht mehr angezeigt bekommen möchtest? Dann lass es so...

    Ansonsten musst du die wait-Funktion schon aufrufen 😉

    Caipi



  • #include <iostream>
    
    using namespace std;
    
    void wait()
    {
              cin.clear();
              cin.ignore(std::cin.rdbuf()->in_avail());
              cin.get();
    }
    
    short x = 0;
    
    int main()
    {
            cout << " Bitte gib einen Wert ein: ";
            cin >> x;  
    
            if (x == 100 || x == 200 || x == 300 )  
        {
            cout << " x = " << x << '\n';
            x = x*4;  
    
    		wait();
    
        }  
            else if (x >= 100 || x <= 110)  
        {
            cout << " x = " << x << '\n';
            x = 400;
    
    		wait();
    
        }
    
            else                  
        {    
            cout << " x = " << x << '\n';                  
            x = 0; 
    
    		wait();
    
        }  
    
        return 0;
    }
    

    Wenn der Thread noch weitergeht wird mir schlecht 😡 .



  • gegen wait habe ich was.
    wenn schon auf nen tastendruck gewartet werden muss (was ich für völlig nutzlos halte, starte das prog doch aus der konsole!), dann auf keinen fall so, daß man es überhaupt nicht mehr durch eingabeumleitung fernsteuern kann.



  • volkard schrieb:

    gegen wait habe ich was.
    wenn schon auf nen tastendruck gewartet werden muss (was ich für völlig nutzlos halte, starte das prog doch aus der konsole!), dann auf keinen fall so, daß man es überhaupt nicht mehr durch eingabeumleitung fernsteuern kann.

    jep ersten das

    und 2tens

    @steff3

    was bist du für ein programmierer/in ???

    Will ja nichts sagen aber beisowas wird MIR schlecht. Da nützt dir dann der rote kopf auch nichts. du hast die fkt wait die in jedem case aufgerufen wird 🙄 dann schreib ( da es ja auf jeden fall gemacht werden soll ) doch bitte am schluss hin. sowas lernt mal eigentlich gleich am anfang beim thema funktionen



  • Sind If und Else-Zweige Funktionen ? Das die Funktion main nach dem beenden der Bedingungen weiter geht ist mir bekannt. Aber hat es jemanden geschadet, dass in jder klausel die Funktion aufgerufen wird?!? - nein
    Und im übrigen mache ich das immer so, bei mir heißt das Übersicht.



  • steff3 schrieb:

    Und im übrigen mache ich das immer so, bei mir heißt das Übersicht.

    bei mir heisstd as unübersichtlich.



  • steff3 schrieb:

    Sind If und Else-Zweige Funktionen ? Das die Funktion main nach dem beenden der Bedingungen weiter geht ist mir bekannt. Aber hat es jemanden geschadet, dass in jder klausel die Funktion aufgerufen wird?!? - nein
    Und im übrigen mache ich das immer so, bei mir heißt das Übersicht.

    ???
    kannst du deutsch? ich sagte nicht, das if else fkt sind!

    ich meinte mit fkt das hier --> wait();

    das ist überall drinnen. normalerweise rufst du das vorm return 0; auf! das ist übersichtlich

    ausserdem

    Aber hat es jemanden geschadet, dass in jder klausel die Funktion aufgerufen wird?!?

    Das ist falsch. die fkt KANN nur in einem zweig aufgerufen, es wird nicht in jedem aufgerufen. aber egal.

    naja schreib deinen unübersichtlichen code, wenn dein arbeitgeber nichts dagegen hat und es dir spass macht 🙄


Anmelden zum Antworten