Niezalogowany (Zaloguj się)
WItaj Gościu! Możesz się teraz zalogować lub poprosić o członkowstwo na Forum Turbo Pascal Web Pag
    • CommentAuthorgajo10
    • CommentTime7 May 2009 zmieniony
     
    Moze mi ktos to wszystko wyjasni.
    const
    dl_str = 130;
    dl_liczby = 80;
    type
    dane_t = string[dl_str];
    liczba_t = record
    naj_znacz : 0..dl_liczby;
    cyf : array[0..dl_liczby] of 0..2
    end;

    procedure wczytaj_liczby(var l1, l2: liczba_t);
    var
    i, j, dl : integer;
    d : dane_t;
    begin
    for i := 0 to dl_liczby do
    begin l1.cyf[i] := 0; l2.cyf[i] := 0 end;
    readln(d);
    dl := length(d);
    i := -1; j := length(d);
    while d[j] <> ' 'do
    begin
    i := i+1;
    l1.cyf[i] := ord(d[j]) - ord('0');
    j := j-1
    end;
    l1.naj_znacz := dl - j - 1;
    i := -1; j := j-1;
    l2.naj_znacz := j-1;
    while j > 0 do
    begin
    i := i+1;
    l2.cyf[i] := ord(d[j]) - ord('0');
    j := j-1
    end
    end;

    procedure dodaj(var l1, l2, w: liczba_t);
    var
    i, max, przen, s: integer;
    begin
    for i := 0 to dl_liczby do w.cyf[i] := 0;
    if l1.naj_znacz >= l2.naj_znacz then
    max := l1.naj_znacz
    else
    max := l2.naj_znacz;
    przen := 0;
    for i := 0 to max do
    begin
    s := l1.cyf[i] + l2.cyf[i] + przen;
    w.cyf[i] := s mod 3;
    przen := s div 3;
    end;
    if przen > 0 then
    begin
    max := max + 1;
    w.cyf[max] := przen
    end;
    w.naj_znacz := max
    end;

    procedure wypisz(var w: liczba_t);
    var
    i : integer;
    begin
    for i := w.naj_znacz downto 0 do
    write(w.cyf[i]);
    writeln
    end;

    const
    liczba_testow = 50;

    var
    liczba1, liczba2, wynik : liczba_t;
    i : integer;

    begin
    for i := 1 to liczba_testow do
    begin
    wczytaj_liczby(liczba1, liczba2);
    dodaj(liczba1, liczba2, wynik);
    wypisz(wynik);
    end
    end.