myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

[C++] Ziffern einer Zahl in Array speichern

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 07.09.12, 11:23   #1
Earril
Anfänger
 
Registriert seit: May 2012
Beiträge: 4
Bedankt: 0
Earril ist noch neu hier! | 0 Respekt Punkte
Standard [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:
Earril ist offline   Mit Zitat antworten
Ungelesen 07.09.12, 13:18   #2
HappyMike34
Erfahrenes Mitglied
 
Registriert seit: Mar 2010
Beiträge: 671
Bedankt: 653
HappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt PunkteHappyMike34 leckt gerne myGully Deckel in der Kanalisation! | 134125 Respekt Punkte
Standard

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
Code:
long long code;
__________________
my brain has two parts, the right and the left...on the left, there is nothing right...on the right, there is nothing left
HappyMike34 ist offline   Mit Zitat antworten
Ungelesen 07.09.12, 15:39   #3
ProgMaster
Banned
 
Registriert seit: Mar 2012
Beiträge: 337
Bedankt: 93
ProgMaster ist noch neu hier! | 0 Respekt Punkte
Standard

Du solltest auch lernen zu debuggen, denn dann fallen dir solche "Fehler" selbst auf.
ProgMaster ist offline   Mit Zitat antworten
Ungelesen 07.09.12, 16:18   #4
Quabla
Mitglied
 
Registriert seit: Oct 2010
Beiträge: 299
Bedankt: 151
Quabla ist noch neu hier! | 0 Respekt Punkte
Standard

joa versuch es mal mit long long int, der sollte 64 bit haben

das ist aber so weit ich weis auch compilerabhängig
Quabla ist offline   Mit Zitat antworten
Ungelesen 08.09.12, 12:22   #5
slahn
Erfahrenes Mitglied
 
Benutzerbild von slahn
 
Registriert seit: Oct 2009
Beiträge: 640
Bedankt: 228
slahn ist noch neu hier! | 0 Respekt Punkte
Standard

Also ich würde das ganze als std::string einlesen, dann hast du nicht das Problem mit der Speicherkapazität (beziehungsweise nicht so schnell ).
__________________
"[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]" (Klopfers Vater)
slahn ist offline   Mit Zitat antworten
Ungelesen 09.09.12, 12:56   #6
Thelvan
Erfahrenes Mitglied
 
Registriert seit: Jul 2010
Beiträge: 493
Bedankt: 236
Thelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt PunkteThelvan erschlägt nachts Börsenmakler | 5269 Respekt Punkte
Standard

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.
Thelvan ist offline   Mit Zitat antworten
Ungelesen 11.09.12, 06:52   #7
Earril
Anfänger
 
Registriert seit: May 2012
Beiträge: 4
Bedankt: 0
Earril ist noch neu hier! | 0 Respekt Punkte
Standard

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.
Earril ist offline   Mit Zitat antworten
Ungelesen 11.09.12, 07:13   #8
slahn
Erfahrenes Mitglied
 
Benutzerbild von slahn
 
Registriert seit: Oct 2009
Beiträge: 640
Bedankt: 228
slahn ist noch neu hier! | 0 Respekt Punkte
Standard

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.
__________________
"[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]" (Klopfers Vater)
slahn ist offline   Mit Zitat antworten
Ungelesen 11.09.12, 07:23   #9
germgerm
bla
 
Registriert seit: Mar 2010
Beiträge: 311
Bedankt: 301
germgerm ist noch neu hier! | 0 Respekt Punkte
Standard

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.
germgerm ist offline   Mit Zitat antworten
Antwort


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

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:44 Uhr.


Sitemap

().