Frohe Weihnachten !



  • SirLant schrieb:

    Es gibt sowohl in ISO-C++ als auch in ISO-C99 den Typ "long long" Welcher 64bit breit ist.

    Erstaunlich, daß man trotzdem keine Treffer hat, wenn man die C++-Norm auf "long long" durchsucht.

    DrGreenthumb: Vielleicht mal die Literale mit ull versehen. Dann erhalte ich so beispielsweise

    aS, `t p dcnantl ed n a d hro

    si. cn ndcalcseiohAahmsr a
    e weegen eh' hoI ca iweacn H
    Hsei.f l ea m emrtrs,d e rhfebfWe hre e nstN inr d rrn ehe .em K die v seh

    Vermutlich expressionistisch.



  • Bei mir gibt das ganze nur ne havy acess violation. Tja is wohl meine Schuld 😃



  • Ah, mit ull kompilierts. Sieht aber auch so aus.



  • Ok dann gibts das nur in C99 standardmäßig und ich hab irgendwo was falsches
    aufgeschnappt.



  • error C2632: 'long' gefolgt von 'long' ist unzulässig



  • Weiß jemand von euch, welche Anforderungen an einen Functor
    für random_suffle gestellt werden? Zurückgegbener Wertebereich etc. ?
    Dann kann ich das "Geschenk" umbauen, so dass es auch mit mehr Compilern
    fuktioniert 🙂





  • Bei VC6.0 ist long long durch __int64 zu ersetzen.



  • Das sollte auf allen Compilern laufen, die long long unterstützen. Ansonsten gegem __int64 oder
    sonst was ersetzten 🙂

    /**/                                                            #include <iostream>
                                                          #include <algorithm>
                                                  #define Dec *100+12
               class RaNd                              {
       unsigned            long                    randx;
             public:     RaNd               (long s = 0)
               {randx = s;}               long operator()
                 (long x){randx          += x; return
                         randx % x;}};int main(){    
                             unsigned long 
                           long int x[19] = { 
    0x6583d3420c7a106dull,    0x6edd97be559a5074ull,   0x6ed8837e1cba5069ull,
    0x65d197272cbbd065ull,    0x6ce8832e5d19b2e3ull,   0x64408334b41bb761ull,
    0x6e9283bf34081020ull,    0x205da2761c397972ull,   0x74c3a3862402b9edull,
    0x72ddcd06ed882be5ull,    0x204fdb7a0c82b4a0ull,   0x48cb97269e7cf268ull,
    0x61db4d0204123320ull,    0x20418f0a05d95020ull,   0xac3a7968c82b3f2ull,
    0x2040b3965c681020ull,    0x63e7957634083701ull,   0x724081020c397965ull,
    0x654083274d1b7773ull}    ;char ruprecht[171 ];    for(int k   = 0; k !=
    171; k+=9  ) for(int i    = 8; i >= 0;    --i){    ruprecht[k+i] = x[k/9]
    &   0x7F;x[k/9] >>= 7;   }RaNd       rnd(24 Dec)   ;std  ::random_shuffle
    (ruprecht,ruprecht+171   ,rnd);/* merry  xmas */   std::cout<<ruprecht<<  
    std::endl; getchar();}   /*********************/   /*********************/
    


  • Ich hab ein ganz besonders tollen Fehler. Hat da irgendwer ne Idee?
    Wenn ich die Zeile
    x[k/9] >>= 7;
    wie im Program benutze gibt es ne Eacess Violation. Wenn ich stattdessen schreib
    x[k/9]=x[k/9] >> 7;
    Ist alles super und ich kann das Gedicht lesen. Sind die beiden Zeilen nicht im Grunde gleichbedeutend?
    Und was soll eigendlich die 2 unter dem Gedicht?



  • Die erste Version tut bei mir besser, bei der zweiten bekomm ich unter der letzten Zeile noch komische Zeichen:

    Programm schrieb:

    ╠╠╠╠╠╠╠╠╠

    Hab VC 7.1 .NET 2003


Anmelden zum Antworten