suche Bibliothek für Sehr Große Integer Zahlen (am besten mit anleitung)



  • so ich habe jetzt das ganze in mein projekt implementiert. vc++ erkennt auch alles, bloß ich komm absolut nicht mit mpz_t klar. wie kann man den variablen dieses typs werte zuweisen und mit den dann noch arbeite?
    ich hab hier mal ein bsp Programm:

    #include "stdafx.h"
    #include "math.h"
    #include "stdio.h"
    #include <gmp.h>
    
    int main(array<System::String ^> ^args)
    {
    mpz_t x,y;
    mpz_init (x);
    mpz_init (y);
    x=1234;
    y=x+1;
    Console::WriteLine(y);
    return 0;
    }
    

    hier funktionieren bspweise die Operatoren "=" und "+" nicht. wie kann ich sonst mit mpz_t zahlen arbeiten?oder überhaupt erstmal den etwas zuweisen?
    ich habe zwar schon unter:
    http://www.swox.com/gmp/manual/
    geguckt aber keine richtige antwort gefunden. kann mir jemand weiter helfen bzw. dieses Programm mal korrigieren?



  • 1. Was soll denn das sein?

    int main(array<System::String ^> ^args)
    

    Das erinnert mich entfernt an Pascal.

    2. Wenn du unbedingt die C-Typen verwenden willst, mußt du auch die dazugehörigen Funktionen verwenden - mpz_set, mpz_add,... Alternativ dazu kannst du das C++ Klasseninterface (mpz_class) verwenden, die definiert die gängigen mathematischen Operatoren.



  • 1. war das mit main von vc++ vorgegeben
    und
    2.
    ich war auch schon so schlau das, man das so irgendwie machen muss.
    wie funktioniert das aber nun genau an meinem zuletzt genanntem beispiel?
    (Da hat es nämlich nicht funktioniert!)



  • x_dawnbeach schrieb:

    1. war das mit main von vc++ vorgegeben

    das ist C++/CLI 😃

    ich war auch schon so schlau das, man das so irgendwie machen muss.
    wie funktioniert das aber nun genau an meinem zuletzt genanntem beispiel?
    (Da hat es nämlich nicht funktioniert!)

    Lies doch bitte die Doku, dort steht alles drin.

    MfG

    GPC



  • hab ich ja und trotzdem funktioniert es nicht!!! Ich dachte einer von euch hat das schon mal benutzt oder?



  • CStoll hat doch nen Link gepostet, der alles erläutert:

    #include <iostream>
    #include <cmath>
    #include <gmpxx.h>  //Jetzt passt auch der include
    
    using namespace std;
    
    int main() {
        mpz_class x,y;
        x = 1234;
        y = x+1;
    
        cout<<y<<'\n';
    
        return 0;
    }
    

    MfG

    GPC



  • mpz_class wirdaber nicht erkannt, nur mpz_t! das programm was du über mir genannt hast funzt nicht. 🙂



  • x_dawnbeach schrieb:

    mpz_class wirdaber nicht erkannt, nur mpz_t! das programm was du über mir genannt hast funzt nicht. 🙂

    Was heißt: "wirdaber nicht erkannt"? Gib mal die Meldung des Compilers her, die vollständige.

    Edit: hab die falsche Datei includet und den oberen Post editiert, der passt jetzt. Dann musst du noch folgendes bei den Linkeroptionen eintragen: -lgmpxx -lgmp

    MfG

    GPC



  • so folgender fehler kommt:
    ------ Build started: Project: test, Configuration: Debug Win32 ------
    Compiling...
    stdafx.cpp
    Compiling...
    AssemblyInfo.cpp
    test.cpp
    d:\eigene dateien\visual studio 2005\projects\test\test\gmp.h(1565) : warning C4146: unary minus operator applied to unsigned type, result still unsigned
    .\test.cpp(12) : error C2065: 'mpz_class' : undeclared identifier
    .\test.cpp(12) : error C2146: syntax error : missing ';' before identifier 'x'
    .\test.cpp(12) : error C2065: 'x' : undeclared identifier
    .\test.cpp(12) : error C2065: 'y' : undeclared identifier
    .\test.cpp(16) : error C2065: 'cout' : undeclared identifier
    Generating Code...
    Build log was saved at "file://d:\Eigene Dateien\Visual Studio 2005\Projects\test\test\Debug\BuildLog.htm"
    test - 5 error(s), 1 warning(s)
    ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========



  • Linkerflags gesetzt?

    Bei mir (Linux) funktioniert obiges Beispiel problemlos. Keine Ahnung, wo da wieder der Hund begraben liegt. Vllt. fehlt ihm auch die stdafx.h 😕

    MfG

    GPC



  • ok dass problem hab ich gelöst, doch nun gibt der compiler folgende fehlermeldung:
    d:\eigene dateien\visual studio 2005\projects\test\test\gmp.h(1565) : warning C4146: unary minus operator applied to unsigned type, result still unsigned
    d:\eigene dateien\visual studio 2005\projects\test\test\gmpxx.h(1389) : error C3861: 'mp_get_memory_functions': identifier not found
    d:\eigene dateien\visual studio 2005\projects\test\test\gmpxx.h(1690) : warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
    d:\eigene dateien\visual studio 2005\projects\test\test\gmpxx.h(1691) : warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
    d:\eigene dateien\visual studio 2005\projects\test\test\gmpxx.h(1692) : warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
    d:\eigene dateien\visual studio 2005\projects\test\test\gmpxx.h(1693) : warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
    d:\eigene dateien\visual studio 2005\projects\test\test\gmpxx.h(1694) : warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
    d:\eigene dateien\visual studio 2005\projects\test\test\gmpxx.h(1695) : warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
    d:\eigene dateien\visual studio 2005\projects\test\test\gmpxx.h(2073) : warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
    d:\eigene dateien\visual studio 2005\projects\test\test\gmpxx.h(2074) : warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
    d:\eigene dateien\visual studio 2005\projects\test\test\gmpxx.h(2075) : warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
    d:\eigene dateien\visual studio 2005\projects\test\test\gmpxx.h(2076) : warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
    d:\eigene dateien\visual studio 2005\projects\test\test\gmpxx.h(2077) : warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
    d:\eigene dateien\visual studio 2005\projects\test\test\gmpxx.h(2078) : warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)

    hat jemand eine ahnung, wie man das problem lösen kann?



  • das solltest du ignorieren dürfen



  • Das hier bestimmt nicht

    d:\eigene dateien\visual studio 2005\projects\test\test\gmpxx.h(1389) : error C3861: 'mp_get_memory_functions': identifier not found



  • und wie kann ich nun das problem lösen?bzw. kennt jemand eine andere bibliothek?



  • Zeig bitte nochmal den aktuellen Code her. Vllt. kommen wir ja noch drauf.

    MfG

    GPC



  • der aktuelle code ist dieser gewesen(Visual C++ Studio 2005 express):

    #include "stdafx.h"
    #include "math.h"
    #include "stdio.h"
    #include <gmp.h>
    
    int main(array<System::String ^> ^args)
    {
      mpz_t x,y;
      mpz_init (x);
      mpz_init (y);
      x=1234;
      y=x+1;
      Console::WriteLine(y);
      mpz_clear (x);
      mpz_clear (y);
      return 0;
    }
    

    dabei kam fi oben genannten compilerfehler. das Problem liegt hier aber in der <gmp.h>. dass heißt die bibliothek funktioniert nicht (dazu muss ich sagen, dass diese bibliothek aus GMP stand, einer Sammlung von algorithmen, die eigentlich nur für linux-compiler vorgesehen sind). Gibt es also eine andere bibliothek für ganz große Zahlen(am besten für zahlen ohne Längenbeschränkung)?



  • tja, was soll ich sagen, baue ich deinen C++/CLI mit C gmp Header in reines C um und kompilier's, dann funzt es. Mach ich sauberes C++ draus, funzt es auch. Ich kompilier es mit der gcc. Tut mir leid, da kann ich dir wohl nicht helfen...

    #include <stdio.h>
    #include <gmp.h>
    
    int main(int argc, char **argv) {
      mpz_t x,y;
      mpz_init (x);
      mpz_init (y);
      x=1234;
      y=x+1;
      gmp_printf ("%Zd\n", y);
      mpz_clear (x);
      mpz_clear (y);
      return 0;
    }
    

    (dazu muss ich sagen, dass diese bibliothek aus GMP stand, einer Sammlung von algorithmen, die eigentlich nur für linux-compiler vorgesehen sind).

    Die gcc ist standardkonform, also nix speziell für Linux Compiler.

    MfG

    GPC



  • und gcc ist nicht für linux?mvc++s2005e ist für windows!also kennt jemand noch solch eine bibliothek für mvc++s2005e?



  • Vielleicht solltest Du nach einer Bibliothek für .NET suchen, nicht dass Du mit der nächsten Bibliothek in Standard-C(++) wieder Probleme bekommst (zwei waren's ja schon)...



  • hab ich auch schon gemacht und ausprobiert, funzten aber auch nicht!!!kennt jemand also noch eine bibliothek für ganz große zahlen?


Anmelden zum Antworten