Entwickler-Ecke

Algorithmen, Optimierung und Assembler - Brüche in Delphi


jackie05 - So 16.10.05 03:39
Titel: Brüche in Delphi
hi, wisst ihr wie ich in mein Programm ein Bruch rechenart proggen kann.
also ich möchte z.B. das 21/7 : 49/7 in Delphi rechnen.

ich habe 4 labels benutzt, der eine, für die Zahl 21, die zweite für die Zahl 7, die dritte für die zahl 3, und die vierte für die Zahl4, hier mal ein bild, wie das bei mir aussieht:

http://www.1200kb.net/uploadimg/file790466005.bmp

ich möchte das aber so machen das man die brüche auch so weit wie es geht kürzen muss, nur weiss ich leider nicht wie das geht, könnt ihr mir vieleicht vorschläge geben, wie man das machen könnte, ich danke euch schonmal :)

Christian


Moderiert von user profile iconraziel: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mo 17.10.2005 um 11:01


Kroko - So 16.10.05 10:40


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:
procedure BruchRechnen (Za,Na,Zb,Nb: Integer; ROp: Char; var ZErg,NErg: Integer);
var
  Hn: Integer;
  A,B,R: Integer;
begin
  NErg := Na*Nb;
  case rOP of
    '+': ZErg := Za*Nb+Zb*Na;
    '-': ZErg := Za*Nb-Zb*Na;
    '*': ZErg := Za*Zb;
    ':',
    '/'begin
           ZErg := Za*Nb;
           NErg := Zb*Na;
         end;
  end;
  //Kürzen 
  if ZErg>NErg then
    begin
      A := ZErg;
      B := NErg;
    end
  else
    begin
      A := NErg;
      B := ZErg;
    end;
  if (B<=0OR (A<0then B := 0
  else
    begin
      R := A MOD B;
      while R>0 do
      begin
        A := B;
        B := R;
        R := A MOD B;
      end;
    end;
  if B<>0 then
    begin
      NErg := NErg div B;
      ZErg := ZErg div B;
    end;
end;


jasocul - So 16.10.05 12:45
Titel: Re: Brüche in Delphi
user profile iconjackie05 hat folgendes geschrieben:
ich möchte das aber so machen das man die brüche auch so weit wie es geht kürzen muss, nur weiss ich leider nicht wie das geht

Dafür musst du den ggT berechnen. Guckst du hier [http://www.delphi-forum.de/viewtopic.php?t=30300]