Autor Beitrag
xilos
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 59



BeitragVerfasst: Mo 02.04.07 17:01 
hi...

ich habe ein problem mit einem gewichtsrechner!!!
und zwar soll er zwischen mann und frau unterscheiden und je nachdem ausrechnen ob man idealgewicht hat oder nicht.
(mann: (groeße - 100) * 0.95)
(frau: (groeße - 100) * 0.90)

ich hab schon mal angefangen. hier ist der bisherige quelltext, aber es funktioniert irgendwie noch nicht wirklich viel ^^

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;
  
type
  TForm1 = class(TForm)
    L_caption: TLabel;
    L_groese: TLabel;
    L_gewicht: TLabel;
    E_groese: TEdit;
    E_gewicht: TEdit;
    B_antwort: TButton;
    B_ende: TButton;
    R_sex: TRadioGroup;
    Edit1: TEdit;
    procedure B_endeClick(Sender: TObject);
    procedure R_sexClick(Sender: TObject);
    procedure E_groeseChange(Sender: TObject);
    procedure B_antwortClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.B_endeClick(Sender: TObject);
begin
close
end;

procedure TForm1.R_sexClick(Sender: TObject);
begin
 if R_sex.itemindex = 0 then
   begin
   form1.color := clskyblue;
   end
 else
   begin
   form1.Color := $00C8C0DC;
   end
end;

procedure TForm1.E_groeseChange(Sender: TObject);
begin
 e_groese.setfocus;
end;

procedure TForm1.B_antwortClick(Sender: TObject);
var groese, mideal, wideal, gewicht : real ;
begin

 e_groese.Clear;
 e_gewicht.Clear;
 groese  := strtofloat(e_groese.text);
 gewicht := strtofloat(e_gewicht.text);

if r_sex.ItemIndex = 0 then
  begin
  mideal := (groese-100) * 0.95 ;
  end
else
  begin
  wideal := (groese-100) * 0.90;
  end

  if mideal or wideal = groese then
    begin
    showmessage('sie haben idealgewicht');
    end
  else
    begin
    showmessage('sie haben kein idealgewicht');
    end

end;

end.


kann mir einer von euch sagen was daran falsch ist?? ^^

thx jetzt schon mal
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Mo 02.04.07 17:28 
der or Operator wird falsch eingesetzt. Zahl1 or Zahl2 ist eine Rechnung:
Nehmen wir an, Zahl1 sei 10 und Zahl2 15, dann rechnen wir das in binär um:
ausblenden Quelltext
1:
2:
3:
4:
   Zahl1=1010
or Zahl2=1111
-------------
Ergebnis=0101=5(10)

Du musst das folgendermaßen machen: if (Wert1 = 10or (Wert2 = 10then {...}

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
xilos Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 59



BeitragVerfasst: Di 03.04.07 08:21 
also würde das gehn wenn ich schreiben würde

ausblenden Delphi-Quelltext
1:
2:
if (mideal = gewicht) or (wideal = gewicht) then
...


wenn ich das so hinschreibe kommt bei mir folgende fehlermeldung...

project project1.exe raised exception dass econverterror with message "is not a valid floating point value'.process stopped. use step or run to continue.
uro3
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Di 03.04.07 09:08 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
e_groese.Clear;   // leert das Edit Feld
 
groese  := strtofloat(e_groese.text); // was soll dann umgewandelt werden?


if r_sex.ItemIndex = 0 then
begin
  mideal := (groese-100) * 0.95 ;     // wird bei Frau nie gesetzt
end
else
begin
    wideal := (groese-100) * 0.90;   // wird bei Mann nie gesetzt
end

if (mideal = gewicht) or (wideal = gewicht) then   // Vergleich mit nicht initialisierten Wert (mideal bzw. wideal)
xilos Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 59



BeitragVerfasst: Di 03.04.07 12:27 
ich hab keine ahnung wie ich das in einem delphicode umschreiben soll ^^
kann mir das vll einer von euch "übersetzen" xD

wenn r_sex.itemindex = 0 dann
-rechne die körpergröße - 100 und das * 0.95
-vergleiche dies mit dem idealgewicht eines mannes
-wenn es gleich ist zeige message "sie haben idealgewicht"
-wenn es nicht gleich ist zeige message "sie haben kein idealgewicht"
andernfalls
-rechne die körpergröße - 100 und das * 0.90
-vergleiche dies mit dem idealgewicht einer frau
-wenn es gleich ist zeige message "sie haben idealgewicht"
-wenn es nicht gleich ist zeige message "sie haben kein idealgewicht"


ich komm echt nicht weiter und weiß nicht wie ich das machen soll....thx jetzt schon mal
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Di 03.04.07 12:44 
Dann arbeite doch das ab wie Du es schreibst, gegebenenfalls erstmal nur mit männlich.
Lass Dir zb. Zwischenergebnisse anzeigen mit Showmessage, dann findest Du deine Fehler von allein.

_________________
Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
Andidreas
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 114

Windows XP Pro
BDS 2006
BeitragVerfasst: Di 03.04.07 12:54 
Ja, ja. Lesen können erleichtert die Sache ungemein.
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;
  
type
  TForm1 = class(TForm)
    L_caption: TLabel;
    L_groese: TLabel;
    L_gewicht: TLabel;
    E_groese: TEdit;
    E_gewicht: TEdit;
    B_antwort: TButton;
    B_ende: TButton;
    R_sex: TRadioGroup;
    Edit1: TEdit;
    procedure B_endeClick(Sender: TObject);
    procedure R_sexClick(Sender: TObject);
    procedure E_groeseChange(Sender: TObject);
    procedure B_antwortClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.B_endeClick(Sender: TObject);
begin
close
end;

procedure TForm1.R_sexClick(Sender: TObject);
begin
 if R_sex.itemindex = 0 then
   begin
   form1.color := clskyblue;
   end
 else
   begin
   form1.Color := $00C8C0DC;
   end
end;

procedure TForm1.E_groeseChange(Sender: TObject);
begin
 e_groese.setfocus;
end;

procedure TForm1.B_antwortClick(Sender: TObject);
var groese, mideal, wideal, gewicht : real ;
begin

 e_groese.Clear; // Wenn Du das hier
 e_gewicht.Clear; // und das hier schon jetzt leerst, was bitte soll er dann berechnen
 groese  := strtofloat(e_groese.text);
 gewicht := strtofloat(e_gewicht.text);

if r_sex.ItemIndex = 0 then
  begin
  mideal := (groese-100) * 0.95 ;
  end
else
  begin
  wideal := (groese-100) * 0.90;
  end// Semikolon fehlt

  if (mideal = gewicht) or (wideal = gewicht) then // so wird ein Schuh draus für die Abfrage
    begin
    showmessage('sie haben idealgewicht');
    end
  else
    begin
    showmessage('sie haben kein idealgewicht');
    end

end;

end.