Hi Leute!
Wiedereinmal bin ich auf eure Hilfe angewiesen.
Ich soll wiedereinmal etwas für den Informatik-Kurs programmieren.
Dabei geht es dabei um einen Idealgewicht-berechner. Ich stelle euch meinen Gedankengang und meinen Code vor, damit ihr Denkansatz-Fehler u. Code Fehler ausmachen könnt. Vielen Dank schon im Voraus!
Aufgabenstellung:
Einen Idealgewichtserrechner programmieren! Die Formel für das männliche IDealgewicht ist: Körpergröße -100, und davon 95%. Wir sollen 2% +/- einbeziehen.
Meine Lösung: Ein Programm mit 2 Edit-Feldern (Größe/Gewicht), und einem Button "Antwort". Hat man beides eingetippt und klickt auf "Antwort", wird in 2 Variablen (IdealHigh; IdealLow - beides Real) das idealgewicht gespeichert. In IdealHigh also die Körpgeröße -100 * 0.97 (95% + 2% = 97% weg. der erwähnten 2 Prozent Karenz), und in IdealLow das Ganze mit 0.93 (93%, wieder weg. der Karenz). Das Ganze wird mit dem eingetippten Gewicht verglichen. Wenn IdealHigh kleiner als das eingetippte Gewicht ist, hat man übergewicht. Ist IdealLOW größer als das eingetippte Gewicht, hat man untergewicht.
Mein Problem ist nun das Idealgewicht, denn bei meiner Lösung (siehe Code unten), wird mir sobald ich auf 150 cm, 54 KG (IDealgewicht für 150 cm) eintippe, passiert beim klicken auf den Antwortbutton einfach garnichts! Was mache ich falsch?
Delphi-Quellcode:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm2 =
class(TForm)
RGGender: TRadioGroup;
LHeight: TLabel;
LWeight: TLabel;
EHeight: TEdit;
EWeight: TEdit;
BAnswer: TButton;
BEnd: TButton;
procedure BAnswerClick(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form2: TForm2;
IdealHigh: Real;
IdealLow: Real;
implementation
{$R *.dfm}
procedure TForm2.BAnswerClick(Sender: TObject);
begin
if RGGender.ItemIndex = 0
then // einfach nicht beachten ist nur zur Geschlechtsfeststellung//
IdealHigh:= StrToFloat(EHeight.Text) - 100;
IdealHigh:= IdealHigh * 0.97;
IdealLow:= StrToFloat(EHeight.Text) - 100;
IdealLow:= IdealLow * 0.93;
if IdealHigh < StrToFloat(EWeight.Text)
then
ShowMessage ('
Sie haben Übergewicht!')
else if IdealLow > StrToFloat(EWeight.Text)
then
ShowMessage ('
Sie haben Untergewicht!')
else if (IdealHigh >= StrToFloat(EWeight.Text))
and
(IdealLow <= StrToFloat(EWeight.Text))
then
ShowMessage ('
Sie haben Idealgewicht!');
end;
end.
Denke nie gedacht zu haben, denn das Denken der Gedanken ist gedankenloses Denken!