Ergebnis 1 bis 10 von 10
  1. #1
    Trojaner
    Registriert seit
    11.11.2008
    Beiträge
    99

    Standard Rückgabewert funktioniert irgendwie nicht.

    Code:
    #include <iostream>
    #include <conio.h>
    using namespace std;
    
    int main(){
        
        float wert;
        
        cout<<"Bitte eine Fließkommazahl eingeben:"<< endl;
        cin>>wert;
        
        if( ! (cin>>wert) ){
            cerr<<"Fehler bei der Eingabe!"<< endl;
            }
            else  {
                 cout<<"Die Eingabe war: " <<wert << endl;
                 }
                 getch();
                 return 0;
    }
    Wenn man einen Buchstaben oder Wörter eingibt, wird zwar in der Console ausgegeben, dass dies ein Fehler war,jedoch wird bei einer richtigen Eingabe nicht die Zahl ausgegeben.
    Meine Frage:Wie bekomme ich es so hin, dass bei einer richtigen Eingabe (eine Zahl) die Ausgabe "Die Eingabe war: blablabla" erscheint?

  2. #2
    DateMake Dialer Avatar von redshark
    Registriert seit
    21.07.2008
    Beiträge
    109

    Standard

    irgendwie verssteh ich deine Formulierung der frage nicht....




    Legalize Weed World Wide!!
    ☺/
    /▌
    / \
    If u agree copy and paste

    [C++ Knowledge Level: Arrays]

  3. #3
    W32.FunLove Avatar von Cr4ckEye
    Registriert seit
    19.11.2008
    Beiträge
    123

    Standard

    Code:
    if( ! (cin>>wert) )
    Was möchtest du denn mit dieser Line erreichen?^^

    MfG

  4. #4
    DateMake Dialer Avatar von redshark
    Registriert seit
    21.07.2008
    Beiträge
    109

    Standard

    hehe hab ich mich auch schon gefragt... eig ist der ganze code unnütz...




    Legalize Weed World Wide!!
    ☺/
    /▌
    / \
    If u agree copy and paste

    [C++ Knowledge Level: Arrays]

  5. #5
    Anfänger
    Registriert seit
    18.11.2008
    Beiträge
    29

    Standard

    Du bekommst keine Ausgabe, weil der Elseteil in deiner Abfrage nicht erreicht wird.
    Abgesehen davon, für was 2 eingaben hintereinander?
    cin>>wert;
    if( ! (cin>>wert)

    Der Wert wurde noch nie verarbeitet, wieso dann ein erneutes cin?

    Erkläre am besten auch mal, was dein Programm zum Schluss können soll

  6. #6
    Trojaner
    Registriert seit
    11.11.2008
    Beiträge
    99

    Standard

    Also ich hab das Buch >>C++ von A bis Z<< und da wird der C++
    Code so ausgegeben.

    In der Praxis sollten Sie sich aber nicht darauf verlassen,dass der Anwender
    schon das Richtige eingegeben wird.Hierzu sollte man immer den Rückgabewert von 'cin' und dem Operator '>>' überprüfen.
    Bei einer richtigen Angabe wird >>wahr<< und bei einer falschen Angaben
    >>falsch<< zurückgegeben.Auf das Beispiel >>cin1.cpp<< bezogen
    sieht eine solche Überprüfung wie folgt aus:
    Code:
    if( ! (cin >> wert) ) {#
       cerr << "Fehler bei der Eingabe!\n";
    }
    else {
        cout << "Die Eingabe war " <<wert << "\n";
    }
    Und jetzt >>cin1.cpp<<

    Code:
    // cin1.cpp
    #include <iostream>
    using namespace std;
    
    int main(void) {
         float wert;
         cout << "Bitte eine Fließkommazahl : ";
         cin  >>wert;
         cout << "Die Eingabe war " << wert << "\n";
         return 0;
    }
    So.....das stand auf den Seiten.
    Ich bin der Meinung, dass ich den Rückgabewert falsch in den Code
    eingebaut habe.

  7. #7
    W32.FunLove Avatar von Cr4ckEye
    Registriert seit
    19.11.2008
    Beiträge
    123

    Standard

    Code:
    #include <iostream>
    #include <conio.h>
    using namespace std;
    
    int main(){
       
        float wert;
       
        cout<<"Bitte eine Flie\xE1kommazahl eingeben:"<< endl;
       
        if(!(cin>>wert)){
            cerr<<"Fehler bei der Eingabe!"<< endl;
            }
            else{
            cout<<"Die Eingabe war: " << wert << endl;
                 }
        getch();
    return 0;
    }
    So könnten es was werden.
    Was du in if() schreibst ist eine Anweisung. D.h du kannst alles was du in if() schreibst auch manuell machen:
    Code:
     if(1 < 4) { ... } -> gro = 1 < 4;
    Also entweder schreibst du:

    Code:
     cin >> wert;
    if(!wert) { ...}
    oder

    Code:
    if(!(cin>>wert)) { ... }
    Deine Code war zwar gültig und lauffähig, aber man musste 2 mal die Zahl eingeben ;-)

    MfG

  8. #8
    Trojaner
    Registriert seit
    11.11.2008
    Beiträge
    99

    Standard

    Danke.
    Der Code funktioniert.Ich glaube ich muss noch lernen wir man einen
    Code in den anderen einbindet.Wenn ich schon an den einfachsten Sachen scheiter.........was soll dan erst passieren, wenn ich mich an die
    GUI-Programmierung wage....... :oops:

  9. #9
    W32.FunLove Avatar von Cr4ckEye
    Registriert seit
    19.11.2008
    Beiträge
    123

    Standard

    ich würde dir wirklich raten, nicht direkt dir, sondern allgemein erst mal ne lange Zeit die finger von GUI zu lassen, da mann wieder total anders als bei sequentiellen Programmen denken muss. Lern erstmal die Grundlagen sehr gut, dann kannste mal deinen Befehlsumfang erweitern, Systemprogrammierung, Socket Programmierung, und dann vertieft (WinAPI) +/ GUI. je nach OS^^

    MfG

  10. #10
    Trojaner
    Registriert seit
    11.11.2008
    Beiträge
    99

    Standard

    Du hast recht.Ich bin ja schon dabei die Grundlagen erstmal zu lernen, jedoch habe ich noch 50 Seiten blanke Theorie vor mir.Das mit der
    GUI-Programmierung war nur ein vergleich für kompliziertere Themen.

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •