Soul (05.12.11)
Halli Hallo!
Ich hab seid kurzer Zeit mit der C++ programmierung angefangen.
Ich orientiere mich zur Zeit in Konsolenanwendungen.
Ich hab mal ein Programm geschrieben.
Das Programm zählt die Jahre, die man warten muss, bis man Millionair geworden ist. Die Jahresanzahl und das Kapital (In Wissenschaftlicher schreibweise) werden zum Schluss ausgegeben.
Seht ihr vielleicht etwas, was man ändern kann / sollte? Ich bin da noch recht neu. :)
Code:#include <iostream> using namespace std; void main () { double Kapital, Zwischensumme; int Jahr=0; cout<<"Willkommen zur Zinssatzrechnung"<<endl<<endl; cout<<"Bitte geben Sie ihr Kapital ein: "; cin>>Kapital; cout<<endl<<endl<<"Es wird nun ausgrechnet, wie viele Jahre Sie warten muessen,\ndamit sie Millionair werden."<<endl<<endl; system("pause"); cout<<endl<<endl<<"Der Zinssatz liegt bei 2.5%"<<endl<<endl; system("pause"); cout<<endl<<endl<<"Die Anzahl der Jahre wird nun ermittelt."<<endl<<endl; system("pause"); do { Jahr++; Zwischensumme=Kapital*0.025; Kapital=Kapital+Zwischensumme; }while (Kapital < 1000000); cout<<endl<<endl<<"Sie müssen "<<Jahr<<" Jahre warten bis sie Millionair geworden sind"<<endl<<endl; cout<<"Ihr Kapital bezieht sich nun auf: "<<Kapital<<" Euro."<<endl; system("pause"); }
Duuu ...
Ich würde unbedingt zwischen cout<<endl usw. Leerzeichen machen. (z.B. cout << endl)
Andernfalls wirst du die Übersicht bei größeren Projekten schnell verlieren.
Ansonsten würde ich noch das system("pause"); wegnehmen, wozu eine pause einbauen? ^^
btw: Wozu ist void main() da? Bin auch noch anfänger und benutze lediglich int main().
Wenn du int main() benutzt musst du am Ende einen return befehl benutzen. Mit void main() braucht man kein return befehl am Ende einbauen ^^. Weniger zum schreiben, aber beides das gleiche.
Die system("pause"); dienen einfach nur dazu, die einzelne Schritte zu sehen. Sind ja nicht zwingend nötig ^^.
Deinen Tipp mit den Leerzeichen zwischen den cout und << werde ich benutzen. :) Danke. ;)
Duuu ...
Achso, habe einfach immer int main() gemacht und am Ende dann immer 2x cin.get() (Je nach Compiler, bei manchen tuts auch mit 1x)
Kurze Anmerkung zum Programm.
Nach meinem Wissen ist void main() heutzutage nicht mehr Standardkonform, es muss mittlerweile mindestens int main() sein.
Ansonsten sollte eigentlich alles gesagt sein, schätze ich mal.
Hmm, ein Vorschlag hab ich noch: Mach statt Summe * 0,25 und dann Summe + Kapital doch gleich Kapital * 1,025, ist das gleiche, aber spart eine Zeile und so^^
Ich lerne das noch nebenbei in der Schule und dort benutzen wir immer void main () ^^.
Kapital * 1.025 ist aber nicht richtig, da das Kapital mit der Zwischensumme + gerechnet werden muss ;O
Duuu ...
Wenn du System("Pause") nutzt rufst du an jeder Stelle wo der Befehl initialisiert wird eine Shell auf.
Diese kann man leicht emulieren und bieten einige Sicherheitlücken.
Nehmen wir an du schreibst eine CGI Anwendung, dann kann man über shellmeta befehle das Programm zu allem nutzen was du mit der Windows console auch könntest.
Nutze stattdessen cin.get() oder cin.getline() oder cin.ignore();
Ich nutze eig. immer cin.get().
Naja wie gesagt, wir lernen das in der Schule auch erst später. ^^
Aber danke für diese Tipps! :))
Duuu ...
@xRay
int main() ist halt eben mittlerweile Standard, so wie ich weiß, daher sagte ich das.
Jedenfalls, wieso sollte Kapital * 1,025 nicht richtig sein?
Du gehst hin und nimmst das aktuelle Kapital und nimmst es mit 0,025 mal.
Damit hast du den Anteil an Zins, der dazu kommt.
Diesen addierst du auf das Kapital drauf und erhälst das Endkapital für das jeweilige Jahr.
Wenn du das Kapital allerdings mit 1,025 mal nimmst, kommt genau das gleiche raus, da der Zinssatz in der Rechnung drin steckt
(1,025 = 1 fürs gesamte Kapital + 0,025 für den zins)
Weiß ja nich, welche Klasse du bist und so, aber das lernt man normalerweise auch so in der Realschule 10. Klasse in der Wachstumsrechnung.
Da ist auch die Rede von 1 + (p / 100) für das Wachstum und 1 - (p/100) für Abnahme.
Daher ist mein Ansatz genauso richtig.
Soul (05.12.11)
Ja stimmt. Bin in der 11 Klasse und mache mein Fachabi in IT Technik. In den Sommerferien ist einiges hängengeblieben. :)
Duuu ...
Lustig, das selbe mach ich seit den letzten Sommerferien in NDS auch. :>
xRay (05.12.11)
Lesezeichen