Willkommen |
|
myGully |
|
Links |
|
Forum |
|
|
|
 |
07.09.12, 11:23
|
#1
|
Anfänger
Registriert seit: May 2012
Beiträge: 4
Bedankt: 0
|
[C++] Ziffern einer Zahl in Array speichern
Hallo,
ich bin gerade dabei C++ zu lernen und programmiere ein paar Übungsaufgaben.
Ich will nun für eine Aufgabe die Ziffern einer 13-stelligen Zahl, die vom Benutzer eingegeben und in eine long int Variable gespeichert wird, einzeln in einen Array speichern:
Das klappt prinzipiell auch super, allerdings nur bis zu 10-stelligen Zahlen. Wenn ich eine Zahl mit 11 Stellen oder eingebe schreibt er anscheinend willkürliche Zahlen in den Array.
Wenn mir jemand helfen könnte wäre ich sehr dankbar!
Hier noch 2 Screenshots:
10-stellige Zahl:
11-stellige Zahl:
|
|
|
07.09.12, 13:18
|
#2
|
Erfahrenes Mitglied
Registriert seit: Mar 2010
Beiträge: 676
Bedankt: 655
|
long int hat höchstwahrscheinlich 32 Bit (zumindet auf 32Bit-Systemen).
Mit 32 Bit kannst du aber nur 9 oder 10Stellige Dezimalzahlen speichern.
log10(2^32) = 9.6
Ich würde die große Zahl als String einlesen und dann die Zeichen in Ziffern umwandeln oder du verwendest
__________________
my brain has two parts, the right and the left...on the left, there is nothing right...on the right, there is nothing left
|
|
|
07.09.12, 15:39
|
#3
|
Banned
Registriert seit: Mar 2012
Beiträge: 337
Bedankt: 93
|
Du solltest auch lernen zu debuggen, denn dann fallen dir solche "Fehler" selbst auf.
|
|
|
07.09.12, 16:18
|
#4
|
Mitglied
Registriert seit: Oct 2010
Beiträge: 296
Bedankt: 151
|
joa versuch es mal mit long long int, der sollte 64 bit haben
das ist aber so weit ich weis auch compilerabhängig
|
|
|
08.09.12, 12:22
|
#5
|
Erfahrenes Mitglied
Registriert seit: Oct 2009
Beiträge: 640
Bedankt: 228
|
Also ich würde das ganze als std::string einlesen, dann hast du nicht das Problem mit der Speicherkapazität (beziehungsweise nicht so schnell  ).
|
|
|
09.09.12, 12:56
|
#6
|
Erfahrenes Mitglied
Registriert seit: Jul 2010
Beiträge: 489
Bedankt: 236
|
Richtig, String macht hier mehr Sinn, da man mit einer ArtikelNummer sowieso keine mathematischen Operationen durchführen wird.
So etwas sollte man eigentlich immer als String speichern, da es eigentlich keine Zahl ist, sondern ein String aus Ziffern.
|
|
|
11.09.12, 06:52
|
#7
|
Anfänger
Registriert seit: May 2012
Beiträge: 4
Bedankt: 0
|
Also mit long long funktionierts, danke!
Ich dachte "long int" wäre größer als "int"  Der Name ist aber auch irreführend.
Ich probier das ganze jetzt mal mit einem String zu lösen.
|
|
|
11.09.12, 07:13
|
#8
|
Erfahrenes Mitglied
Registriert seit: Oct 2009
Beiträge: 640
Bedankt: 228
|
Hier mal eine kurze Übersicht für den [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]. Das ganze hängt eben vom verwendeten Compiler, dem verwendeten OS und der verwendeten Architektur ab ... Somit kann man sich bei C/C++/... nie ganz sicher sein, wie groß das ganze ist. Das einzige was man weiß: ein INT passt in einen LONG und ein LONG passt in einen LONG LONG. Der Rest sollte über die entsprechenden Konstanten, abgefragt und überprüft werden.
Aber mit einem String, wirst du wohl die größte Freude haben. Einen Anhaltspunkt habe ich dir im vorherigen Post eh schon gegeben.
|
|
|
11.09.12, 07:23
|
#9
|
bla
Registriert seit: Mar 2010
Beiträge: 312
Bedankt: 302
|
Der Name passt schon, ist eben abhängig von Plattform und Compiler.
Stimmen muss immer folgende Relation:
signed char ≤ short int ≤ int ≤ long int ≤ long long int
Bei den meisten C/C++ -Compiler kannst du den Wertebereich im File limits.h prüfen.
|
|
|
Forumregeln
|
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren
HTML-Code ist Aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:27 Uhr.
().
|