Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Delphi Bruch Addition/Subtraktion
schoeni11 - Fr 04.01.13 23:35
Titel: Delphi Bruch Addition/Subtraktion
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
Mathematiker - Fr 04.01.13 23:55
Hallo und :welcome:
schoeni11 hat folgendes geschrieben : |
| 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
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
http://www.entwickler-ecke.de/viewtopic.php?t=52994&highlight=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
schoeni11 - Sa 05.01.13 13:39
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 public end;
var Form1: TForm1;v_nen1,v_nen2,v_nen3,v_zae1,v_zae2,v_zae3 : real ; implementation
{$R *.dfm}
procedure TForm1.but_divClick(Sender: TObject); begin v_nen1 := strtofloat (edit_nen1.Text); 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); 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
Narses: Delphi-Tags hinzugefügt
Mathematiker - Sa 05.01.13 17:35
Hallo,
und damit hast Du doch schon fast alles, was Du brauchst.
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 ; ... procedure TForm1.but_addClick(Sender: TObject); begin v_nen1 := strtoint (edit_nen1.Text); 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
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!