Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Aufgabe Gewichtscoach
volkerb. - Di 03.04.07 13:43
Titel: Aufgabe Gewichtscoach
Hallo!!!
Ich beschäftige mich seit einigen Tagen mit Delphi und habe jetzt mein erstes Problem wo ich nich weiterkomme.
Ich habe mir aus dem Internet eine Aufgabe heruasgesucht (Gewichtsrechner) und komme jetzt leider nicht weiter.
Es soll je nachdem ob man männlich oder weiblich ist ein bestimmtes idealgewicht ausgerechnet werden und danach soll verglichen werden ob man Idealgewicht hat oder nicht.
Hier ist der Quelltext den ich bis jetzt habe.
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:
| procedure TForm1.b_startClick(Sender: TObject); var groese, gewicht, mideal, wideal, x, y :real; begin
gewicht := strtofloat(e_gewicht.text); groese := strtofloat(e_groese.text); mideal := (groese -100) * 0.95; wideal := (groese - 100) * 0.90;
if r_sex.ItemIndex = 0 then begin x := (groese - 100) * 0.95; end
else begin y := (groese - 100) * 0.90; end
if (x = Mideal) or (y=wideal) then begin showmessage('sie haben..'); end else begin showmessage('sie haben kein...'); end |
Wenn ich das Programm starte, meine Größe und Gewicht eingeben und dann auf Start klicke, kommt eine Fehlermeldung.
Seht ihr vielleicht einen (von vielen) Fehlern ^^
Dankeschön jetzt schon einmal für die Hilfe!!!
ZeitGeist87 - Di 03.04.07 14:02
Hallo!
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| if y := ideal then begin showmessage ('sie haben...'); end else begin showmessage('sie haben kein...'); end |
Doppelpunkt entfernen, da es ein Vergleich und keine Zuweisung ist :)
LG
Stefan
volkerb. - Di 03.04.07 14:22
Da hat wohl jemand das gleiche Problem wie ich^^
also ich habe den Quellcode jetzt noch etwas umgeändert (erster Beitrag editiert) aber es kommt eine Fehlermeldung wenn ich das Programm starten will.
[Error] Unit1.pas(57): Missing operator or semicolon
Wo fehlt dort ein Semikolon??
ZeitGeist87 - Di 03.04.07 14:24
Nach jedem end, außer vor dem end beim else
Alles klar? ^^
LG
Stefan
volkerb. - Di 03.04.07 14:28
ah cool...jetzt muss ich es nur noch hinbekommen dass er untergewicht und übergewicht anzeigt und einen unterscheid von +-2% mit einrechnet xD....ich glaube ich werde hier noch ein paar mal posten ^^
volkerb. - Di 03.04.07 14:47
Ich habe mir jetzt noch mal Gedanken über den Quellcode gemacht und hab ihn noch etwas verändert.
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:
| procedure TForm1.b_startClick(Sender: TObject); var groese, gewicht, mideal, wideal, x, y :real; begin
gewicht := strtofloat(e_gewicht.text); groese := strtofloat(e_groese.text); mideal := (groese -100) * 0.95; wideal := (groese - 100) * 0.90;
if r_sex.ItemIndex = 0 then begin mideal := x; end
else begin wideal := y; end ;
if (x < gewicht) or (y < gewicht) then begin showmessage('sie haben untergewicht'); end ; if (x>gewicht) or (y>gewicht) then begin showmessage('sie haben übergewicht'); end ; if (x=gewicht) or (y=gewicht) then begin showmessage('sie haben idealgewicht'); end; |
ich bin mir aber nicht sicher ob er das idealgewicht so richtig ausrechnet^^
wenn ich es starte und gewicht und größe eingebe kommt jedenfalls nur "sie haben untergewicht".
habe ich mir hier jetzt völligen schwachsinn ausgedacht oder kann man das so schreiben?? xD
ZeitGeist87 - Di 03.04.07 14:49
wo belegst du denn x und y??? :shock:
noidic - Di 03.04.07 14:53
Hm, ich würd mal nen Grundlagenkurs/buch empfehlen. Die Zuweisungen sind falsch, die Vergleiche sowieso.
Einfach mal drüber nachdenken, was wohl passiert, wenn ich a den Wert von b zuweise. Und die Bedeutung von < und > solltest du auch nochmal nachschlagen.
volkerb. - Di 03.04.07 14:58
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:
| procedure TForm1.b_startClick(Sender: TObject); var groese, gewicht, mideal, wideal, x, y :real; begin
gewicht := strtofloat(e_gewicht.text); groese := strtofloat(e_groese.text); mideal := (groese -100) * 0.95; wideal := (groese - 100) * 0.90;
if r_sex.ItemIndex = 0 then begin mideal := (groese - 100) * 0.95; x := mideal; end
else begin wideal := (groese - 100) * 0.90; y := wideal; end ;
if (x = gewicht) or (y = gewicht) then begin showmessage('Sie haben Idealgewicht'); end ; [b]if (x > gewicht) or (y > gewicht) then begin showmessage('Sie haben Übergewicht') end; if ( x < gewicht) or (y < gewicht) then begin showmessage('Sie haben Untergewicht') end;[/b] |
so Quelltext noch mal umgeändert^^
bis auf den fett markierten bereich funktioniert alles...wenn ich den weglasse, dann zeigt er mit nur eine message wenn man genau idealgewicht hat. wenn ich den fetten teil jedoch dazu füge zeit er IMMER an die haben untergewicht UND sie haben übergewicht.
kann mir da einer helfen??
PS: ein buch habe ihc mir schon bestellt ist aber noch nicht da und deswegen fange ich jetzt so schon einmal an ^^
noidic - Di 03.04.07 15:03
zum einen wäre es wohl sinnvoll, unten auch mit else zu arbeiten. Zum anderen ist immer nur entweder x oder y befüllt, es wird aber immer beides verglichen. Solltest dich mal fragen, wozu du da zwei Variablen benutzt, eigentlich kannst du auf beide verzichten ( richtige nerds, denen Tippen zuviel arbeit ist, verzichten ganz auf die Variablen :)
volkerb. - Di 03.04.07 15:14
ich find mit den variablen übersichtlicher ^^...und da ich ein noob und kein nerd bin darf ich das auch xD
wie kann ich das da unten denn mit if und else machen??
noidic - Di 03.04.07 15:26
na genau wie paar Zeilen drüber auch.
volkerb. - Di 03.04.07 15:33
ja aber unten gibt es ja 3 möglichkeiten
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| if (x = gewicht) or (y = gewicht) then begin showmessage('Sie haben Idealgewicht'); end ; if (x > gewicht) or (y > gewicht) then begin showmessage('Sie haben Übergewicht'); end else begin showmessage('Sie haben Untergewicht'); end; |
so??^^
noidic - Di 03.04.07 15:37
du kannst beliebig oft mit else verketten. Beispiel:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| if a < b then begin ... end else if b > a then begin ... end else if b + a > 0 then begin ... end
... |
volkerb. - Di 03.04.07 15:52
und das nächste probelm ^^ (ich glaub das dauert noch den ganzen tag )
delphi berechnet immer BEIDE gewicht, egal was ich oben in der radiogroup auswähle.
wie kann ich das verändern??
volkerb. - Mi 04.04.07 09:25
DANKESCHÖN an alle die so viel geduld hatten ^^
habs endlich hinbekommen....
...mein nächster post lässt aber nicht lange auf sich warten ;)
MfG Volker
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!