Wer kann kann meinen Code straffen?



  • Dieser Thread wurde von Moderator/in estartu aus dem Forum MFC (Visual C++) in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Das wird wohl so sein wie es Tester2 sagt. Bei deinen Variablen wäre die Nutzung der ungarischen Notation hilfreich gewesen. Division durch Null knallt immer. Wenn du es mathematisch umgeformt hättest, dann hättest du dir den Spass mit 1/... sparen können und es so machen können:

    if (iAnzahl-1) //gibt true wenn die Differenz ungleich null und damit die Division definiert ist
    {
    fSigma=sqrt(fSumms/(static_cast<float>(iAnzahl-1)));
    }
    else
    {
    //Behandlung des Falls iAnzahl-1=0
    }
    


  • Da bringt die UN aber auch nichts, bei Division durch 0.0f kracht zwar nix, dafür ist das Ergebnis kaputt.



  • AndyDD schrieb:

    Bei deinen Variablen wäre die Nutzung der ungarischen Notation hilfreich gewesen.

    Mir wäre lieber die Deklaration gewesen, da die UN nicht jeder mehr kennt - ob man diese kriptischen Präfixe nun zusätzlich mitführt ist dabei egal.



  • Badestrand schrieb:

    Da bringt die UN aber auch nichts, bei Division durch 0.0f kracht zwar nix, dafür ist das Ergebnis kaputt.

    Sicher, aber es wäre ein Ansatz gewesen. Wenn du es aber abfängst, so wie ich es schemenhaft vorgeschlagen hab, dann ist doch das Ergebnis nicht kaputt. Davon mal abgesehen: wie willst du die Varianz von einem Zahlenwert ermitteln? Das wär ja eh Blödsinn...



  • Der ; ist im script vorhanden.
    #include <cmath>
    using namespace std; //hab ich gemacht

    double sigma;
    double summs;
    int anzahl;

    //ist eine Abfrage in der, der Benutzer die "anzahl" der Messwerte eingeben soll.
    bis jetzt von mir immer größer 0 eingegeben.

    UN heißt wohl ungarische Notation möchte ich mir nicht aneigenen, ausser es wäre nötig.



  • @ ruth05:
    Benutz doch bitte die

    Tags, dann kann man den Code auch lesen.
    Solche Codestücke wie in deinem ersten Beiträge verleiten einige User hier dazu, sich gar nicht erst um dein Problem zu bemühen.



  • ich habe heute geschlagene 4 stunden meinen schwanz poliert



  • AndyDD schrieb:

    Badestrand schrieb:

    Da bringt die UN aber auch nichts, bei Division durch 0.0f kracht zwar nix, dafür ist das Ergebnis kaputt.

    Sicher, aber es wäre ein Ansatz gewesen. Wenn du es aber abfängst, so wie ich es schemenhaft vorgeschlagen hab, dann ist doch das Ergebnis nicht kaputt.

    Ich glaube, ich hatte dich auch falsch verstanden 😉 Ich dachte du meintest, dass weil man nicht erkennt, dass (Anzahl-1) ein Ganzzahl-Wert ist, es dadurch krachen könnte. Und ich wollte eigentlich nur darauf hinaus, dass man vor jeder Division (außer sie ist eine sehr merkwürdige Operator-Überladung) auf !=0 testen sollte, unabhängig vom Zahlen-Typ. In der Hinsicht hätte ich persönlich auch lieber, wenn eine Division durch 0.0f ebenso fatal wäre, wie eine Division durch int(0); ich hab schon oft genug und lange genug dran gesessen, den vermeintlichen Rechenfehler zu suchen, dabei hatte ich eben nicht jede Division abgecheckt. Und Rechnungen erfordern bei einem Divisor von 0 fast immer einen anderen Rechenweg, bei mir zumindest.
    🙂



  • Badestrand schrieb:

    Und ich wollte eigentlich nur darauf hinaus, dass man vor jeder Division (außer sie ist eine sehr merkwürdige Operator-Überladung) auf !=0 testen sollte, unabhängig vom Zahlen-Typ.

    Eventuell lohnt es sich auch, dafür eine Exception zu machen.


Anmelden zum Antworten