Autor Beitrag
schoeni11
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Sa 05.01.13 00:35 
Ich muss für die Schule ein Delphi Programm schreiben, mit dem man Brüche addieren/subtrahieren kann...
Ich habe aber leider über haupt keine Idee wie ich das Realisiern kann. Division und Multiplikation habe
ich bereits programmiert. Die jeweiligen Operationen sollen über jeweils einen Speziellen Button dafür gelöst werden.

Jetzt meine Frage: Kann mir jemand bitte einen Ansatz geben?

Mit freundlichem Dank schon mal vorraus: Schöni
Einloggen, um Attachments anzusehen!
Mathematiker
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1448

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Sa 05.01.13 00:55 
Hallo und :welcome:
user profile iconschoeni11 hat folgendes geschrieben Zum zitierten Posting springen:
Division und Multiplikation habe ich bereits programmiert.

Schön wäre es, wenn Du den Quelltext für die Division und Multplikation und Deinen ersten Versuch für die Addition hier zeigen würdest. Dann könnte man Dir besser helfen.

Allgemein gilt aber Folgendes.
Sind Deine beiden Brüche zaehler1/nenner1 und zaehler2/nenner2, dann musst Du für die Addition streng genommen den Hauptnenner = kgV der beiden Nenner bilden. Das geht am einfachsten mit nenner1*nenner2/ggT(nenner1,nenner2) usw.

Eine einfache Lösung wäre aber auch den ersten Bruch mit dem nenner2 zu erweitern und den 2. mit nenner1, d.h. für die Summe (Differenz analog) wird
ausblenden Delphi-Quelltext
1:
2:
zaehler := zaehler1*nenner2 + zaehler2*nenner1;
nenner := nenner1*nenner2;

Der Nachteil ist, dass die Werte sehr groß werden können. Wahrscheinlich wirst Du am Ende auch noch Kürzen müssen. Dazu brauchst Du erneut den ggT. Diesen größten gemeinsamen Teiler von zaehler und nenner kannst Du effektiv mit dem Euklidischen Algorithmus (googeln oder in EE suchen) bestimmen.

Du kannst auch einmal unter www.entwickler-ecke....ht=br%FCche+addieren nachsehen. Die Unit rechnet mit Brüchen. Ich vermute aber, dass dies vielleicht für Dich noch etwas zu kompliziert ist.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
schoeni11 Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Sa 05.01.13 14:39 
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:
unit bruch1;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    edit_nen1: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    edit_zae2: TEdit;
    edit_nen2: TEdit;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    but_add: TButton;
    but_mul: TButton;
    but_sub: TButton;
    but_div: TButton;
    Label8: TLabel;
    Label9: TLabel;
    edit_zae1: TEdit;
    edit_zae3: TEdit;
    edit_nen3: TEdit;
    Label10: TLabel;
    Label11: TLabel;
    procedure but_mulClick(Sender: TObject);
    procedure but_divClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;v_nen1,v_nen2,v_nen3,v_zae1,v_zae2,v_zae3 : real ;         //deklaration der variablen

implementation

{$R *.dfm}

procedure TForm1.but_divClick(Sender: TObject);
begin
v_nen1 := strtofloat (edit_nen1.Text);            //konvertierung der Variablen
  v_nen2 := strtofloat (edit_nen2.text);
  v_zae1 := strtofloat (edit_zae1.text);
  v_zae2 := strtofloat (edit_zae2.text);

v_nen3:= v_nen1*v_zae2;
v_zae3:= v_zae1*v_nen2;

  Edit_nen3.text := floattostr (v_nen3) ;
  Edit_zae3.Text := floattostr (v_zae3)

end;

procedure TForm1.but_mulClick(Sender: TObject);
begin
  v_nen1 := strtofloat (edit_nen1.Text);            //konvertierung der Variablen
  v_nen2 := strtofloat (edit_nen2.text);
  v_zae1 := strtofloat (edit_zae1.text);
  v_zae2 := strtofloat (edit_zae2.text);

v_nen3:= v_nen1*v_nen2;
v_zae3:= v_zae1*v_zae2;

  Edit_nen3.text := floattostr (v_nen3) ;
  Edit_zae3.Text := floattostr (v_zae3)


end;

end.

Das hab ich soweit zur Division/Multiplikation geschrieben.
Ich hoffe das Hilft erstmal.
-Deine Idee hat mir auf jeden Fall geholfen!

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Mathematiker
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1448

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Sa 05.01.13 18:35 
Hallo,
und damit hast Du doch schon fast alles, was Du brauchst.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
var
  Form1: TForm1;v_nen1,v_nen2,v_nen3,v_zae1,v_zae2,v_zae3 : integer ;         //deklaration der variablen
...
procedure TForm1.but_addClick(Sender: TObject);
begin
  v_nen1 := strtoint (edit_nen1.Text);            //konvertierung der Variablen
  v_nen2 := strtoint (edit_nen2.text);
  v_zae1 := strtoint (edit_zae1.text);
  v_zae2 := strtoint (edit_zae2.text);

  v_nen3:= v_nen1*v_nen2;
  v_zae3:= v_nen1*n_zae2+v_nen2*v_zae1;

  Edit_nen3.text := inttostr (v_nen3) ;
  Edit_zae3.Text := inttostr (v_zae3)
end;

wäre eine mögliche Methode für die Addition.
Da für gemeine Brüche im Allgemeinen nur ganze Zahlen im Zähler und Nenner verwendet werden, würde ich von real auf integer umstellen.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein