Autor Beitrag
Akamaru
Hält's aus hier
Beiträge: 9

WIN 2000
Delphi
BeitragVerfasst: So 04.12.05 20:56 
Also, hallo erstmal^^

Meine Aufgabe für Info ist es einen Idealgewichtsrechner zu programmieren, Konzentration hierbei auf die Verzweigung (hab info ja erst ein paar Wochen o.o")

Also, man soll mit Eingabe des Geschlechts, des Gewichts und der Größe berechnen lassen, ob jemand Ideal-, Unter- oder Übergewicht hat. Es soll zusätzlich noch eine Toleranz von jeweils 2% geben. Da das Idealgewicht bei Frauen anders ist muss er zuerst mal das Geschlecht als Bool Wert (Frage: bist du männlich? ja/nein) angeben.
Schlussendlich soll bei der Ausgabe dastehen, ob man über-, unter- oder idealgewicht- hat.

ich hab jezt den Code fertig und Delphi zeigt mir endlich keine Fehler mehr an, aber er zeigt bei der Endlösung nicht das an, was er soll.

hier der bisherige code...könnt ihr mir sagen, wo der fehler liegt? o_O"
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:
type
  TForm1 = class(TForm)
    EdGroesse: TEdit;
    EdGewicht: TEdit;
    Edgeschlecht: TEdit;
    EdAusgabe: TEdit;
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  Groesse, Gewicht, Idealgewicht2 : Real;
  Geschlecht : Bool;
  Untergewicht, Uebergewicht, Idealgewicht : String;
begin
Groesse := StrtoFloat(EdGroesse.text) ;
Gewicht := StrtoFloat(EdGewicht.Text)  ;
Geschlecht := StrtoBool(EdGeschlecht.Text) ;
  if Geschlecht = true then
      begin
      Idealgewicht2 := (Groesse-100)/ 100 * 95;
      if  Gewicht < Idealgewicht2 / 100 * 98 then
          EdAusgabe.Text := Untergewicht
      else if Gewicht > Idealgewicht2 / 100 * 102 then
              EdAusgabe.Text := Uebergewicht
           else  EdAusgabe.Text := Idealgewicht
      end
  else
      begin
      Idealgewicht2 := (Gewicht - 100) / 100 * 90;
      if  Gewicht < Idealgewicht2 / 100 * 98 then
           EdAusgabe.Text := Untergewicht
      else if Gewicht > Idealgewicht2 / 100 * 102 then
               EdAusgabe.Text := Uebergewicht
           else  EdAusgabe.Text := Idealgewicht

      end
end;

end.
starsurfer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 334

Win 95, Win 98, Win XP, Win Vista, Linux
D5 Enterprise ,D2005, D6 Personal, Visual C++ Express 2005, C++ Builder 6 E, Dev-C++
BeitragVerfasst: So 04.12.05 21:08 
also das der bei dir kein Fehler anzeigt ist mir ein Rätsel...

mein Delphi kennt den Befehl hier nich:
ausblenden Delphi-Quelltext
1:
Geschlecht := StrtoBool(EdGeschlecht.Text) ;					


mach das lieber mit ner checkbox oda so

_________________
GEIZ IST GEIL! - Ihr Sozialamt


Zuletzt bearbeitet von starsurfer am So 04.12.05 21:10, insgesamt 2-mal bearbeitet
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: So 04.12.05 21:08 
Du hast ja auch einige Variablen (Idealgewicht, Untergewicht, ...) keinen Wert zugewiesen.

Und wie starsurfer sagt, benutz eine Checkbox und nicht StrToBool();.

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)


Zuletzt bearbeitet von GTA-Place am So 04.12.05 21:10, insgesamt 1-mal bearbeitet
Akamaru Threadstarter
Hält's aus hier
Beiträge: 9

WIN 2000
Delphi
BeitragVerfasst: So 04.12.05 21:08 
wir haben noch nicht mit bool werten gearbeitet...o_O" und vor allem...was ist eine check box? also, was sollte ich denn hinschreiben? o.o"

edit: hm?

Untergewicht, Uebergewicht, Idealgewicht : String; ist hier doch..? oder was meinst du? o.O es soll ja als dieser text ausgegeben werden..insofern sehe ich kein problem?
starsurfer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 334

