Zahlen übersichtlicher darstellen lassen
-
In der Quelldatei nur
die ergebnisse sind momentan als integer deklariert
also wäre deine idee, einfach in strink umformen und dann (irgendwie -bin wirklich nen anfänger in c++) punkte von hinten setzen!?
-
Genau, konvertiere nach
std::stringund formatiere ihn nach deinen Vorstellungen.
-
Das Thema ist nicht unbedingt völlig trivial - Habe dazu hier eben was gefunden und wozu jetzt das Rad neu erfinden:
-
Alternativ kannst du auch den dafür vorhergesehenen Weg verwenden:
#include <iostream> #include <string> #include <iomanip> class grouping : public std::numpunct<char> { std::string do_grouping() const { return "\003"; } // 3 Zeichen lang char do_thousands_sep() const { return ' '; } // Leerzeichen als Trennung }; int main() { using namespace std; // Verstellt die Ausgabe von Zahlen auf cout cout.imbue(locale(cout.getloc(), new grouping)); int result = 1306351; int anothernumber = 156886548; // Ganz normal Zahlen ausgehen, diesmal wird es schön cout << result << '\n'; cout << anothernumber << '\n'; return 0; }Vielleicht verstehst du (noch) nicht alles, aber das macht nicht sonderlich viel, denn die Benutzung ist dafür einfach.
-
fratze schrieb:
Alternativ kannst du auch den dafür vorhergesehenen Weg verwenden
[...]
Vielleicht verstehst du (noch) nicht alles, aber das macht nicht sonderlich viel, denn die Benutzung ist dafür einfach.Also ich verstehe nahezu =0
Das ist aber nicht soo wichtig, da ich getestet habe und hat funktioniert.
Nun aber noch letze wichtige Frage:
Wie binde ich das ganze in mein Programm ein?
Ich habe mal irgendwas von unterprogrammen und un gehört, aber wie gesagt nicht so viel ahnung davon.
Und wenn ich versuche einfach Quelltext natürlich ohne erneut biliotheken und so aufzurufen, dann bekomme ich fehlermeldungen in meinem Programm (an total anderer Stelle) die es vorher nicht gab.
Bsp: "73 expected `;' before "else" "
Natürlich ist davor nen ";" und vorher ging es auch, aber nun nicht mehr..:D
grüße
-
Zeig mal Code.
-
simin2210 schrieb:
fratze schrieb:
Alternativ kannst du auch den dafür vorhergesehenen Weg verwenden
[...]
Vielleicht verstehst du (noch) nicht alles, aber das macht nicht sonderlich viel, denn die Benutzung ist dafür einfach.Also ich verstehe nahezu =0
Na es ist doch einfach:
Du erstellst eine Klasse, die du von einem locale facet
numpunct<char>ableitest (die wiederum vonlocale::facetableitet, der Basisklasse) - ein facet für die Ausgabe von Zahlen. Da redefinierst du einige Funktionen nach deinem Belieben. Anschließend setzt du das locale fürstd::cout.localealso ist eine Klasse die für Ortsabhängige Streaming-Operationen verantwortlich ist.
do_thousand_sep steht für: thousands separator, das Trennzeichen für Tausendergrüppchen (1 000 000 ...), was wir hier als Leerzeichen "setzen". do_grouping legt fest, wiviele Ziffern beieinander stehen( man kanns auch so machen: 1 0000 0000), hier (Edit: hier, also im Code oben) 3. DielocaleKlasse übernimmt die Verantwortung das hoffentlich allokierte facet freizugeben (mit delete).Der relevante Code ist ca. 3-5 Zeilen lang. Schau in die Referenz, wenn du mehr überschreibbare Funktionen suchst...
Zum Beispiel könntest du nochchar do_decimal_point() const {return ',';}
-
OMG! Ihr wollt einem absoluten Anfänger wirklich was von Klassen etc. erzählen?!
1. versteht er davon rein gar nichts (wie er schon sagte)
2. gibts es für einen Anfänger weitaus besser geeignete Methoden einen Punkt an jede 3. Stell zu schreiben ; )
-
Wir wollen hier gar nichts. Hacker will nur wieder mal zeigen, was er tolles kann.
-
_matze schrieb:
Wir wollen hier gar nichts. Hacker will nur wieder mal zeigen, was er tolles kann.
Stimmt ja gar nicht. Mir ist nur wieder langweilig.

(Das ich darüber hinaus nichts kann ist mir klar)Außerdem wusste ich gar nicht, dass er ein so kürzlich angefangener Anfänger ist...