Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Schleife fürs Brüche kürzen
Pansen! - Mi 07.12.05 19:36
Titel: Schleife fürs Brüche kürzen
was stimmt an meiner Schleife nicht?
ich bekomme manchmal richtige Werte heraus und manchmal nicht beim kürzen?
finde den Fehler aber nich,vielleicht hat hier wer ein besseres Auge!
:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm1.Button1Click(Sender: TObject); begin v_z3:= strtoint (Edit_z3.Text); v_n3:= strtoint (Edit_n3.Text); v_a:= v_z3; v_b:= v_n3; v_rest:= 0; if v_b <> 0 then repeat v_rest:= v_a mod v_b; v_a:=v_b; v_b:=v_rest; until v_rest = 0; v_a:= abs(v_a); v_z3:= v_z3 div v_a; v_n3:= v_n3 div v_a; Edit_n3.Text := inttostr (v_n3); Edit_z3.Text:= inttostr (v_z3);
end; |
Moderiert von
raziel: Delphi-Tags hinzugefügt.
F34r0fTh3D4rk - Mi 07.12.05 19:42
brüche brauchst du nicht so kompliziert zu kürzen, bestimme den ggT und teile Zähler und Nenner durch diesen, hier n kleine Hilfe:
http://www.delphi-library.de/viewtopic.php?p=316758&sid=d3269d5ea8900e168dfb269299388514#316758
und verwende bitte die delphi tags, dann wird der code gehighlightet !
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| function p_ggT(a, b: integer): integer; var x, y, r: Integer; begin x := a; y := b; r := x mod y; while (r <> 0) do begin x := y; y := r; r := x mod y; end; result := y; end; |
siehst du, viel schöner ;)
das ist der alogrithmus nach euklid, sicherlich der eleganteste weg ;)
Pansen! - Mi 07.12.05 20:09
Wie baue ich functions ein? Ich möchte nämlich gerne,dass per Button gekürzt wird!
komme mit der function nich so klar,weiß nich wie ich sie einbauen soll!
senidex - Do 08.12.05 20:02
Titel: Re: Schleife fürs Brüche kürzen
Hallo, die bereits bekannte Funktionen p_ggt fügst du in deine Unit ein und dann
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.SpeedButton1Click(Sender: TObject); var a,b,ggT: integer; begin a:=StrToInt(Edit_Nenner_ungekuerzt.Text); b:=StrToInt(Edit_Zaehler_ungekürzt.Text); ggT:=p_ggT(a,b); Edit_Zaehler_gekuerzt.Text:=IntToStr(trunc(a/ggT)); Edit_Nenner_gekuerzt.Text:=IntToStr(Trunc(b/ggT)); end; |
Exceptions musst du selbst abfangen, wenn in den Textfelder keine Integer-Werte stehen.
Moderiert von
raziel: Delphi-Tags hinzugefügt.
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!