unit Euklid2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Label3: TLabel;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Label4: TLabel;
Panel1: TPanel;
Label5: TLabel;
Label6: TLabel;
Panel2: TPanel;
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
var a, b, r, q, x, x0, x1, y, y0, y1, ggT, i, sign: Integer;
Za, Zb, Antwort: String;
{$R *.DFM}
procedure TForm1.Button3Click(Sender: TObject);
begin
close;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
(* alle Werte zurücksetzen *)
a := 1;
Za := '1';
b := 1;
Zb := '1';
r := 0;
q := 1;
x := 1;
y := 0;
i := 0;
ggT := 1;
Antwort := IntToStr(x)+' * '+Za+' + '+IntToStr(y)+' * '+Zb+' = '+IntToStr(ggT);
Panel1.Caption := '1';
Panel2.Caption := Antwort;
Edit1.Text := '1';
Edit2.Text := '1';
Label6.Caption := '0';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
(* Zahlen einlesen *)
Za := Edit1.Text;
a := StrToInt(Za);
Zb := Edit2.Text;
b := StrToInt(Zb);
i := 0;
r := b;
q := 1;
x0 := 1;
y0 := 0;
x1 := 0;
y1 := 1;
sign := 1;
(* erweiterter Eukidischer Algorithmus *)
while r <> 0 do
begin
i := i + 1;
q := a div b;
r := a mod b;
a := b;
b := r;
x := x1;
y := y1;
x1 := q * x1 + x0;
y1 := q * y1 + y0;
x0 := x;
y0 := y;
sign := -sign;
end;
ggT := a;
x := sign * x0;
y := -sign * y0;
(*Ausgaben *)
Panel1.Caption := IntToStr(a);
Label6.Caption := IntToStr(i);
Antwort := '('+IntToStr(x)+') * '+Za+' + ('+IntToStr(y)+') * '+Zb+' = '+IntToStr(ggT);
Panel2.Caption := Antwort;
end;
end.