Zahlen runden/cin.../und weitere Fragen



  • Hi

    1.wollte mal fragen wie der Code lautet um Zahlen in einer Dosanwendung zu runden.
    Also man gibt zum Beispiel ne Kommazahl ein, und anschliessend sagt einem der PC wie sie Gerundet lautet.
    /
    2.Wie ist das mit dem cin eigetnlich genau, es gibt ja da ganz verschiedene z.B: cin.ignore, cin.get usw.
    Am wichtigsten ist mir sicher mal wie man macht das ein neuer cout-Befehl erst auf Knopfdruck erscheint.
    Mit cin.get geht das zwar meist, aber nicht immer.
    /
    3.Wie ist das mit dem std::... genau?
    Angeblich sei es ein besserer Programmierstyl, aber jedesmal wann ich das eingebe heisst es ERROR (wxDev-C++).
    Und auch das mit dem std::endl bzw. endl:
    Wenn ich es richtig verstanden habe ist endl praktisch das gleiche wie \n?
    /
    4.Gibt es Möglichkeiten das beim Enterbefehl einige Textzeilen ausgebelndet und dafür eine neue eingebeldet werden, allerdings nur markierte, also nicht einfach alle die über diesem Befehl stehen?
    /
    5.Kann man einbauen das die Konsole auf verschiedene Tasten reagiert bzw. wenn ich zum Beispiel alt+Ctrl drücke wird dieser befehl ausgeführt, und wenn ich alt Gr drücke dieser Befehl...?

    Hoffe ihr könnt mir dabei weiterhelfen 😃
    Die fragen beziehen sich wie schon erwähnt, auf Konsoleanwendungen.

    MfG Sämi



  • Crossbow schrieb:

    Hi

    1.wollte mal fragen wie der Code lautet um Zahlen in einer Dosanwendung zu runden.

    Du rechnest + 0.5 und dann schneidest du mit floor() die nachkommarstellen ab.

    2.Wie ist das mit dem cin eigetnlich genau, es gibt ja da ganz verschiedene z.B: cin.ignore, cin.get usw.

    http://cppreference.com/cppio/index.html

    Am wichtigsten ist mir sicher mal wie man macht das ein neuer cout-Befehl erst auf Knopfdruck erscheint.
    Mit cin.get geht das zwar meist, aber nicht immer.

    Hiermit:

    std::cin.clear();
        std::cin.sync();
        std::cin.get();
    

    [/cpp]

    3.Wie ist das mit dem std::... genau?
    Angeblich sei es ein besserer Programmierstyl, aber jedesmal wann ich das eingebe heisst es ERROR (wxDev-C++).

    Die genaue Fehlermeldung wäre hilfreich.

    Und auch das mit dem std::endl bzw. endl:
    Wenn ich es richtig verstanden habe ist endl praktisch das gleiche wie \n?

    Nein, zusätzlich noch ein std::flush.

    4.Gibt es Möglichkeiten das beim Enterbefehl einige Textzeilen ausgebelndet und dafür eine neue eingebeldet werden, allerdings nur markierte, also nicht einfach alle die über diesem Befehl stehen?

    Hab ich nicht ganz verstanden aber vielleicht ist ja das "\r" Zeichen das was du suchst. Damit springst du wieder an den Anfang der Zeile und kannst die alten Zeichen überschreiben.

    5.Kann man einbauen das die Konsole auf verschiedene Tasten reagiert bzw. wenn ich zum Beispiel alt+Ctrl drücke wird dieser befehl ausgeführt, und wenn ich alt Gr drücke dieser Befehl...?

    Nicht mit Standard-C++.

    Die fragen beziehen sich wie schon erwähnt, auf Konsoleanwendungen.

    Schau mal im Konsolen-Abteil vorbei.

    mfg.



  • Hallo,

    Du kannst auch die Rundungsstellen mit dem Ausgabemanipulator setprecision aus der <iomanip> bestimmen.

    MFG winexec*



  • Hallo

    Vielen Dank für die Antworten.
    Hab das mit dem std::... nochmal versucht, komischwerweise ging es plötzlich.
    Ich kopier dann mal die Meldung wenn es wieder nicht mehr geht 😃 .
    Jedoch die neune Befehle die ihr mir genannt hat..., ich bräuchte einfach noch die syntaxe bzw. wie und wo in welcher kombination man sie eingeben muss.
    Und was passiert bei diesem Befehl* nun genau, das er dazu da ist die neue Zeile erst noch Knopfdruck einzublenden ist mir schon klar, aber wie liest das der PC genau?
    Und wieso geht es manchmal auch einfach nur mit cin.get?

    *cin.ignore
    cin.sync
    cin.get

    MfG Sämi

    P.s: Ich hoffe es nervt euch nicht wenn ich immer alles so genau wissen will 😃
    Da ich leider noch nicht Englisch kann... 😞



  • Hallo,

    Entschuldige, aber ich verstehe diesen Satz einfach nicht:

    Und was passiert bei diesem Befehl* nun genau, das er dazu da ist die neue Zeile erst noch Knopfdruck einzublenden ist mir schon klar, aber wie liest das der PC genau?

    MFG winexec*



  • Crossbow schrieb:

    Hallo

    Vielen Dank für die Antworten.
    Hab das mit dem std::... nochmal versucht, komischwerweise ging es plötzlich.
    Ich kopier dann mal die Meldung wenn es wieder nicht mehr geht 😃 .
    Jedoch die neune Befehle die ihr mir genannt hat..., ich bräuchte einfach noch die syntaxe bzw. wie und wo in welcher kombination man sie eingeben muss.
    Und was passiert bei diesem Befehl* nun genau, das er dazu da ist die neue Zeile erst noch Knopfdruck einzublenden ist mir schon klar, aber wie liest das der PC genau?
    Und wieso geht es manchmal auch einfach nur mit cin.get?

    *cin.ignore
    cin.sync
    cin.get

    MfG Sämi

    P.s: Ich hoffe es nervt euch nicht wenn ich immer alles so genau wissen will 😃
    Da ich leider noch nicht Englisch kann... 😞

    Ich hab was anderes gesagt:

    std::cin.clear(); // Falls ein Fehler (z.B. falsche eingabe) auftrat,
                               // den Stream wieder auf "Alles OK" setzen
        std::cin.sync();       // Alle zeichen die im Buffer, also was gedrückt wurde
                               // löschen, damit es auch ja wartet
        std::cin.get();        // warten...
    

    mfg.


Anmelden zum Antworten