Anfängerproblem: Compiler motzt bei setw rum
-
Hallo alle zusammen.
Ich habe gestern mit C++ angefangen und mir ein Buch gekauft indem alles eigentlich gut beschrieben ist. Deswegen denke ich dass es mein Fehler ist, finde ihn aber nicht
Hier mein Code:
#include <iostream> using namespace std; const int Einzahlung=5000; const float Jahreszins=0.05; // Einzahlung und 5% Jahreszins int Einzahlungsgeld; float Geld; int main() { int jahr=2008; for (; jahr>=2020; jahr++) { Einzahlungsgeld = Einzahlung + 5000; Geld=Geld + Einzahlungsgeld * 0.05; cout << setw(4) << jahr << setw(10) << Geld; } }Er soll eine Art Tabelle erstellen indem die Jahreszahl und sozusagen der Kontostand aufgelistet sind.
Nur kommt nun folgene Fehlermeldung:
17 E:\***\***\Kontoeinzahlungen.cpp `setw' undeclared (first use this function)Hoffe es kann mir jmd helfen da ich den Fehler einfach net finde (hab ja iostream includet...)
LG
Noobyn00b
-
Du musst für
std::setwden Header<iomanip>einbinden.
-
Hallo Noobyn00b,
aber ich vermute mal, dass Du danach trotzdem keine Tabelle auf der Konsole siehst, weil die Schleife nicht abgearbeitet wird.
Grund dafür ist die "Abbruch-Bedingung" in der Schleife.
Schreibe den Code mal so…int jahr=2008; for (; jahr<=2020; jahr++) { Einzahlungsgeld = Einzahlung + 5000; Geld=Geld + Einzahlungsgeld * 0.05; cout << setw(4) << jahr << setw(10) << Geld << endl; //<< endl = Zeilenumbruch }//Edit...
Und was mir grade noch aufgefallen ist, die Konstante Jahreszins wird nicht verwendet.
Also so?for (int jahr=2008; jahr<=2020; jahr++) { Einzahlungsgeld = Einzahlung + 5000; Geld=Geld + Einzahlungsgeld * Jahreszins; cout << setw(4) << jahr << setw(10) << Geld << endl; //<< endl = Zeilenumbruch }Gruß, Doug_HH
-
Dankeschön jetzt funktioniert es.
Nun habe ich jedoch nochmal eine Frage:
Im Buch wurde die Aufgabe gestellt ein Tippspiel zu erstellen, dass erst eine Zahl von 1 bis 1000 Zufallsgeneriert und man die halt tippen muss. Das Spiel gibt dann immer " ist zu hoch" oder "ist zu klein" aus.
Hier mein Code:
#include <iostream> using namespace std; #include <stdlib.h> int main() { const int Startwert=4; int Zufallszahl; int Tipp; int Anzahl=0; srand(Startwert); Zufallszahl = rand() % 1000 + 1; cout << "Zufallszahl wurde generiert.\n "; do { cout << "Bitte geben sie ihren Tipp ein: "<< endl; cin >> Tipp; Anzahl++; if (Tipp<Zufallszahl) cout << "Ihr Tipp ist zu klein." << endl; if (Tipp>Zufallszahl) cout << "Ihr Tipp ist zu hoch." << endl; } while (Tipp!=Zufallszahl); cout << "Treffer. Ihr Tipp ist Richtig!!! Sie haben " <<endl; cout << Anzahl << " Tipps benoetigt." <<endl; system("pause"); }Folgendes Problem: Die Zahl wird nicht wirklich zufallsgeneriert.
Solange der Startwert 4 ist kommt immer 52 raus, mit Startwert 9 immer 69...Ich weiß natürlich nicht wie diese Funktionen arbeiten, aber in der Musterlösung wird dass auch so gemacht. Die Zahlen sind doch dann net zufällig, wenn bei jedem Ausfürhen die gleiche Zahl rauskommt.
Hoffe auf Hilfe
LG
Noobyn00b
-
Zufällig sind die Zahlen sowieso nicht. Wenn schon, pseudozufällig.

Es ist auch nicht weiter verwunderlich, dass jedes Mal das selbe herauskommt, wenn der Startwert gleich ist. Was denkst du, was Startwert bedeutet?

Du kannst den Startwert nach der Zeit des Programmstarts setzen, um bei jedem Durchgang unterschiedliche Resultate zu erzielen:
#include <ctime> int main() { srand(static_cast<unsigned int>(time(0))); }
-
Hm ok, dass die net richtig Zufällig sind is mir schon klar :).
Danke für den Tipp. Jetzt gehts natürlich.
Nur komisch, dass das in dem Buch net erähnt wurde -.- .
Najia danke trotzdem, ich meld emich wieder wenn ich weitere Fragen hab.
Achja: Wie kann ich mich im Forum regestrieren? Auf der seite steht, wenn ich auf regestrieren klick, dass eine Regestrierung nicht notwendig ist....
Fänd ich aber praktischer da ich bestimmt aktiver in diesem Forum werde ^^.
LG
Noobyn00b
-
Noobyn00b schrieb:
Achja: Wie kann ich mich im Forum regestrieren?
Sollte eigentlich schon gehen, wenn du auf "Registrieren" klickst. Versuch es sonst nochmals.
Ach ja und tu dir den Gefallen, und wähle bitte einen anderen Namen als Noobyn00b.

Solche gibt es schon genug, und falls du dann einmal mehr Erfahrung hast, willst du auch nicht mehr Noob heissen.
-
Ok danke jetzt gings ;).