[Code] Pascal dreht am Rad.

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von ghma83, 2. Dezember 2009 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 2. Dezember 2009
    Pascal dreht am Rad.

    Hey,
    ich bin gerade dabei einen kleinen BMI-Rechner zu schreiben.
    Soweit funktioniert er auch, allerdings rechnet er mir einen falschen Wert aus.
    Ich häng jetzt mittlerweile eine ganze Weile da dran und Google spuckt auch nichts aus.

    Die BMI Formel ist groesse / (hoehe ^ 2).
    Ich poste einfach mal den Source:

    Code:
    PROGRAM x_BMI_Calc;
    USES Crt;
    
    const author = 'x';
    const err01 = 'This is no digit.';
    const err02 = 'Digit is too small.';
    const err03 = 'Digit is too big.';
    
    const err04 = 'You cant be that fat.';
    const err05 = 'You cant be that thin.';
    
    var height: integer;
    var weight: integer;
    var bmi: extended;
    
    BEGIN
     highvideo;
     writeln('BMI-Calc (metric) written by ',author);
     normvideo;
    
     {* sleep(500); *}
    
     writeln;
     writeln('Please type your height in centimeters: ');
     readln(height);
    
     IF height > 250 THEN
     BEGIN
     writeln(err03);
     readkey;
     exit;
     end;
    
     IF height < 80 THEN
     BEGIN
     writeln(err02);
     readkey;
     exit;
     end;
    
     writeln;
     writeln('Please type your weight: ');
     readln(weight);
    
     if weight > 500 THEN
     BEGIN
     writeln(err04);
     readkey;
     exit;
     end;
    
     if weight < 25 THEN
     BEGIN
     writeln(err05);
     readkey;
     exit;
     end;
    
     writeln;
     writeln;
     writeln('Your height is ',height,' cm and your weight is ',weight,'?');
     readkey;
    
     {* bmi formel: w / (h*h) *}
     highvideo;
     bmi := weight / (height / height);
     writeln('Your BMI is ',bmi);
     readkey;
    
    END.
    Der Knackpunkt liegt fast ganz unten, und zwar bei
    Code:
     bmi := weight / (height / height);
    Ich hab bmi auch einfach schon als normale integer deklariert und einige andere Sachen probiert.

    Danke für jegliche Hilfe.
     
  2. 2. Dezember 2009
    AW: Pascal dreht am Rad.

    öhm.
    a^2 = a * a und nicht a / a

    das hast du im kommentar da drüber ja sogar stehen..
     
  3. 2. Dezember 2009
    AW: Pascal dreht am Rad.

    Ja, die Formel ist halt umgestellt.
    ^ schmeckt dem Compiler nicht und Klammersetzung scheint nicht zu funktionieren.

    ?(
     
  4. 2. Dezember 2009
    AW: Pascal dreht am Rad.

    was ist daran umgestellt?
    schreibts mal richtig hin, dann geht das auch xD
     
  5. 2. Dezember 2009
    AW: Pascal dreht am Rad.

    Die Fehlermeldung wäre natürlich ganz interessant.

    ^ funktioniert nicht, da es vermutlich für das bitweise xor steht. Aber wie Thoniel schon sagte, du hast hier in der Klammer ein / anstatt einem *:
    Code:
     bmi := weight / (height / height);
     bmi := weight / (height * height);
     
  6. 2. Dezember 2009
    AW: Pascal dreht am Rad.

    Das mit der Klammer hab ich geändert.
    Fehlermeldungen gibt es keine, ein Ergebnis gab bzw. gibt es ja.

    Code:
    BMI-Calc (metric) written by x
    
    Please type your height in centimeters:
    180
    
    Please type your weight:
    80
    
    
    Your height is 180 cm and your weight is 80?
    Your BMI is 2.4691358024691358E-0002
    
    Er rechnet schon.

    Code:
     bmi := weight / (height * height); 
    Allerdings kann ich dort auch noch * 10 dranhängen, er macht es einfach nicht.
    Es kommt immer ein Zehntel vom echten BMI raus.
    Bin echt verwirrt.
     
  7. 2. Dezember 2009
    AW: Pascal dreht am Rad.

    Hast du dir mal die Zahl genauer angeschaut?
    Das ist nicht 1/10 sondern (x10 HOCH -2), also 1/100. Und wenn du den wert nun mal 10 nimmst dann änder sich auch am Wert vom Optischem kaum was ausser das es dann am Ende E-0001 heisst.

    Der Punkt ist, dass die Formel falsch ist bzw die umsetzung dieser nicht richtig!


    Hier die Formel nochmal:
    BMI = (Körpergewicht in kg) : (Körpergröße in m)²

    Musst halt dein Eingegebene Höche von cm in m umrechnen (evtl. für height und wieght auch dne typ extended nehmen):
    Sollte dann so funktionieren.

    Mfg Rushh0ur
     
  8. 3. Dezember 2009
    AW: Pascal dreht am Rad.

    Hi

    Danke erstmal für den Tipp.
    Deine Lösung hat aber leider nicht geklappt.
     
  9. 3. Dezember 2009
    AW: Pascal dreht am Rad.

    Wenn er die Zahl so dumm angibt solltest du sie einfach runden bei der Ausgabe...
     
  10. 3. Dezember 2009
    AW: Pascal dreht am Rad.

    Dann bist du zu doof sie umzusetzen..

    Hier die verschiedenen Lösungen für dein Problem:
    - Multiplizier dein Ergebnis mit 10.000
    - Lass den Benutzer die Größenangabe in Meter eingeben (i.d.F. 1,8 )
    - Mach es so wie von Rushh0ur vorgeschlagen und rechne die Größenangabe von Zentimeter in Meter um

    BMI = 80 / (180 * 180) = 80 / 32400 = 0,0024691358024691358024691358024691

    BMI = 80 / ((180/100) * (180/100)) = 80 / (1,8 * 1,8 ) = 80 / 3,24 = 24,691358024691358024691358024691

    Oh Wunder, oh Wunder.. -.-


    Wow!
     
  11. 4. Dezember 2009
    AW: Pascal dreht am Rad.

    Oh Wunder, dein Trollpost enthält auch keine funktionierende Lösung.
     
  12. 4. Dezember 2009
    AW: Pascal dreht am Rad.

    Was habt ihr denn für ein Problem?
    Wenn die Zahl ein anderes Format hat als das gewünschte dann sucht man halt eine formatierte ausgabe!

    funktiniert?
    Code:
    writeln('Your BMI is ',bmi:4:2);
    
     
  13. 4. Dezember 2009
    AW: Pascal dreht am Rad.

    Jaaa, es funktioniert.
    Vielen Dank.
     
  14. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.