NWW i NWD dla wszystkich liczb

0

Mam zrobione funcje dla obliczania NWW i NWD. Jest tylko mały problem, musi obliczać także liczby ujemne. Może mi ktoś pomóc?
Mój kod:

procedure TForm1.Button4Click(Sender: TObject);
begin
a := StrToInt(Edit1.Text);
b := StrToInt(Edit2.Text);

while a <> b do
begin
if a < b then
begin
pom := a;
a := b;
b := pom;
end;
a := a - b;
end;

Edit3.Text :=IntToStr(a);
end;

i NWW

procedure TForm1.Button5Click(Sender: TObject);
begin
a := StrToInt(Edit1.Text);
b := StrToInt(Edit2.Text);

if (a>0) and (b>0) then
begin
d := a*b;
  repeat
    c := a mod b;
    a := b;
    b := c;
  until b = 0;

end;

Edit3.Text :=IntToStr(d/a);

end;
0

Dzielnik zazwyczaj jest dodatni, bez względu czy rozpatrujesz liczby ujemne, czy dodatnie, więc

a := Abs(StrToInt(Edit1.Text));
b := Abs(StrToInt(Edit2.Text));

powinno załatwić sprawę.

1 użytkowników online, w tym zalogowanych: 0, gości: 1