Große Zahlen



  • freakC++ schrieb:

    super! Danke für die Antworten.

    Ich wollte jetzt eine Methode implementieren, die zwei Biggy Zahlen dividiert. Warum geht das nicht?

    Biggy& operator /( const Biggy& b )
        {
            return m_x / b.m_x;
        }
    

    Hier fehlt angeblich ein L - Wert? Hä?

    Was mache ich falsch?

    Vielen Dank
    lg, freakC++

    / sollte keine Referenz auf einen lebenden Wert zurückgeben, sondern eine neuen Wert.



  • Ach verdammt! Der Referenzoperator! Den hab ich vergessen beim Copy & Paste!

    Danke! Jetzt funktionierts!

    lg, freakC++



  • Wenn du einen guten Compiler hast und eine hohe Warnstufe einstellst, sollte die Rückgabe von Referenzen und Zeigern auf lokale/temporäre Objekte eine Warnung ausgeben.



  • Ich habe doch noch ein Problem mit dem Zugriff auf die gespeicherten Zahlen. Ich habe jetzt folgendes:

    Biggy& operator /( const Biggy& b )
        {
           m_x = m_x / b.m_x; //In b.max steht nicht die Fakultät von 30
           return *this;
        }
    
    //...
    
     Biggy a(fac<Biggy>(50));
     Biggy b(fac<Biggy>(30));
     Biggy c(a / b);
    

    Die Division klappt aber nicht. Es kommt Murks raus. Ich denke, es liegt an "b.m_x", da anscheinend das Ergebnis von 30! nicht dort abgelegt ist.

    Ich weiß aber nicht, wie ich das Problem lösen kann? Was übersehe ich da gerde?

    Vielen Dank
    lg, freakC++


  • Mod

    freakC++ schrieb:

    Die Division klappt aber nicht. Es kommt Murks raus. Ich denke, es liegt an "b.m_x", da anscheinend das Ergebnis von 30! nicht dort abgelegt ist.

    Ja, natürlich. Hast du den Thread überhaupt gelesen? Hast du nicht verstanden, was die Idee hinter der Klasse ist? Weißt du überhaupt, was ein Logarithmus ist?

    Ich könnte dir zwar jetzt einfach die richtige Lösung hinklatschen, aber dann denkst du ja erst recht nicht, was da überhaupt passiert. Das ist aber wichtig.



  • den sinn habe ich verstanden. Ich habe wohl vergessen, den Logarithmus wieder "rückgängig" zu machen. Ich muss also die Potenz noch nehmen.

    Ich probiere jetzt noch dran rum und melde mich dann wieder.

    edit: Bei einer Sache brauche ich aber Hilfe. Und zwar kann ich den einen Divisor nicht als stream beinhalten, sondern als Zahl. Das ist aber schwachsinn:

    double s = std::pow(10,b.m_x);
    

    denn dann hätte ich mit Biggy sparen können. Ich verstehe halt nicht, wie ich die Division durchführen muss. Beide Zahlen müssen als solche ja auch gespeichert sein und der Trick, der bei der Überladung von << genutzt worden ist, ist hier für mich nicht anwendar...

    Vielen Dank
    lg, freakC++


  • Mod

    log(a/b)=log(a)-log(b)



  • Hallo freakC++
    es ist ja amüsant zuzusehen, wie Du Dich mit der Division abmühst, aber dann sehe ich in Deinem Profil, dass Du schon(!) in der 12.Klasse bist.

    Jetzt mal 'ne Frage an die anderen: ist das normal? Wird heute nicht mehr gelehrt, was ein Logarithmus ist?

    Gruß
    Werner



  • also ich war mal auf nem technischen Gymnasium, LK Mathe + Informatik ... und mir begegnete der log auch erst im Studium ... und meine Schule ist schon 13 Jahre her!



  • Interessant - ich kann mich noch an mein erstes Semester an der Uni erinnern, da fragte der Prof wer nicht wisse was ein Logarithmus ist. Darauf meldeten sich 2 oder 3 (von ca.200). Anschließend meinte der Prof dann: "Kommen sie nach der Vorlesung bitte zu mir, ich möchte mal wissen, wie Sie zu Ihrem Abiturzeugnis gekommen sind."
    normal war das damals nicht.

    Gruß
    Werner



  • Hallo zusammen!

    Ich hatte am Ende der 10. Klasse für drei Wochen etwa den Logarithmus. Seitdem habe ich den nicht mehr durchgenommen. Ich habe es jetzt mit SeppJ Rechenregel hinbekommen.

    Meine Schwierigkeit war halt, dass der Code für mich noch etwas schwierig war und ich außerdem mit dem Logarithmus nicht allzu vertraut war. Das hat sich ja jetzt geändert 🙂

    Vielen Dank euch!
    lg, freakC++


Anmelden zum Antworten