Autor Beitrag
Pansen!
Hält's aus hier
Beiträge: 5

Windows XP
Delphi 7
BeitragVerfasst: Mi 07.12.05 19:36 
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!

:

ausblenden 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 user profile iconraziel: Delphi-Tags hinzugefügt.
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: 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:

www.delphi-library.d...b269299388514#316758

und verwende bitte die delphi tags, dann wird der code gehighlightet !

ausblenden 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 <> 0do
  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! Threadstarter
Hält's aus hier
Beiträge: 5

Windows XP
Delphi 7
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17

WIN XP

BeitragVerfasst: Do 08.12.05 20:02 
Hallo, die bereits bekannte Funktionen p_ggt fügst du in deine Unit ein und dann

ausblenden 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 user profile iconraziel: Delphi-Tags hinzugefügt.