[pascal] odejmowanie

0

natknalem sie na maly problem podczas pisania odejmowania dla dlugich liczb na stringach. w miejscu gdzie juz mam konkretnie odejmowac niby powinno mi dzialac, a jednak nie dziala:| kto mi moze pomoc? mój kod:

function substraction(a, b : String) : String;
var
  i, temp : Byte;
  ad, bd : Byte;
  flag, sign : Boolean;
  S : String;
begin
  sign:=TRUE;
  if length(b) > length(a) then
  begin
    Replace(a, b);
    sign:=FALSE;
  end;
  if length(a) = length(b) then
  begin
    flag:=TRUE;
    i:=1;
    while (flag <> FALSE) and (i <= length(a)) do
    begin
      if toDigit(b[i]) > toDigit(a[i]) then
        flag:=FALSE;
      inc(i);
    end;
    if flag = FALSE then
    begin
      Replace(a, b);
      sign:=FALSE;
    end;
  end;

  S:='';
  while length(a) > length(b) do
    b:='0' + b;
  while length(b) > length(a) do
    a:='0' + a;
  for i:=length(a) downto 2 do
  begin
    ad:=toDigit(a[i]);
    bd:=toDigit(b[i]);
    if ad < bd then
    begin
      temp:=ad - bd + 10;
      a[i - 1]:=toChar(toDigit(a[i - 1]) - 1);
    end else
      temp:=ad - bd;
    S:=toChar(temp) + S;
  end;
  S:=toChar(toDigit(a[1]) - toDigit(b[1])) + S;
  if sign = FALSE then
    S:='-' + S;
  substraction:=S;
end;

procka Replace(var a, b) zamienia wartosciami dwa lancuchy, a toDigit i toChar chyba tlumaczyc nie trzeba.

0

nie no spoko, juz rozumiem:D dzieki:D

0

nie no skoro nikt nie ma nic do powiedzenia to ja sobie sam głośno pomyślę. To tak, do momentu S:='' wszystko sie zgadza. Sprawdzamy która liczba jest mniejsza... Ale coś dalej nie tak na pętli jest:| Tylko co??

// dziwna sprawa z tym tematem... z newbie, ktos przerzucil, zapewne przez pomylke do inne... Jesli milaes klopot w zwiazku z tym, to sorki w imieniu załogi [mf]

0

nie no spoko, z tym kłopotu nie było;) kłopot to ja mam z tym odjemowaniem;)

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