Dezimale Zahlenausgabe wird falsch dargestellt...
-
Hallo zusammen,
hoffe dass das das richtige Forum dafür ist:
Ich habe versucht ein kleines Programm zu zeigen, dass mir das Idealgewicht sagen soll von Frau und Mann.. (nach Eingabe vom Benutzers Größe und Gewicht)
- Das Idealgewicht berechnet sich folgend:
bei Männern aus Körpergröße (in cm) - 100 und davon 95%
bei Frauen aus Körpergröße (in cm) - 100 und davon 90%Nun habe ich auch dementsprechend die Rechenformel eingeben, (die auch richtig ist, nach Auskunft von meinen Taschenrechner) -
aber leider ist das Ergebnis falsch bei der Ausgabe in der Konsole...Hier der Code damit ihr wisst von was ich hier gerade rede
int körpergröße, geschlecht; double idealgewicht, idealgewichtmann, idealgewichtfrau, gewicht; /*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) idealgewichtmann = ((körpergröße - 100) * 95) / 100; /* Anmerkung von mir: Wenn ich diesen Rechenweg in den Taschenrechner eingebe, kommt genau das ergebnis raus, was rauskommen soll...) else if (geschlecht == 1) idealgewichtfrau = ((körpergröße - 100) * 90) / 100; else cout<<"Ungueltige Eingabe"<<endl; cout<<idealgewichtmann<<endl;
Hoffe, ihr könnt mir sagen, was ich da falsch gemacht habe...
Gruß
-
Was genau erwartest du? und was wird ausgegeben?
(was auf jeden Fall auffällt: du speicherst das Ergebnis deiner Berechnungen je nach Auswahl in "idealgewichtmann" bzw. "idealgewichtfrau", gibst aber in beiden Fällen den Wert "idealgewichtmann" aus - bei Frauen steht da natürlich nichts sinnvolles drin.(PS: Es gibt hier code-Tags, damit sieht dein Quelltext übersichtlicher aus)
-
sorry, das wusste ich net - is mein erster Beitrag hier.
Das Ergebnis sollte sein, bei 185 cm Körpergröße 80.75 sein - aber anzeigen tut er nur 80.00 ... Obwohl ich mit den Taschenrechner die 80.75 rausbringe, mit den selben Rechenweg..
Das mit den Idealgewichtmann hatte ich bloß damit ich das Ergebnis sehen konnte..
gruß
-
Ich glaube, der Fehler liegt schon hier:
int koerpergroesse,geschlecht;
Die Körpergröße ist eine Ganzzahl, genause wie die Konstanten, die in deiner Formel verwendet werden. Darum verwendet der Compiler auch Ganzzahl-Arithmetik, um das Idealgewicht zu berechnen - und das bedeutet, daß bei der Division die Nachkomma-Stellen abgeschnitten werden.
Lösung: Entweder du verwendest eine double für die Größe oder du nutzt eine Gleitkomma-Konstante in deiner Formel (z.B. 100.0 statt 100).
-
Jap, daran lags -.-, sage dir meinen herzlichsten Dank
-
das ergebnis zeigt er jetzt an, leider gibt er mir immer, wenn ich versuche das Ergebnis für die Frau anzuzeigen, einen Runtimefehler: The variable is used without inizalied.. - obwohl ich doch das gleiche verfahren gemacht habe, wie für den mann..