Win 95, Win 98, Win XP, Win Vista, Linux
D5 Enterprise ,D2005, D6 Personal, Visual C++ Express 2005, C++ Builder 6 E, Dev-C++
BeitragVerfasst: So 04.12.05 21:12 
ja, die variablen sind da, in denen steht aba noch nix drinne

das musst du noch machen:
ausblenden Delphi-Quelltext
1:
2:
3:
idealgewicht:='top';
untergewicht:='zu niedrig';
übergewicht:='fett';

_________________
GEIZ IST GEIL! - Ihr Sozialamt
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: So 04.12.05 21:14 
Oder gleich so:
ausblenden Delphi-Quelltext
1:
Edit1.Text := 'Idealgewicht';					

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
Akamaru Threadstarter
Hält's aus hier
Beiträge: 9

WIN 2000
Delphi
BeitragVerfasst: So 04.12.05 21:15 
da bin ich jetzt mal anz ehrlich total verwirrt o_O" also die variablen sind da...und sie brauchen noch werte...aber wo muss ich selbige denn hinschreiben?

EdAusgabe.Text := Uebergewicht <--hier irgendwo..? oô`

edit: achso, verstehe ^^

edit2: also, jetzt funktioniert es, fehlten nur diese anführungsstriche...danke^^

nur das mit der checkbox habe ich noch nicht verstanden o_O"
Amateur
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 777

(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
BeitragVerfasst: So 04.12.05 21:20 
nimm lieber boolean anstatt bool. der grund fällt mir grad net ein aber es ist auf jedenfall besser...
ansonsten guck dir mal besser das hier an. denn dir fehlen sehr viele grundlagen:
Crashkurs Delphi
und
Delphi Source
und
Delphi Basics für diverse Befehle

_________________
"Kein dummes Gerede. Kein Rumrätseln. Denkt an nichts anderes mehr, nur noch an das, was vor euch liegt. Das ist die wahre Herausforderung. Ihr müßt euch vor euch selbst schützen, Leute." (Rennes in "Cube")
Beiträge: >700
Akamaru Threadstarter
Hält's aus hier
Beiträge: 9

WIN 2000
Delphi
BeitragVerfasst: So 04.12.05 21:22 
dankeschön^^

aber: die grundlagen fehlen mir, weil ich erst seit ein paar wochen info habe, kein wunder also XD"
Amateur
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 777

(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
BeitragVerfasst: So 04.12.05 21:29 
deswegen ist besonders der erste link sehr gut für dich.
ansonsten ne checkbox gibt einfach nur nen boolean zurück. vom aussehen ist es einfach son weisses kästchen entweder leer oder mit nem x drin. kennste 100%ig. ist das x drin gibt checkbox1.checked nen true zurück ansonsten false.
für deine auswahl vom geschlecht ist allerdings nen radiobutton besser. das sind die runden kreisdinger wo nur in einem nen kreis drin ist im anderen nicht. gibts alles bei den kompos von delphi. normale windows sachen die man überall findet.
es sei denn du willst bei deiner berechnung auch zwitter und so mit einschliessen. denn sonst kann man ja nur männlich oder weiblich sein. dazu zu benutzen wäre auch noch die groupbox auf der du die beiden radiobuttons dann plazierst. macht das ganze noch besser und ist glaub ich für die zuordnung wichtig zwischen welchen radiobuttons man nur einen auswählen kann...

_________________
"Kein dummes Gerede. Kein Rumrätseln. Denkt an nichts anderes mehr, nur noch an das, was vor euch liegt. Das ist die wahre Herausforderung. Ihr müßt euch vor euch selbst schützen, Leute." (Rennes in "Cube")
Beiträge: >700
Akamaru Threadstarter
Hält's aus hier
Beiträge: 9

WIN 2000
Delphi
BeitragVerfasst: So 04.12.05 21:34 
achso...ich verstehe...das probier ich mal. selbigen code aufbau werd ich schon zusammenkriegen...ist natürlich sehr praktisch, damit man nichts falsches eingeben kann...hmm...da schau ich mal!

danke^^
Akamaru Threadstarter
Hält's aus hier
Beiträge: 9

WIN 2000
Delphi
BeitragVerfasst: So 04.12.05 21:59 
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:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    EdGroesse: TEdit;
    EdGewicht: TEdit;
    EdAusgabe: TEdit;
    Button1: TButton;
    RadioGroup1: TRadioGroup;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    Label1: TLabel;
    Label2: TLabel;
    BtAbbruch: TButton;
    Label3: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure BtAbbruchClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  Groesse, Gewicht, Idealgewicht2 : Real;
  Maennlich, Weiblich : Boolean;
  Untergewicht, Uebergewicht, Idealgewicht : String;
begin
Groesse := StrtoFloat(EdGroesse.text) ;
Gewicht := StrtoFloat(EdGewicht.Text)  ;
  if Maennlich then
      begin
      Idealgewicht2 := (Groesse-100)/ 100 * 95;
      if  Gewicht < Idealgewicht2 / 100 * 98 then
          EdAusgabe.Text := 'dürr'
      else if Gewicht > Idealgewicht2 / 100 * 102 then
              EdAusgabe.Text := 'zu fett'
           else  EdAusgabe.Text := 'super'
      end;
  if Weiblich then
      begin
      Idealgewicht2 := (Gewicht - 100) / 100 * 90;
      if  Gewicht < Idealgewicht2 / 100 * 98 then
           EdAusgabe.Text := 'dürr'
      else if Gewicht > Idealgewicht2 / 100 * 102 then
               EdAusgabe.Text := 'zu fett'
           else  EdAusgabe.Text := 'super'

      end
end;

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

end.


jetzt mit radio button...hat gleich funktioniert. super^^

problem gelöst ^^
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: So 04.12.05 22:27 
Das kann so nicht funktionieren, weil du nirgends auf die Checkboxen eingehst.

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
Akamaru Threadstarter
Hält's aus hier
Beiträge: 9

WIN 2000
Delphi
BeitragVerfasst: So 04.12.05 22:32 
das habe ich auch gerade bemerkt -.-" nur zeigte er keinen fehler an...ich arbeite dran.^^"
Amateur
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 777

(Win98, WinMe) WinXP Prof
D3 Prof, D6 Pers, D2k5 Pers., Turbo C++ Explorer
BeitragVerfasst: So 04.12.05 22:51 
die radiobuttons haben auch eine eigenschaft die true oder false zurückgeben. ich weiss nicht obs checked ist oder was anderes... sollte aber net schwer rauszufinden sein wenn an im code in dem drop down menü guckt. dann musst du nur einmal mit ner if then else abfrage prüfen ob mann true gesetzt ist. diesen wert gibst du der variable männlich. weiblich kannste dir schenken denn wenn es not männlich ist ist es automatisch weiblich. dazu braucht man keine neue variable. außerdem gibt es für sowas ja auch else.
also anstatt mit der männlich weiblich variable rumzumachen mach doch einfach:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
if mannradio.checked then  //wenns checked ist keine ahnung
 begin 
 // der mann code
 end else
 begin
 //der frau code
 end;

_________________
"Kein dummes Gerede. Kein Rumrätseln. Denkt an nichts anderes mehr, nur noch an das, was vor euch liegt. Das ist die wahre Herausforderung. Ihr müßt euch vor euch selbst schützen, Leute." (Rennes in "Cube")
Beiträge: >700
Akamaru Threadstarter
Hält's aus hier
Beiträge: 9

WIN 2000
Delphi
BeitragVerfasst: So 04.12.05 23:16 
hab jetzt mal in nem andern bereich des forums gesucht, da hab ich hilfe gefunden...nur zeigt er jetzt wieder nichts an...

weird...
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:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    EdGroesse: TEdit;
    EdGewicht: TEdit;
    EdAusgabe: TEdit;
    Button1: TButton;
    RadioGroup1: TRadioGroup;
    Maennlich: TRadioButton;
    Weiblich: TRadioButton;
    Label1: TLabel;
    Label2: TLabel;
    BtAbbruch: TButton;
    Label3: TLabel;
    EdIdealgewicht: TEdit;
    Label4: TLabel;
    Label5: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure BtAbbruchClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  Groesse, Gewicht, Idealgewicht2 : Real;

begin
Groesse := StrtoFloat(EdGroesse.text) ;
Gewicht := StrtoFloat(EdGewicht.Text) ;
  if  radiogroup1.itemindex = 1 = true then
      begin
      Idealgewicht2 := (Groesse-100)/ 100 * 95;
      if  Gewicht < Idealgewicht2 / 100 * 98 then
          EdAusgabe.Text := 'Untergewicht'
      else if Gewicht > Idealgewicht2 / 100 * 102 then
              EdAusgabe.Text := 'Uebergewicht'
           else  EdAusgabe.Text := 'Idealgewicht';
      EdIdealgewicht.Text := FloattoStr(Idealgewicht2);
      end;
  if radiogroup1.itemindex = 2 = true then
      begin
      Idealgewicht2 := (Gewicht - 100) / 100 * 90;
      if  Gewicht < Idealgewicht2 / 100 * 98 then
           EdAusgabe.Text := 'Untergewicht'
      else if Gewicht > Idealgewicht2 / 100 * 102 then
               EdAusgabe.Text := 'Uebergewicht'
           else  EdAusgabe.Text := 'Idealgewicht';
      EdIdealgewicht.Text := FloattoStr(Idealgewicht2);

      end;
end;

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

end.
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: So 04.12.05 23:48 
Ich schätze mal Du hast Radiobuttons in die Radiogroup eingesetzt die Du aber nicht ansprichst.
Gib mal unter Strings in der Radiogroup Maennlich und Weiblich ein und dann kannst Du
Maennlich mit ItemIndex 0 und Weiblich mit 1 ansprechen.
Bsp.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if  Radiogroup1.itemindex = 0  then
  Caption:='Maennlich';
end;


oder Du musst die Radiobuttons direkt ansprechen dann sieht das so aus.
Bsp.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if  RB_Maennlich.Checked = true  then
  Caption:='Maennlich';
end;
Akamaru Threadstarter
Hält's aus hier
Beiträge: 9

WIN 2000
Delphi
BeitragVerfasst: Di 06.12.05 17:18 
habe ich jetzt getan und das funktionierend programm in info fertig gestellt. sieht so aus:

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:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    EdGroesse: TEdit;
    EdGewicht: TEdit;
    EdAusgabe: TEdit;
    Button1: TButton;
    RadioGroup1: TRadioGroup;
    Maennlich: TRadioButton;
    Weiblich: TRadioButton;
    Label1: TLabel;
    Label2: TLabel;
    BtAbbruch: TButton;
    Label3: TLabel;
    EdIdealgewicht: TEdit;
    Label4: TLabel;
    Label5: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure BtAbbruchClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  Groesse, Gewicht, Idealgewicht2 : Real;

begin
Groesse := StrtoFloat(EdGroesse.text) ;
Gewicht := StrtoFloat(EdGewicht.Text) ;
  if  Maennlich.checked = true then
      begin
      Idealgewicht2 := (Groesse-100)/ 100 * 95;
      if  Gewicht < Idealgewicht2 / 100 * 98 then
          EdAusgabe.Text := 'Untergewicht'
      else if Gewicht > Idealgewicht2 / 100 * 102 then
              EdAusgabe.Text := 'Uebergewicht'
           else  EdAusgabe.Text := 'Idealgewicht';
      EdIdealgewicht.Text := FloattoStr(Idealgewicht2)
      end
  else
      begin
      Idealgewicht2 := (Groesse - 100) / 100 * 90;
      if  Gewicht < Idealgewicht2 / 100 * 98 then
           EdAusgabe.Text := 'Untergewicht'
      else if Gewicht > Idealgewicht2 / 100 * 102 then
               EdAusgabe.Text := 'Uebergewicht'
           else  EdAusgabe.Text := 'Idealgewicht';
      EdIdealgewicht.Text := FloattoStr(Idealgewicht2);

      end;
end;

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

end.


jetzt soll ich mal versuchen noch ausnahmen einzubauen...da hab ich im unterricht mit exeptions rumprobiert, es aber noch nicht wirklich hingekriegt.

mir würde es auch reichen es mit einem if zu machen also if Groesse < 100 then
dann müsste ich halt ne message zeigen lassen...wie man das macht habe ich NOCH keine ahnung...lass es mir mal morgen erklären, da hab ich wieder info...