Anfängerfrage



  • So muss das:

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        float v;
        cout << "Bitte Wert eingeben:" << endl;
        cin >> v;
        if (v==11.25)
            cout << "Richtig";
        else
            cout << "Nicht Richtig";
        system("PAUSE");
        return 0;
    }
    

    Und bei mir klappt's. Welchen Compiler benutzt du?

    mfg.



  • Nabend,

    es muss aber nicht funktionieren. In diesem Falle funktioniert es. Im Allgemeinen
    kann man Gleitkommazahlen aber nicht vergleichen, da sie nicht zwangslaeufig
    korrekt dargestellt werden. IMHO muesste der Compiler sogar eine Warnung ausgeben,
    dass der Vergleich u. U. zu falschen Ergebnissen fuehrt.

    mfg
    v R



  • Hallo,
    ich benutze den Borland 5 Compiler.

    Habe jetzt mal die vorgeschlagene Version:

    #include <iostream>

    //using namespace std;

    int main()
    {
    float v;
    cout << "Bitte Wert eingeben:" << endl;
    cin >> v;
    if (v==11.25)
    cout << "Richtig";
    else
    cout << "Nicht Richtig";
    //system("PAUSE");
    return 0;
    }

    probiert. Die beiden auskommentierten Anweisungen meckert der Compiler an. (Vielleicht kann mir mal jemand kurz andeuten, warum?) Seit ich "return 0" reingenommen habe, geht es. Das Komische ist, dass es jetzt auch geht, wenn ich "return 0" auch wieder auskommentiere, also faktisch mein altes Programm wieder habe. Komisch, versteh ich nicht. Aber vielen Dank für eure Hilfe.

    Tini



  • Beim Vergleich mit Literalen tut man diese am besten auf die linke Seite. Denn einem Literal kann kein Wert zugewiesen werden und der Compiler meckert derartige Fehler direkt an.



  • tini schrieb:

    Die beiden auskommentierten Anweisungen meckert der Compiler an. (Vielleicht kann mir mal jemand kurz andeuten, warum?)

    Warum meckert der denn da? Besorge dir am besten nen anderen Compilier, denn das ist auf jeden fall (bis auf das mit system("PAUSE")) Standard.

    mfg.



  • @tini:

    tini schrieb:

    Hallo,
    ich benutze den Borland 5 Compiler.

    #include <iostream>

    //using namespace std;

    int main()
    {
    float v;
    cout << "Bitte Wert eingeben:" << endl;
    cin >> v;
    if (v==11.25)
    cout << "Richtig";
    else
    cout << "Nicht Richtig";
    //system("PAUSE");
    return 0;
    }

    --------------------------------------------

    joomoo schrieb:

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        float v;
        cout << "Bitte Wert eingeben:" << endl;
        cin >> v;
        if (v==11.25)
            cout << "Richtig";
        else
            cout << "Nicht Richtig";
        system("PAUSE");
        return 0;
    }
    

    Merkst du zwichen den 2 "Dingern" nen UNTERSCHIED.
    Das eine ist "schöner" zu lesen, also bitte versuch es doch mal auch so zu machen !!!



  • Apollon schrieb:

    Beim Vergleich mit Literalen tut man diese am besten auf die linke Seite. Denn einem Literal kann kein Wert zugewiesen werden und der Compiler meckert derartige Fehler direkt an.

    Oder man passt einfach auf.

    mfg
    v R



  • Das geht natuerlich auch. 🙂



  • Mal neh Frage:
    Müsste das nicht so aussehen:

    #include <iostream.h> 
    
    int main(void) //void, weil es ja nicht´s zurückgibt
    {
        float v;
        cout << "Bitte Wert eingeben:\t";
        cin >> v;
        if (v !=1 1.25) // wenn ´v´ nicht 1.25 ist ....
            cout << "Falsch";
        else            //ansonsten ...
            cout << "Richtig";
        system("PAUSE");
    // da oben void eingesetzt wurde, ist hier kein return nötig
    }
    

    Villeicht noch eine frage einbauen, ob das ganze nochmal widerholt werden soll?

    PS: Tut mir leid, wenn das falsch ist, aber mein verstand sagt mir, dass es so aussehen soll (ausser das void villeicht, aber ich wollt mal schauen wie ihr reagiert)



  • poroblem schrieb:

    Mal neh Frage:
    Müsste das nicht so aussehen:

    int main(void) //void, weil es ja nicht´s zurückgibt
    

    Die Erklärung ist Käse - "int main(void)" bedeutet, daß die Funktion keine Parameter erwartet und einen int zurückgeben soll. (alternativ für main wäre noch "int main(int argc,char** argv)" möglich)

    // da oben void eingesetzt wurde, ist hier kein return nötig
    }
    

    Das ist damit ebenfalls unsinnig - auch wenn die meisten Compiler kein Problem mit einem fehlenden return in der main() haben dürften.



  • oj, danke 😃



  • Freak_Coder schrieb:

    Merkst du zwichen den 2 "Dingern" nen UNTERSCHIED.

    Ja. Er hat using namespace auskommentiert.

    Das eine ist "schöner" zu lesen, also bitte versuch es doch mal auch so zu machen !!!

    Welches? Hä?

    mfg.



  • joomoo schrieb:

    Das eine ist "schöner" zu lesen, also bitte versuch es doch mal auch so zu machen !!!

    Welches? Hä?

    es geht ums Syntax-highlightning. (die farblichen Unterschiede im Sourcecode)
    Das erreicht man, wenn man seinen Code in 'C/C++ Code - tags' setzt. (der C/C++ Button unter den Smilies 😉 )

    ndT Lupo

    Auch geistige Kastraten machen sich mit schriller Stimme bemerkbar.
    ^Stanislaw Jerzy Lec^



  • Lupo4u2 schrieb:

    joomoo schrieb:

    Das eine ist "schöner" zu lesen, also bitte versuch es doch mal auch so zu machen !!!

    Welches? Hä?

    es geht ums Syntax-highlightning. (die farblichen Unterschiede im Sourcecode)
    Das erreicht man, wenn man seinen Code in 'C/C++ Code - tags' setzt. (der C/C++ Button unter den Smilies 😉 )

    ndT Lupo

    Auch geistige Kastraten machen sich mit schriller Stimme bemerkbar.
    ^Stanislaw Jerzy Lec^

    Achso... Dachte das wäre an mich bezüglich des Codes 😃

    mfg.


Anmelden zum Antworten