PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : c++ und sehr sehr große zahlen



Hotnine
11-10-2001, 18:03
hi!

ich bin gerade dabei beruflich in c++ einzusteigen und ich interessiere mich für sachen, wo ich mit long long nicht mehr auskomme.
Deshalb meine Frage, wie schaffe ich es, dass ich mit ganzahlen bis zu 100000000 Stellen arbeiten kann? Oder müsste man da selber einen Datentyp schreiben? wenn ja, gibt's dazu gute howtos?
Ihr seht schon Fragen über Fragen, wäre nett wenn ihr mir wenigstens ein paar davon beantworten könntet.

CU Till

[ 12. Oktober 2001: Beitrag editiert von: Hotnine ]

jgbauman
11-10-2001, 23:02
Kuck Dir mal die GMP an http://www.swox.com/gmp/

Ist zwar C, aber Du kannst ja auch einen C++ Wrapper schreiben wenn Du unbedingt willst.

Hotnine
12-10-2001, 06:40
hi!

sorry, aber ich weiß nicht so richtig was ein wrapper ist, habe mal nachgeschaut. Würde denken, sowas wie ein "dolmetscher" zwischen den beiden Sprachen, kommt das hin?
wo gibt's infos, wie man sowas schreibt, am besten mit Beispielen.
schonmal besten dank für GMP, sieht ganz gut aus. kennst du noch andere ähnliche sachen?

CU Till

Trillian
12-10-2001, 08:11
Jo, der Wrapper würde in diesem Fall deine C++ Aufrufe in C Aufrufe umsetzen, die GMP verstehen kann.

Hotnine
12-10-2001, 08:17
okay,

wer aufwendig wäre es den wrapper für das potenzieren, subtrahieren, modulieren, bitverschiebung und die zuweisung zu schreiben? hab mal versucht was zu schreiben, aber irgendwie ist mir das zu hoch ;) bin's gewöhnt ausdrücke mit + und * zu schreiben und nicht mpz_mul(x,x,x) aber da werd ich mich wohl dran gewöhnen müssen.


CU Till

redhead
15-10-2001, 13:37
Du kannst Dir auch eigene Operatoren deklarieren. Hier einige Prototypen fuer Vektoren:

class CVec
{
public:
friend CVec operator+(CVec, CVec); // sum of two vectors
friend CVec operator-(CVec, CVec); // difference of two vectors
friend double operator*(CVec, CVec); // scalar product
friend CVec operator*(double, CVec); // vector product
}

Und dann die Definition der Methoden, z.B.:

CVec operator+(CVec v1, CVec v2)
{
CVec sum; // the sum

sum.c1 = v1.c1 + v2.c1;
sum.c2 = v1.c2 + v2.c2;
sum.c3 = v1.c3 + v2.c3;

return sum;
}

Dann kann man zwei Variablen vom Typ CVec einfach mit '+' addieren. Nur so als Anregung...

Ciao, redhead

Hotnine
15-10-2001, 15:07
Danke,

sieht sehr spannend aus deine Anregung, würde sie auch gerne benutzen, bloß habe ich davon was du da geschrieben hast keinerlei Planung, hättest du eventuell dazu ne gute Howto oder ne Website oder ähnliches?
trotzdem schon mal vielen dank.

CU Till

Christoph
15-10-2001, 15:48
+ sieht sehr spannend aus deine Anregung,
+ würde sie auch gerne benutzen, bloß habe
+ ich davon was du da geschrieben hast
+ keinerlei Planung, hättest du eventuell
+ dazu ne gute Howto oder ne Website oder
+ ähnliches?
+
Sollte in jedem x-beliebigen C++ Buch beschrieben sein. Geh' mal in den nächsten Buchladen und such dir ein Buch aus mit einem Stil, der dir behagt.

redhead
15-10-2001, 16:23
Eine kleine Einleitung findet man unter http://www.cplusplus.com/doc/tutorial/ . Section 4.2 behandelt auch die Sache mit den Operatoren, die man selbst definieren kann.

Grundsaetzlich kann ich Dir nur ein gutes Buch empfehlen, in dem auch ausfuehrlich auf Obekt orientierte Programmierung (OOP) eingegangen wird. Erfahungsgemaess kommt es sonst zuschlechtem Programmierstil, Designfehlern und eigene Projekte nutzen kaum die Moeglichkeiten von OOP aus. Auf lange Sicht kostet das viel mehr Zeit als eine etwas gruendlichere Einarbeitung.

Ansonsten kann ich Dir auch per eMail einige Header-Dateien zukommen lassen.

Ciao, redhead