int array division

zoetti1

Grünschnabel
hallo!

Hab das Problem, dass ich Divisionen(Zahlensystemumwandlung) machen muss, mit sehr hohen Zahlen, bei weitem höher als unsigned long int fassen könnte.
Nun kam ich auf die Idee ein int-Array zu verwenden.

Doch wie kann ich z.B: int var[2]={100, 500}
als solches dividieren: 100500:zahl=...
Hat da einer eine Idee?

Vielen Dank schon mal im Voraus!
mfg
zoetti1
 
Hi.

Welche Programmiersprache denn, C oder C++?

Man könnte statt deiner int arrays auch Bit-Vectoren nehmen oder sogar Strings die man dann mit Bit-Operationen verarbeiten kann. So wäre z.B. die Division durch 2, 8 und 16 trivial. Ansonsten könntest du für diese Bit-Vectoren auch einen Algorithmus zur Bit-Division verwenden. (http://www.informatik.uni-ulm.de/ni/Lehre/WS02/CA/ArithIntegerE.PDF)

Bei deiner Methode könntest du die Division ja auf die Subtraktion zurückführen. D.h. du subtrahierst solange die Variable "zahl" von dem int-Array bis der Wert des int-Arrays kleiner ist als die "zahl" und zählst dabei ein weiteres int-Array hoch, welches dann das Ergebnis der Operation enthält.

Also mußt du erst mal eine Subtraktion und zumindest eine Inkrementation für deine int-Arrays definieren.
 
Am besten char-Arrays verwenden, sodass jeder Stelle der Zahl ein char wert zugeordent ist wie z.B. in 123=1*10^2 + 2*10^1 + 3*10^0 wird zu char arr123[]={'3','2','1'}; damit hast du auch die möglichkeit allgemeine Algorithmen über Index-Arrays zu definieren, tauschen, schieben,...
PS.: würde eher sowas wie

Code:
struct Number_s
{
  unsigned int Base;
  char* Number;
  char* InternalNumber;
};

verwenden, da ja jede Zahl eine andere Basis haben kann. Zum Rechnen sollte man alle in eine gemeinsame Basis konvertieren und verlagert so den Aufwand von den Operationen in die Konversion, die i.A einfacher ist.

lg
Joe
 
Zuletzt bearbeitet:
hallo

danke für die antworten!

Hab mir das mit GMP auch schon angeschaut.
Aber da ich ein Anfänger bin, schafftes ich es nicht diese Library zu installieren.
In der Readme steht irgendwas von "als $(jshf)" entpacken und irgendwohin kopieren...
versteh leider nicht mal Bahnhof :confused:

Könnt mir da einer weiterhelfen

Und das mit dem char Array gefiele mir persönlich am Besten, da ich dann selbst einigermaßen verstehe, wie es funktioniert.
Doch für die ganze Zahlenarithmetik, Inkrementation etc. fehlt mir, fürchte ich, leider die nötige Mathematik.


Hoffe ihr könnt mir helfen
 
Für welchen Compiler denn? Für welches Betriebssystem? (Nein, es gibt nicht nur eins ;))

Für win32 und MSVC kannst du hier ein fertiges Paket runterladen. Das mußt du nur in einen Systemordner entpacken bzw. da wo du normalerweise deine Header Dateien und Bibliotheken packst. Du könntest es auch einfach in dein Projekt-Verzeichnis entpacken würde ich sagen.
 
Zurück