Умножение по Аль-Хорезми, в ROW — 1 число,в COL — 2 число — Pascal(Паскаль)

{Результат пишется в конец массива ROW}
procedure Multiplying;
var i,j,cr,cc:integer;
    carry,sum:longint;
begin
    dp:=high(row); cr:=nr; cc:=nc;
    carry := 0;
    while (cc>0) do begin
        i:=cr; j:=cc; sum:=carry;
        while (i<=nr) and (j>=1) do begin
           sum:=sum+row[i]*col[j];
           inc(i); dec(j);
        end;
        row[dp]:=sum mod 10; dec(dp);
        carry:=sum div 10;
        if cr>1 then dec(cr) else dec(cc);
    end;
    while (carry<>0) do begin
        row[dp]:=carry mod 10;
        carry:=carry div 10;
        dec(dp);
    end;
    inc(dp);
end;
 
begin
     {обнуление массивов-множителей}
     fillchar(row,sizeof(row),0); fillchar(col,sizeof(col),0);
     {поразрядный ввод 1-го числа}
     writeln('введите 1-е число число:');
     c:=#0;
     while NOT(c in ['0'..'9']) do c:=readkey;
     nr:=0;
     while (c in ['0'..'9']) do begin
        write(c);
        inc(nr); row[nr]:=ord(c)-ord('0');
        c:=readkey;
     end;
     writeln;
     {поразрядный ввод 2-го числа}
     writeln('введите 2-е число число:');
     while NOT(c in ['0'..'9']) do c:=readkey;
     nc:=0;
     while (c in ['0'..'9']) do begin
        write(c);
        inc(nc); col[nc]:=ord(c)-ord('0');
        c:=readkey;
     end;
     writeln;
     {вызов процедуры умножения, затем - вызов процедуры вывода результата}
     Multiplying; PrintResult;
end.

Leave a Comment

25 + = 32