brauche dringend hilfe zu c++
-
Ok danke, lerne selber erst seit kurzem C++ und zu cin stand bis jetzt nichts
im Buch.
Muss man das nur am Ende oder nach jeder Eingabe?
-
#include <iostream> using namespace std; int tagespauschale (int stunden); float kilometergeld (int km); int main () { int stunden, km; cout << "Bitte geben Sie die Stunden ein wie lange Sie abwesend waren" << endl; cin.sync(); // hier ist es noch überflüssig da der Puffer ja noch leer ist. cin >> stunden; int stundengeld = tagespauschale (stunden); cout << "Bitte geben Sie die gefahrenen Kilometer ein" << endl; cin.sync(); // Hier ist es nötig cin >> km; cout << km << endl; float fahrgeld = kilometergeld (km); cout << "Die Tagespauschale betraegt " << stundengeld << " Euro" << endl << "Das Kilometergeld betraegt " << fahrgeld << " Euro" << endl; return 0; } int tagespauschale (int stunden) { if (stunden > 12) return 20; else if (stunden > 10) return 10; else if (stunden > 8) return 5; else return 0; } float kilometergeld (int km) { return 0.28 * km; }
Ich denke man braucht ihn immer dann wen davor schon ein cin war.
Ich bin auch recht neu dabei.
cu max
-
Hatte gerade langeweile hier noch die zweite Aufgabe.
Ich hoffe, aber dass du dir die beiden Programme auch anschaust und nicht nur
kopierst.#include <iostream> #include <cstdio> using namespace std; int main () { cout << "===========================" << endl; cout << "= PS-KW Tabelle =" << endl; cout << "===========================" << endl; cout << "= PS = KW =" << endl; cout << "===========================" << endl; for (int i = 20; i <= 300; i++) { char kw[7]; char ps[4]; sprintf (ps, "%3d", i); sprintf (kw, "%5.2f", i/1.36); cout << "= " << ps << " = " << kw << " =" << endl; } cout << "============================" << endl; return 0; }
Ich weiß nicht ob meine Lösung für die PS und KW Zahlen in der Schleife perfekt
sind, aber leider kenne ich keine andere Methode um die Tabelle schön einheitlich
zu gestalten.
-
SirLant schrieb:
Hatte gerade langeweile hier noch die zweite Aufgabe.
Ich hoffe, aber dass du dir die beiden Programme auch anschaust und nicht nur
kopierst.
[cpp]Na oben wird erklärt das es so nicht gehen kann "Macht mal" und Du machst... Tztztztz... :-p
(Hei, sprintf hat nix im C++ Forum verloren. Bei Langeweile mal mit cout und formatierter Ausgabe spielen. Ich spiel bei langeweile auch mit nem Rechtschreibduden, versprochen
)))
-
Master_Max schrieb:
@SirLant: vergess nicht den Puffer zu löschen.
cin.sync();
Nutzereingaben einfach zu ignorieren oder zu löschen ist mE keine gute Idee, ohne sich das vorher einmal anzusehen. Was bringt das denn genau, bitte, außer das Dein Stream wieder leer ist (oder sich jetzt in einem Fehlerzustand etc befindet)?
("Vergess" ist der Imperativ für Vergeßliche. Das Wort, das Du suchst heißt "vergiß".)
-
Ja, aber ich hatte heute sowieso bock mal bischen was mit C++ zu machen, da konnt
ich einfach nicht anderst
Und sorry, dass ich da ne alte C-Funktion benutzt habe, aber ich bin noch nen
kleiner nub der es nicht besser kann.Und ich denke dass unser Girlie, wenn sie wirklich Interresse an C++ hat sich den
Code anschauen wird und nicht einfach nur kopieren. Auch wenn ich eure Einstellung
verstehe, bringt gerade am Anfang ne Aufgabe und nen fertiger Code doch einiges.
So konnte ich auch einigen meiner Mitschüler helfen indem ich nen paar mögliche
Aufgaben die in der Arbeit drankommen könnten gelöst habe.
-
Kennst Du noch den Unterschied zwischen
"kopieren" oder "abschreiben" der Arbeitsblätter ?
(Ich persönlich hab die Kopie mal durchgelesen und weggelegt. Das was ich abschreiben musste blieb wesentlich besser hängen).
Zeigt man jemanden den Source hilft es sicherlich weiter. (Wird ja hier auch gemacht wenn man merkt das jemand wirklich interesse hat). Aber beim selbst machen lernt man es doch am besten. (Nur die Zeit bräucht man noch dafür
-
Das ist richtig, aber es hilft einem doch, wenn man ne Musterlösung hat, oder
etwa nicht
Wobei ich meine Lösungen, als Lösungen bezeichnen würde und weniger als Musterlösung.Was ist denn nun mit dem cin.sync (), wenn man es nicht benutzen soll, was dann?
Und ist es in meinem Programm überhaupt sinnvoll?
-
cin.sync();
DanielE schrieb:
Nutzereingaben einfach zu ignorieren oder zu löschen ist mE keine gute Idee, ohne sich das vorher einmal anzusehen. Was bringt das denn genau, bitte, außer das Dein Stream wieder leer ist (oder sich jetzt in einem Fehlerzustand etc befindet)?
Naja, ich kenne es halt das dann die nächste eingabe übersprungen wird,
das wollte ich vermeiden. Wenn das nicht daran liegt, berichtige mich bitte.DanielE schrieb:
("Vergess" ist der Imperativ für Vergeßliche. Das Wort, das Du suchst heißt "vergiß".)
Ich meinte ja auch vergiß, es war doch keine Kritik an SirLant oder ähnliches gewollt.
Im Konsolenforum stand, das es auch so geht:
cin.ignore(cin.rdbuf()->in_avail());
Stimmt das und ist dies eine bessere lösung?
MfG max
-
Master_Max schrieb:
Im Konsolenforum stand, das es auch so geht:
cin.ignore(cin.rdbuf()->in_avail());
Stimmt das und ist dies eine bessere lösung?
MfG max
Beide Lösungen haben ihre Schwächen, da beide auf weit verbreiteten Compilern unterschiedlich funktionieren.
cin.sync() muss nicht unbedingt dazu führen, dass Zeichen im Eingabepuffer ignoriert werden. Das Verhalten von sync ist für Eingabeströme nicht genau spezifiziert.
Die in_avail()-Lösung funktioniert nicht bei allen Compilern. Einige liefern hier immer 0, was den Aufruf vom Verhalten zu einer Noop macht.