Bekomme dauernd Runtimefehler - The variable is being used without being initialized...



  • Wo ist der Fehler? Ich hab das nicht nachgeprüft.



  • Lasse das doch mal für dich durchrechnen - da fällt es dir ja vielleicht auf 😃

    Wenn du deine Länge kennst und auch die anderen Eingaben, passt da das Ergebnis?

    Denglisch? Da kann man sich auch für die eine oder andere Sprache entscheiden bei der Ausgabe 😉

    Was noch auffällt, dein Gewicht wird zwar abgefragt - aber wozu?
    Das macht nur Sinn, wenn da noch Quelltext ergänzt wird.

    MfG f.-th.



  • double ideal = (size - 100) * (male_factor * male + female_factor * !male) / 100;
    

    Man kann es auch übertreiben mit den Optimierungen 😉 Hast du schon mal vom ?:-Operator gehört?



  • CStoll schrieb:

    double ideal = (size - 100) * (male_factor * male + female_factor * !male) / 100;
    

    Man kann es auch übertreiben mit den Optimierungen 😉 Hast du schon mal vom ?:-Operator gehört?

    Zumal die Optimierung wirklich fragwürdig ist. Die Multiplikation des Faktors mit dem bool kostet einmal 2-15 Ticks für die Konvertierung des bool in einen double, dann nochmal 4-8 Ticks für die Multiplikation. Das Ganze zweimal (male und female), zuzüglich 3-6 Ticks für die Addition. Macht 15-52 Ticks zusammen. Branch misprediction penalty liegt bei 12-25 Ticks und wird, auch wenn 50/50 ne miese Verteilung ist, nicht immer greifen. Im Mittel liegt man mit dem ?: also deutlich utner dem male/female-Multiplikations-Konstrukt.
    Ist natürlich alles nur ne Näherung und man müsste es von Prozessor zu prozessor ausmessen, was wirklich billiger ist, aber das ist auf jeden Fall ein Beispiel für premature optimization.



  • Das ist keine Optimierung sondern Faulheit.



  • Lol?

    double ideal = (size - 100) * (male ? male_factor : female_factor) / 100;
    

    -> weniger zu tippen, leichter zu lesen, optimierte Faulheit 😛



  • Na wenn du meinst. Ich mag ?: in Berechnungen nicht.



  • 314159265358979 schrieb:

    Na wenn du meinst. Ich mag ?: in Berechnungen nicht.

    Geht mir auch so.



  • volkard schrieb:

    Geht mir auch so.

    Mir gefällts.



  • Post in falschen thread, sorry.



  • in Zeile 17 verwendest du eine variable ohne sie deklariert zu haben, darin liegt vielleicht dein Fehler.

    cout << geschlecht;
    

    so würde ich das versuchen

    //geschlecht = true = 1 für weiblich und geschlecht = false = 0 für männlich 
    bool geschlecht;
    

    dann kannst du das auch in der if-Abfrage direkt integrieren ohne einen == operator.

    if( geschlecht!=0 || geschlecht !=1) cout << "Fehleingabe!\n";
    else if (geschlecht) idealgewichtfrau = ((körpergröße - 100) * 90) / 100;
    else if (!geschlecht) idealgewichtmann = ((körpergröße - 100) * 95) / 100;
    


  • DarkChip schrieb:

    if (geschlecht == 0)
    		idealgewichtfrau = ((körpergröße - 100) * 90) / 100;
    	else if (geschlecht == 1)
    		idealgewichtmann = ((körpergröße - 100) * 95) / 100;
    

    Würde ich eher machen zu

    int geschlechtsfaktor;
    	if (geschlecht == 0)
    		geschlechtsfaktor = 90;
    	else
    		geschlechtsfaktor = 95;
    	int idealgewichtfrau = ((körpergröße - 100) * geschlechtsfaktor) / 100;
    

    Doppelten Code vermeiden und Variablen immer so spät wie möglich anlegen.



  • 314159265358979 schrieb:

    Na wenn du meinst. Ich mag ?: in Berechnungen nicht.

    Das mag Ansichtssache sein - ich habe es schon öfter vermisst. Aber auf jeden Fall ist es übersichtlicher als diese bool-Multiplikation.



  • Weiß einer wozu das Gewicht abgefragt wird? 😉
    Muß nicht auch die Haarfarbe abgefragt werden? 😃

    Nutzlosen Code vermeiden 😃


Anmelden zum Antworten