Autor |
Beitrag |
Darth Sitthiander
      
Beiträge: 95
|
Verfasst: Di 07.03.06 22:32
Hallo ich bins wieder.
Ich habe mal wieder eine Frage, und zwar. Ich habe mal kurz ein Programm geschrieben, nit welchem man textaufgaben lösen sollte. Auf jeden Fall manche. Also es gint einen X-Namen z. B. 7 (Kühe), dann einen X-Wert z. B. 50(Also 50 Lier Milch pro Tag). Dann noch Einen Y-Namen z. B. 8 (Kühe) und einen Y-Wert = ?. Daraus folgt. 7 Kühe liefern 50 Liter Milch.(pro Tag) und 8 Kühe liefern ? Liter Milch pro Tag. Jetzt möchte man das ? herausfinden. Also rechnet man 50 : 7 x 8 =57.14... Liter Milch pro Tag.
Das hab ich programmiert. Aber da gibt es noch einige Probleme. Wär nett, wenn sich einer das Programm mal ansehen würde. Danke im Vorraus.
Einloggen, um Attachments anzusehen!
|
|
Tino
      

Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: Di 07.03.06 22:38
Und welche Probleme gibt es? 
|
|
Darth Sitthiander 
      
Beiträge: 95
|
Verfasst: Di 07.03.06 22:40
Ja manchmal kommt bei einem Wert einfach eine Null oder ein Falsches ergebnis.
|
|
Marc.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: Di 07.03.06 22:45
zeig doch mal ein wenig mehr sourcecode
außerdem frage ich mich warum du kein fließkommawerte verwendest, dann kämen vermutlich auch anstelle von 56litern, deine 57,14 raus 
|
|
Darth Sitthiander 
      
Beiträge: 95
|
Verfasst: Di 07.03.06 22:48
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:
| unit ha;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Edit2: TEdit; Label2: TLabel; Label3: TLabel; Edit3: TEdit; Edit4: TEdit; Label1: TLabel; Label4: TLabel; ComboBox1: TComboBox; procedure Button1Click(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); var Zahl1, Zahl2, Zahl3, ergebnis: integer; begin if Combobox1.text = 'X-Name' then begin edit1.text := ''; Zahl1 := strtoint(Edit3.text); Zahl2 := strtoint(Edit2.text); Zahl3 := strtoint(Edit4.text); ergebnis:= (Zahl1 * zahl2); Zahl1 := (ergebnis div Zahl3); edit1.text := (IntToStr(Zahl1)); end; if Combobox1.text = 'X-Wert' then begin edit2.text := ''; Zahl1 := strtoint(Edit4.text); Zahl2 := strtoint(Edit1.text); Zahl3 := strtoint(Edit3.text); ergebnis:= (Zahl1 * zahl2); Zahl1 := (ergebnis div Zahl3); edit2.text := (IntToStr(Zahl1)); end; if Combobox1.text = 'Y-Name' then begin edit3.text := ''; Zahl1 := strtoint(Edit1.text); Zahl2 := strtoint(Edit4.text); Zahl3 := strtoint(Edit2.text); ergebnis:= (Zahl1 * zahl2); Zahl1 := (ergebnis div Zahl3); edit3.text := (IntToStr(Zahl1)); end; if Combobox1.text = 'Y-Wert' then begin edit4.text := ''; Zahl1 := strtoint(Edit2.text); Zahl2 := strtoint(Edit1.text); Zahl3 := strtoint(Edit3.text); ergebnis:= (Zahl1 div zahl2); Zahl1 := (ergebnis * Zahl3); edit4.text := (IntToStr(Zahl1)); end; end;
end. |
Und die fließkommawerte hab ich nicht benutzt weil ich ein neewbie bin.
Moderiert von Christian S.: Code- durch Delphi-Tags ersetzt
|
|
juKx
      
Beiträge: 45
WinXp Pro Sp2
Delphi 7 Enterprise Edition
|
Verfasst: Di 07.03.06 23:19
hi,
ich wollte dir nochmal einen Tipp geben...gib deinen Edit-Felder mal aaussagekräftige Namen, dann lässt sich dein Programm besser verstehen  ...aber ich habs auch so kapiert. ES hilft dir später auch bei großeren Projekte...
mfg juKx
|
|
Marc.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: Di 07.03.06 23:20
ich habe deinen code mal ein wenig gekürtzt, hoffe er stimmt noch so
als kleiner verbesserungstipp: wähle sinnvolle namen für deine kompnenten, zb y_name_edit damit du später noch weißt, was du eigentlich gerechnet hast
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:
| procedure TForm1.ButtonClick(Sender: TObject); var c: byte; Zahl1, Zahl2, Zahl3, Zahl4, ergebnis: real; begin c := combobox.ItemIndex;
Zahl1 := StrToFloat(edit1.Text); Zahl2 := StrToFloat(edit2.Text); Zahl3 := StrToFloat(edit3.Text); Zahl4 := StrToFloat(edit4.Text);
case c of 0: begin edit1.text := ''; ergebnis:= (zahl3 * zahl2) / Zahl4; edit1.text := (FloatToStr(ergebnis)); end;
1: begin edit2.text := ''; ergebnis:= (Zahl4 * zahl1) / zahl3; edit2.text := (FloatToStr(ergebnis)); end;
2: begin edit3.text := ''; ergebnis:= (Zahl1 * zahl4) / zahl2; edit3.text := (FloatToStr(ergebnis)); end;
3: begin edit4.text := ''; ergebnis:= (Zahl2 / zahl1) * zahl3; edit4.text := (FloatToStr(ergebnis)); end; end; end;
end. |
mfg
Zuletzt bearbeitet von Marc. am Di 07.03.06 23:31, insgesamt 1-mal bearbeitet
|
|
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 07.03.06 23:27
geht ja auch noch ein bischen kürzer. hoff ich hab jetzt nicht gegen das copyright verstossen.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| procedure TForm1.ButtonClick(Sender: TObject); var Zahl1, Zahl2, Zahl3, Zahl4: real; begin Zahl1 := StrToFloat(edit1.Text); Zahl2 := StrToFloat(edit2.Text); Zahl3 := StrToFloat(edit3.Text); Zahl4 := StrToFloat(edit4.Text);
case combobox.ItemIndex of 0: edit1.text := FloatToStr((zahl3 * zahl2) / Zahl4); 1: edit2.text := FloatToStr((Zahl4 * zahl1) / zahl3); 2: edit3.text := FloatToStr((Zahl1 * zahl4) / zahl2); 3: edit4.text := FloatToStr((Zahl2 / zahl1) * zahl3); end; end; |
|
|
juKx
      
Beiträge: 45
WinXp Pro Sp2
Delphi 7 Enterprise Edition
|
Verfasst: Di 07.03.06 23:28
hi,
hättest du doch gleich mal in deiner Verbesserung machen können ^^.
|
|
Darth Sitthiander 
      
Beiträge: 95
|
Verfasst: Mi 08.03.06 13:43
Danke für die Informationen. Allerdings funktionieren die Quelltexte nicht. Da komm eine Fehler meldeng:
Klasse EconvertError, '' ist kein gültiger Gleitkommawert.
Wie kann ich machen das man es rechnen kann, obwohlk da nix drin steht?
|
|
Hux
      
Beiträge: 171
|
Verfasst: Mi 08.03.06 14:14
Die Box muss automatisch eine Zahl die > íst als 0, nur dann kanst du es berechnen, denn du weißt ja, dass x/0 = Error is...,
du kannst ja bei dem Buttonevent davor ein Check machen, ob in den Feldern eine Zahl die > ist als 0 ist, wenn nicht fügst du einen wert ein oder du warnst den User...
Hoffe hab dein Prob verstanden...
|
|
Darth Sitthiander 
      
Beiträge: 95
|
Verfasst: Mi 08.03.06 14:20
Aber geht das etwa nicht anders?
|
|
Marc.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: Mi 08.03.06 14:34
du könntest eine exception auslösen
zb.:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| try a := b / 0; except on EZeroDivide do begin ShowMessage('Achtung, Division durch Null!'); end; |
es ist aber besser wenn du den fehler abfängst ehe er auftritt
zb mit einer if abfrage. ggfalls forderst du den user mithilfe einer message (showmessage) auf, eine gültigen wert in das jeweilige edit feld einzugeben 
|
|
Coreyl
      
Beiträge: 26
XPP
VS 05, TextEditor
|
Verfasst: Mi 08.03.06 16:05
_________________ Von allen Dingen die mir Verloren gegangen, bin ich am meisten an meinem Verstand gehangen
|
|
Darth Sitthiander 
      
Beiträge: 95
|
Verfasst: Do 09.03.06 13:24
|
|