AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Problem mit 2 Bedingungen in einer IF Schleife!
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit 2 Bedingungen in einer IF Schleife!

Ein Thema von Zwock · begonnen am 13. Okt 2005 · letzter Beitrag vom 15. Okt 2005
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Zwock

Registriert seit: 14. Sep 2005
Ort: Erlensee
20 Beiträge
 
#1

Problem mit 2 Bedingungen in einer IF Schleife!

  Alt 13. Okt 2005, 19:21
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!
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: Problem mit 2 Bedingungen in einer IF Schleife!

  Alt 13. Okt 2005, 19:35
1. Es gibt keine IF Schleife!!! Wo läuft er denn da im Kreis (bzw. in einer Schleife)?
2. Wenn du Untergewicht und Übergewicht ausgeschlossen hast, warum dann explizit noch testen, ob er denn über dem Untergewicht und unter dem Übergewicht? Du hast Über- und Untergewicht ausgeschlossen, also bleibt nur Idealgewicht übrig!

Delphi-Quellcode:
if IdealHigh < StrToFloat(EWeight.Text) then
    ShowMessage ('Sie haben Übergewicht!')

else if IdealLow > StrToFloat(EWeight.Text) then
     ShowMessage ('Sie haben Untergewicht!')

else
     ShowMessage ('Sie haben Idealgewicht!');
  Mit Zitat antworten Zitat
Zwock

Registriert seit: 14. Sep 2005
Ort: Erlensee
20 Beiträge
 
#3

Re: Problem mit 2 Bedingungen in einer IF Schleife!

  Alt 13. Okt 2005, 19:38
Den Begriff "If-Schleife" habe ich als alter PHP-Hase noch im Petto, gemeint sind einfach IF-Bedingungen samt den dazugehörigen Anweisungen Danke trotzdem! Hast mir sehr weitergeholfen!


Habs nun mit else gemacht, angezeigt wird mir beim Klicken auf "Antwort" trotzdem nichts ;((


Hier nochmal der komplette Code:

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
    begin
    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
       ShowMessage ('Sie haben Idealgewicht!');
    end

  else if RGGender.ItemIndex = 1 then
     begin
     IdealHigh:= StrToFloat(EHeight.Text) - 100;
     IdealHigh:= IdealHigh * 0.92;
     IdealLow:= StrToFloat(EHeight.Text) - 100;
     IdealLow:= IdealLow * 0.88;


     if IdealHigh < StrToFloat(EWeight.Text) then
       ShowMessage ('Sie haben Übergewicht!')

     else if IdealLow > StrToFloat(EWeight.Text) then
       ShowMessage ('Sie haben Untergewicht!')

     else
       ShowMessage ('Sie haben Idealgewicht!');
     end
end;

end.
Denke nie gedacht zu haben, denn das Denken der Gedanken ist gedankenloses Denken!
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Problem mit 2 Bedingungen in einer IF Schleife!

  Alt 13. Okt 2005, 20:13
Hast du mal überprüft, was der ItemIndex beim ButtonClick ist? Vielleicht ist der nicht 0 oder 1, sondern -1.
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Zwock

Registriert seit: 14. Sep 2005
Ort: Erlensee
20 Beiträge
 
#5

Re: Problem mit 2 Bedingungen in einer IF Schleife!

  Alt 13. Okt 2005, 21:19
Das ist ja nicht der Kasus-Knacksus, das Problem ist ja, egal welche NR das hat, dass er beim Idealgewicht nichts zeigt wennsch auf "antwort" klicke...
Denke nie gedacht zu haben, denn das Denken der Gedanken ist gedankenloses Denken!
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Problem mit 2 Bedingungen in einer IF Schleife!

  Alt 13. Okt 2005, 21:50
Der Code sollte aber so stimmen. Also check das doch einfach mal. Das hatten wir neulich nämlich schonmal hier. Kanns sein, daß du Radiobuttons auf die Radiogroup gezogen hast, anstatt Items im OI hinzuzufügen? (Ich halte dich nicht fürn doof, keine Angst, aber wie gesagt, den Fall hatten wir neulich schonmal und ich will den Fehler nur ausschließen) Denn dann ist der ItemIndex immer -1 und in deinem ButtonClick passiert gar nüscht.
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Zwock

Registriert seit: 14. Sep 2005
Ort: Erlensee
20 Beiträge
 
#7

Re: Problem mit 2 Bedingungen in einer IF Schleife!

  Alt 13. Okt 2005, 22:01
Ich habe ne Radiogroup erstellt, und habe in "Items" in die Liste die beiden Punkte eingetragen...
Denke nie gedacht zu haben, denn das Denken der Gedanken ist gedankenloses Denken!
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Problem mit 2 Bedingungen in einer IF Schleife!

  Alt 13. Okt 2005, 22:13
OK, dann haben wir den Punkt geklärt. Nich daß wir den Fehler gesucht hätten und es dann doch das gewesen wär

Aber irgendwas kann bei dir da nicht stimmen. Das muß funktionieren. Ich hab mir gerade den Code, 2 Editfelder, eine Radiogroup mit 2 Items und einen Button in ein Projekt eingebaut und es macht genau das, was es soll.
Also wie wärs, wenn du einfach testweise mal im ButtonClick am Anfang den ItemIndex per ShowMessage ausgibst?
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
tigerman33

Registriert seit: 30. Jul 2005
Ort: München
423 Beiträge
 
Delphi 2005 Professional
 
#9

Re: Problem mit 2 Bedingungen in einer IF Schleife!

  Alt 14. Okt 2005, 09:26
Funktioniert das nur dann nicht, wenn du das Idealgewicht eintippst (bzw einen Wert, der im Idealgewichts-Intervall liegt), oder auch nicht, wenn Über-/Untergewicht rauskommt?
Christian
Der Computer hilft mir, Probleme zu lösen, die ich ohne Computer nicht hätte.
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#10

Re: Problem mit 2 Bedingungen in einer IF Schleife!

  Alt 14. Okt 2005, 09:51
Ich würde dir empfehlen bei der Einrückung das begin und end auf die gleiche Stufe wie das zugehörige if zu stellen.

Hast du denn schon mal den Debugger angeschmissen und geschaut, wo es langgeht?

Beispiel für die Einrückung:

Delphi-Quellcode:
if a=b then
begin
  if a=c then
  begin
    SHowMessage('Blub1');
  end
  else
    SHowMessage('Blub2');
end;
nur als kleiner Tipp
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz