Announcement

Collapse
No announcement yet.

Rechnen mit langen Zahlen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Rechnen mit langen Zahlen

    Hi!<br>Ich will ein Programm schreiben, das 2 beliebig große Zahlen mit beliebiger Genauigkeit einliest, diese miteinander Multipliziert oder Dividiert(je nach wahl des Users) und ein beliebig genaues Ergebnis ausgiebt(also z.B. 3.000.000 Stellen vor und hinter dem Komma)<br>
    Meine Idee war erst, die Zahlen in ein Array einzulesen, oder die Zahlen in eine Datei zu schreiben.<br>Aber da fangen meine Probleme an: Ich weiss nich wie ich das machen soll.<br>Bitte Helft mir.<br><br>Für jede Hilfe(am Besten mit Beispiel) wäre ich sehr dankbar.<br><br>Ich benutze den Compiler Microsoft Visual C++ 6.0 standard Editio.<br><br><br>Daniel Heinrich

  • #2
    Keine Ahnung wie's geht. Aber in dem Falle ist vielleicht dass Arbeiten mit Strings sinnvoll. Die Multiplikation und Division kann man damit der Handrechnung recht einfach nachahmen. Es wird zwar kein Renner bezüglich der Geschwindigkeit, aber besser als nichts.<p>
    Hagen Redmann (zu erreichen im Delphi-Teil) hat für Delphi eine Large-Integer-Lib geschrieben. Sieht verdächtig nach dem aus, was Du suchst, vielleicht kontaktest Du Ihn ja mal?<p>Schöne Grüße, Mario Noac
    Schöne Grüße, Mario

    Comment


    • #3
      Eine Zahl mit 3.000.000 Stellen ???? Da möchte ich erst mal jemanden sehen der diese Zahl eingibt. Also ein Menschenleben reicht dafür wahrscheinlich nicht aus.... Für normale Rechenoperationen reicht der Datentyp double vollkommen aus

      Comment


      • #4
        Tja, Sebastian, aber hier ist nun jemand der solche Operationen durchführen will.

        Wer sagt, dass die Ziffern eingegeben werden. Sie könnten generiert sein und aus einer Datei kommen
        Christian

        Comment


        • #5
          Na gut... so eine Lösung könnte ich mir schon vorstellen, ist ja auch nicht allzu schwierig.<br>
          Man muss sich ein paar Ansätze überlegen. Als erstes muss man sich entscheiden ob man das ganze als Ganzzahlen oder Fliesskommazahlen macht. Gehen wir zunächst davon aus, dass man das als Ganzzahlen macht, das ist einfacher.<br>
          Man muss ja sowieso mit einer begrenzten anzahl von Stellen arbeiten, anders geht es nicht. Man kann da ein Feld definieren, wo in jeder Zelle eine Stelle steht, es müssen nicht unbedingt dezimalstellen sein, weil man bei Dezimalstellen soviel Speicherplatz verschwenden würde, wenn man bedenkt dass man z.B. in einem Byte nur die Zahlen von 0 bis 9 abspeichern würde...<br>
          So.. .nun muss man die Operationen implementieren. Bei einer Addition beispielsweise muss man stelle für Stelle addieren und den Überlauf zu der nächsthöheren Stelle dazuaddieren. Die Subtraktion geht dann z.B. als Addition mit dem Zweier-Komplement. Multiplikation und Division sind ein bisschen Schwieriger aber auch machbar.<br>
          Um eine unbegrenzte Anzahl von Stellen zu haben, muss man am besten eine Klasse machen, die erkennt dass das Feld nicht mehr reicht und es bei Bedarf vergrössert. Das ist mit ein bisschen Programmieraufwand verbunden.<br>
          Wenn man sich entscheidet mit Fliesskommazahlen zu arbeiten, wird das ganze schwieriger, da weiss ich auch nicht so sicher ob das machbar ist. Man muss halt genau den Aufbau der Fliesskommazahlen definieren mit Mantisse uns Exponenten usw.... und dann muss man sich Gedanken darüber machen, wie man da die Operationen durchführt und die Zahlen ausgibt. Man muss sich aber trotzdem auf eine Anzahl von stellen beschränken...

          Comment


          • #6
            Na dann mal los, und multiplizieren, dividieren, potenzieren auch gleich mit rein.

            "aber trotzdem auf eine Anzahl von stellen beschränken...."

            Naja, eigentlich nicht, sofern du mit Strings oder besser Arrays oder Speicherbereich arbeitest.

            Per google gibt es übrigs fertige Librarys für sowas
            Christian

            Comment


            • #7
              Das is ja schon nich schlecht mit google, aber worunter soll man da suchen?<br>Mal ganz davon abgesehen wär es toll wenn ich danach auch wüsste wie und vor allem warum das ganze dann Funktioniert, Das findet man dann leider nicht in vorgefertigten Biblieotheken.

              Daniel Heinric

              Comment


              • #8
                hier gibts ein Beispiel über transzendente Zahlen (e und pi), die mit Hilfe von Arrays berechnet werden - in C.

                http://homepages.fh-regensburg.de/~wah39067/MA2/lsg/c4

                Comment

                Working...
                X