Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Zahlenausgabe

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
21.11.2010, 16:41 Uhr
~CNewcomer
Gast


Hallo. Ich habe ein Problem und komme nicht weiter:
Also ich möchte ein c++ Programm schreiben, dass die folgende Funktion haben soll:
Es soll alle Zahlen auflisten von 1000000000000000 bis 9999999999999999 und in ein *.txt-Datei reinschreiben immer in eine andere Zeile. Also z.B.
1000000000000001
1000000000000002
usw.

Ich kriege das nicht hin. Mit int oder float kommen nur Fehlermeldungen und auch so komme ich nicht weiter. Meine Idee war eine FOR-Schleife zu schreiben wo die Variable a=1000000000000000 und soll gezählt werden bis a=b ist. b=9999999999999999

Ist so ein Programm möglich?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
21.11.2010, 17:40 Uhr
~f.-th.
Gast


Möglich ist alles

Schreib mal deinen Quelltext, damit wir sehen wo es hapert.

Schon mal eine Frage: welchen Compiler mit welchen Compilerschaltern setzt du auf deinen Quelltext an? Wenn du das ein wenig tricky machen kannst/darftst, sollte das relativ einfach gehen. Sonst musst du halt sehen was dein Compiler zu den von dir gewählten Zahlen sagt

MfG f.-th.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
21.11.2010, 18:03 Uhr
~CNewcoomer
Gast


Also ich habe eigentlich sehr wenig ahnung von programmieren.
Meine Idee ist jetzt folgende:

int i=9999999999999999

for (int b=1000000000000000; b=i;b++){
cout<<b<<endl;
}

Ist aber glaube ich total falsch.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
21.11.2010, 18:29 Uhr
~f.-th.
Gast


Bei so grossen Zahlen musst du halt ein paar Sachen mehr berücksichtigen.

Willst du mit so grossen Zahlen jemand ärgern oder soll das nur eine Übung sein?

Sieh mal das du das Programm erst mit z.B. 3 stelligen Zahlen zum Laufen bekommst.
Und dann machst du Schritt für Schritt eine Stelle mehr.

Keine Ahnung wie weit das bei dir gut geht, da das vom Compiler abhängig ist.

Wenn du dann die Klippe erreicht hast, musst du halt sehen wie du drum herum kommst.

MfG f.-th.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
22.11.2010, 03:08 Uhr
Lensflare



Diese Textdatei würde mehr als 10 Millionen Gigabyte Platz benötigen.

Rechnung:

9999999999999999 - 1000000000000000 = 8999999999999999
8999999999999999 zahlen müssen gespeichert werden.

wenn jede zahl ein byte bräuchte, dann wären das
8999999999999999 byte
8789062499999 kilobyte
8583068847 megabyte
8381903 gigabyte

und da jede zahl mehr als 1 byte benötigt, werden es mehr als 8381903 gigabyte sein.
--
Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten.
(Emerson Pugh Trost)

Dieser Post wurde am 22.11.2010 um 03:24 Uhr von Lensflare editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
22.11.2010, 03:15 Uhr
Hans
Library Walker
(Operator)


Hi,

sehe ich das richtig: 16-stellige Zahlen?
Mal eine kurze Überlegung zum Datentyp int:
Wenn int 32 Bit gross ist, dann kann man damit Zahlen im Bereich von 0 bis 2^32 (2 hoch 32) darstellen. 2^32 sind 4.294.967.296, die Zahl hat 10 Stellen, und ist damit kleiner als Dein Anfangswert.

Wenn int 64 Bit gross ist, dann kann man damit Zahlen im Bereich von 0 bis 2^64 darstellen. 2^64 sind 18.446.744.073.709.551.616; diese Zahl hat 20 Stellen, ist also gross genug.

Und jetzt kommt der Compiler ins Spiel: Wenn der den Typ int als 32-Bit Zahl definiert hat, kannst Du mit int nichts anfangen, sondern solltest long int nehmen, was dann 64 Bit umfassen sollte.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
22.11.2010, 09:05 Uhr
~f.-th.
Gast


Ich weiss nicht ob da bei den modernen Betriebssystemen noch Grenzen sind oder wo die liegen. Bei älteren Betriebssystemen konnte man nicht beliebig grosse Dateien speichern oder auch damit arbeiten.

MfG f.-th.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
22.11.2010, 16:02 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)



Zitat von Lensflare:

und da jede zahl mehr als 1 byte benötigt, werden es mehr als 8381903 gigabyte sein.

Es wären knapp 140 000 Terrabyte
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
22.11.2010, 16:12 Uhr
Hans
Library Walker
(Operator)


@~f.th. ich weis zwar auch nicht, wo die Grenzen sind, aber es gibt sie bestimmt noch.

5 Minuten später:
Das interessierte mich jetzt doch mal, also mal bei Microschrott nachgeforscht. Da kam folgendes bei heraus:

Zitat von Microsoft webseite:

NTFS:
Die maximale Dateigröße beträgt theoretisch 16 TB minus 64 KB; eine Datei kann jedoch nicht größer sein als das Volume oder die Partition, auf dem bzw. der sie sich befindet.

FAT:
Die maximale Dateigröße ist 2 GB.

FAT32:
Die maximale Dateigröße ist 4 GB.


Quelle hier.

Bei Linux/Unix, weis ich nicht, wo ich danach suchen soll, zumal es da auch mehr verschiedene Dateisysteme gibt. Aber andererseits weis ich gerade auch nicht, ob es schon 16 TB grosse Festplatten gibt.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
22.11.2010, 21:43 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat von heise-open:

Ext4 arbeitet mit 48-bittigen Blocknummern bei einer Standard-Blockgröße von nach wie vor 4 KByte. Das erlaubt eine Dateisystemgröße von bis zu 248 Blöcken à 4 KByte, also einem Exabyte (1024 PByte) an Stelle der 16 TByte von Ext3



auf eine entsprechend große ext4 partition würde die datei also drauf passen ;-) (da 140000terabyte nun mal 140petabytes sind, also ungefähr ein sehr grob gerundetes 10tel des maximums)


Bearbeitung von Nachtrag:


okay man muss wohl doch xfs oder zfs nehmen, sonst hat man trotzdem die 16tbyte grenze pro datei


Code:
Linux-Dateisysteme
Dateisystem   maximale Dateigröße maximale Dateisystemgröße
Ext4             16 TByte           1024 PByte
Ext3              2 TByte             16 TByte
JFS               4 PByte             32 PByte
ReiserFS          8 TByte             16 TByte
XFS            8192 PByte           8192 PByte
ZFS (Solaris) 16.384 PByte        16.384 PByte




--
class God : public ChuckNorris { };

Dieser Post wurde am 22.11.2010 um 21:59 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: