Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Länge eines Arrays

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 ] [ 3 ] [ 4 ] [ 5 ]
000
24.07.2003, 19:17 Uhr
~Marian
Gast


Hi!
Erstmal...
Tolles Forum. Ich habe lange gesucht, bis etwas wie dieses hier gefunden habe. Hoffentlich werden hier meine Fragen beantwortet. Bücher und Internetseiten haben mir in der letzten Zeit nicht mehr weitergehlofen.

Mein Problem:
Ich arbeite an einem System Primzahlen auszurechnen. Das System scheint recht gut zu funktionieren, nur ist mir der Wertebereich von Integervariable zu klein. Ich würde gerne größere Zahlen berechnen. Jetzt habe ich mir überlegt, die Zahlen in einem Array zu speichern. 123 würde dann zu [1][2][3]. Jetzt habe ich gemerkt, dass ich aber auch mit der Länge von Arrays an Grenzen stoße.


C++:
void main(void)
{
    char array[1048572];
}



wird ohne Probleme ausgeführt.


C++:
void main(void)
{
    char array[1048573];
}



hingegen liefert einen Fehler, beim Ausführen. Durch was wird die Größe eines Arrays begrenzt? Arbeitsspeicher? Kennt jemand eine einfachere Methode "unendlich Große" Zahlen zu speichern (mindestens der Festplattenspeicher ist natürlich die Begrenzung)?

Ich hoffe ihr könnt mir mit meinem Problem helfen und bedanke mich jetzt schon im Voraus für Antworten oder Ansätze!

--Edit: cpp-Tags, Code formatiert.

Dieser Post wurde am 25.07.2003 um 10:37 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
24.07.2003, 19:27 Uhr
kronos
Quotenfisch
(Operator)


schau dir mal die doc von bignum.h an...
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
24.07.2003, 20:02 Uhr
Marian



Ich musste mir die Bibliothek downloaden! Gibt es dazu eine Hilfe? Die Headerdateien an sich verstehe ich kaum. DIESE... gar nicht :/

Oder kannst du mir sagen, was für Funktionen mir helfen könnten?
Ich weiß ja nicht, wie jetzt die Zahlen gespeichert werden, aber kann ich +, -, *, /, % und swqrt() weiter drauf anwenden?
Kann ich damit unendlich große Zahlen speichern?

Danke auf jeden Fall schon mal für die Hilfe! Scheint echt gut zu sein...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
24.07.2003, 20:17 Uhr
kronos
Quotenfisch
(Operator)


sorry, hab' selbst noch nie damit gearbeitet, sonst hätt' ich ausführlicher geantwortet...
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
24.07.2003, 20:45 Uhr
~Marian
Gast


Trotzdem Danke!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
24.07.2003, 20:56 Uhr
Pablo
Supertux
(Operator)


Musst du unbedingt Arrays nehmen? Es gibt verschiedene Möglichkeiten unendlichen Listen zu machen. Eine davon ist die Benutzung vom Template vector der STL von C++. Wenn du aber nicht C++ machen willst, dann könntest du einfache (bzw. doppel) verkettete Listen nehmen, somit kannst immer Elemente "ohne Ende" einfügen.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
24.07.2003, 21:23 Uhr
~wissender
Gast


void main(void)
{
char array[1048573];
}

Gibt vielleicht einen Stackoverflow!
Bei größeren Dingen sollte man eigentlich immer dynamischen Speicher verwenden.
Der gcc 3.2(mingw32) unter WinXP macht so 2 mb bei einer Stackvaribable mit dann wird das Programm von winxp gekillt (Eigene Erfahrung).
SP corrupted :-)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
24.07.2003, 22:23 Uhr
~Marian
Gast



Zitat:
Pablo Yanez Trujillo schrieb:
Musst du unbedingt Arrays nehmen? Es gibt verschiedene Möglichkeiten unendlichen Listen zu machen. Eine davon ist die Benutzung vom Template vector der STL von C++. Wenn du aber nicht C++ machen willst, dann könntest du einfache (bzw. doppel) verkettete Listen nehmen, somit kannst immer Elemente "ohne Ende" einfügen.


Nein, es müssen nicht unbedingt arrays sein. Aber ich weiß nicht genau, ob wir das gleiche meinen. Mir geht es um die Größe der Zahlen. Nicht unbedingt um die Anzahl der Zahlen...

@~wissender: Kann man den Stack vergrößern? Ich denke an etwas wie realloc oder ähnliches!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
24.07.2003, 23:13 Uhr
virtual
Sexiest Bit alive
(Operator)


Den Stack kannst Du wahlweise über eine Linkeroption deines Compilers oder unter Windows mit dem Program editbin verändern. Es mag auch helfen, die Variable global zu vereinbaren und nicht lokal.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
25.07.2003, 08:31 Uhr
~wissender
Gast


Hör auf virtual :-)
Naja den Stack kannst du mit realloc nicht "vergößern", der Stack wird definiert über den BP(BasePointer) und den SP(Stackpointer), das sind beides Register.
Durch setzten dieser Werte erschaffst du einen Stackframe und veränderst du ihn(Assembler).
Außerdem darfst du den Adressenbereich des Stacks(vom Betriebssystem vergeben) nicht über- bzw. unterschreiten, aber wenn man den SP ewig in - bzw. decrementiert (Will heißen Stack wächst) passiert genau das.
Und hier kommt virtual ins Spiel, man allokiert dann einfach mehr Stackraum vom Betriebssystem (bei Programmstart, macht C++ für dich).
Ist natürlich wie immer vom vorhandenen Speicher begrenzt.

cu
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ] [ 4 ] [ 5 ]     [ 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: