Krautkanal.com

Veröffentlicht am 2014-12-28 19:01: in /prog/

/prog/ 6268: Ich mache gerade meine ersten Gehversuche in C++ und ha...

haydn_woods Avatar
haydn_woods:#6268

Ich mache gerade meine ersten Gehversuche in C++ und habe einen kleinen Taschenrechner programmiert und wollte mal wissen was ich besser machen könnte und was an dem Code schlecht ist oder ob er so eigentlich ganz okay ist.

http://pastebin.com/MVLgQzzT
http://pastebin.com/CmUeH53J

antongenkin Avatar
antongenkin:#6270

> Ich mache gerade meine ersten Gehversuche in C++ und habe einen kleinen Taschenrechner programmiert
Ach Bernd…

Einfache Verbesserungen:
Was macht das Programm denn, wenn Dummbernd anstatt der Zahlen Text eingibt?
Wieso muss man das Programm nach Fehleingaben neu starten?

Fortgeschrittene Verbesserungen:
Wieso kann ich nicht '3 + 4' eingeben?

Exbärdenfabesserungen:
Wieso kann ich nicht '(3 + 4) * (2 / 1.2)' eingeben?
Wieso kann ich keine Zwischenergebnisse in Variablen speichern?
Wieso muss ich mathematische Konstanten per Hand eintippen?
Warum kann ich die Ausgabeformatierung nicht umstellen?

Weitermachen!

stephcoue Avatar
stephcoue:#6272

Ich mag die ganzen Leerzeilen nicht und in der zweiten Datei kannst du dir die variablen sparen und die Berechnung als Argument von return machen.

Vor eine Funktion gehört eine kurze Erklärung, möglichst im Doxygen-Format. en.wikipedia.org/wiki/Doxygen
Die Inzeilenkommentare kannst du dir sparen, vor allem, wenn sie lediglich den Text davor wiederholen.

Und dann kannst du das hier (oder etwas vergleichbares (statische Kot-Analyse/Linter)) mal drüber laufen lassen und möglichst alle Beanstandungen bereinigen.
http://google-styleguide.googlecode.com/svn/trunk/cpplint/cpplint.py

Oh.. und ein anständiges Betriebssystem würde nicht schaden.

tjisousa Avatar
tjisousa:#6275

Ach Bernd, jetzt solche Fragen zu stellen ist noch viel zu verfrüht. Steiger dich noch etwas tiefer in die Materie. Ein Taschenrechner gehörte wohl zu jedem Anfang einer Brogrammiererkarriere. Bleib am Ball.

Als nächstes könntest du einen TR für komplexe Zahlen und Operatorenüberladung programmieren. Wenns gut läuft mit Ausgabestream.

woodydotmx Avatar
woodydotmx:#6276

float ergebnis = zahlEins * 1.19;

ist

float ergebnis = static_cast<float>(static_cast<double>(zahlEins) * 1.19);

Aus dem ISO-C++14-Draft n3936.pdf (das ist jedoch nichts neues, könnte möglicherweise in früheren PDFs anders formuliert sein):
>The type of a floating literal is double unless explicitly specified by a suffix. The suffixes f and F specify float, the suffixes l and L specify long double.

Also schreibe 1.19f, wenn du ausschließlich float verwenden willst/musst.

Neuste Fäden in diesem Brett: