Autor Beitrag
Darth Sitthiander
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 95



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Di 07.03.06 22:38 
user profile iconDarth Sitthiander hat folgendes geschrieben:
Aber da gibt es noch einige Probleme.

Und welche Probleme gibt es? :gruebel:
Darth Sitthiander Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 95



BeitragVerfasst: Di 07.03.06 22:40 
Ja manchmal kommt bei einem Wert einfach eine Null oder ein Falsches ergebnis.
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: 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 :roll:
Darth Sitthiander Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 95



BeitragVerfasst: Di 07.03.06 22:48 
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:
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
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  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 user profile iconChristian S.: Code- durch Delphi-Tags ersetzt
juKx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 45

WinXp Pro Sp2
Delphi 7 Enterprise Edition
BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: 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 :P

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:
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
0begin
    edit1.text := '';
      ergebnis:= (zahl3 * zahl2) / Zahl4;
      edit1.text := (FloatToStr(ergebnis));
  end;

1begin
    edit2.text := '';
     ergebnis:= (Zahl4 * zahl1) / zahl3;
      edit2.text := (FloatToStr(ergebnis));
  end;

2begin
    edit3.text := '';
     ergebnis:= (Zahl1 * zahl4) / zahl2;
     edit3.text := (FloatToStr(ergebnis));
   end;

3begin
    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



BeitragVerfasst: Di 07.03.06 23:27 
geht ja auch noch ein bischen kürzer. hoff ich hab jetzt nicht gegen das copyright verstossen.

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 45

WinXp Pro Sp2
Delphi 7 Enterprise Edition
BeitragVerfasst: Di 07.03.06 23:28 
hi,

hättest du doch gleich mal in deiner Verbesserung machen können ^^.
Darth Sitthiander Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 95



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 171



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 95



BeitragVerfasst: Mi 08.03.06 14:20 
Aber geht das etwa nicht anders?
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Mi 08.03.06 14:34 
du könntest eine exception auslösen
zb.:
ausblenden 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
ontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 26

XPP
VS 05, TextEditor
BeitragVerfasst: Mi 08.03.06 16:05 

_________________
Von allen Dingen die mir Verloren gegangen, bin ich am meisten an meinem Verstand gehangen
Darth Sitthiander Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 95



BeitragVerfasst: Do 09.03.06 13:24 
Könnte es so stimmen?

ausblenden 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:
procedure TForm1.Button1Click(Sender: TObject);
var
 Zahl1, Zahl2, Zahl3, Zahl4: real;
begin
try
 Zahl1 := StrToFloat(edit1.Text);
 Zahl2 := StrToFloat(edit2.Text);
 Zahl3 := StrToFloat(edit3.Text);
 Zahl4 := StrToFloat(edit4.Text);

 case combobox1.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;
except
 on EZeroDivide do
 begin
  ShowMessage('Achtung, Division durch Null!');
 end
 else
 Showmessage('Alle Felder müssen ausgefüllt sein!');
end;
end;


Moderiert von user profile iconChristian S.: Code- durch Delphi-Tags ersetzt