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



  • Hallo zusammen,

    problem ist ja schon oben beschrieben - hier nun der code:

    int geschlecht;
    	double idealgewichtmann, idealgewichtfrau, gewicht, körpergröße;
    
    	/*Eingabe */
    	cout<<setiosflags(ios::fixed)<<setprecision(2);
    	cout<<"Idealgewicht"<<endl;
    	cout<<"------------"<<endl;
    	cout<<endl;
    
    	cout<<"Bitte Koerpergroesse eingeben (in cm): ";
    	cin>>körpergröße;
    
    	cout<<"Bitte Gewicht angeben (in kg): ";
    	cin>>gewicht; 
    
    	cout<<"Bitte Geschlecht angeben (0=männlich/1=weiblich): ";
    	cin>>geschlecht;
    
    	/*Verarbeitung*/
    
    	if (geschlecht == 0)
    		idealgewichtfrau = ((körpergröße - 100) * 90) / 100;
    	else if (geschlecht == 1)
    		idealgewichtmann = ((körpergröße - 100) * 95) / 100;
    
    	cout<<idealgewichtmann<<endl;
    	cout<<idealgewichtfrau<<endl;
    
    	return 0;
    

    }

    vielen Dank schon mal im Vorraus ^^



  • Bitte in's C++-Forum verschieben. Und bitte C++-Code-Tags verwenden!



  • Auf das Problem hatte ich dich doch schon gestern aufmerksam gemacht - inzwischen hast du es nur verschlimmert. Wieso verwendest du überhaupt zwei verschiedene Variablen für das Idealgewicht?



  • wo soll ich den bitte noch Tags verwenden ? - hab doch den code darin schon eingeschlossen ?

    mhm - ja, jetzt wo du es sagst, fällt es mir auch auf - durch die If anweisung entscheidet er ja schon, ob männlein oder weiblein..

    Hat übrigens funktioniert wenn ich nur das idealgewicht nehme..

    Vielen Dank



  • Dieser Thread wurde von Moderator/in SideWinder aus dem Forum DOS und Win32-Konsole in das Forum C++ (auch C++0x) verschoben.

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

    Dieses Posting wurde automatisch erzeugt.



  • http://ideone.com/qydkJ
    So würde ich das machen.



  • DarkChip schrieb:

    wo soll ich den bitte noch Tags verwenden ? - hab doch den code darin schon eingeschlossen ?

    Nicht [ code ] sondern [ cpp ].

    int main()
    {
    }
    
    int main()
    {
    }
    

    Unterschied nun klarer? 😉



  • Wie der angehängte Aus- und Eingaben beweisen ist da noch ein Fehler drin:
    http://ideone.com/qydkJ 😃

    Stand: Zeit der Beitragserstellung 😉

    Idee ist aber ausbaufähig.

    f.-th.



  • 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.


Anmelden zum Antworten