Hirdetés

Új hozzászólás Aktív témák

  • Tangerine

    senior tag

    válasz cucka #1267 üzenetére

    Ez így elméletben szép, de nekem nem jött össze. Pont ilyesmivel próbálkoztam tegnap.
    A szorzás összeadás még működget, de ugyebár 6 hatványait kell a végeredményhez adni, ami kissé sokáig tartana szorzásokra bontani egy 60 jegyű számnál.

    function fval(ss:string):integer;
    var
    er,hiba:integer;
    begin
    val(ss,er,hiba);
    fval:=er;
    end;

    function fstr(ii:integer):string;
    var
    er:string;
    begin
    str(ii,er);
    fstr:=er;
    end;

    function max(x,y:string):integer;
    begin
    if length(x) > length(y) then
    max := length(x)
    else
    max := length(y);
    end;


    function osszead(x,y:string):string;
    var
    sossz:string;
    hh,ii,aa,bb,ossz,mar:integer;
    begin
    sossz:='';
    ossz := 0;
    mar := 0;
    hh := max(x,y) + 1;
    while length(x) < hh do x:='0' + x;
    while length(y) < hh do y:='0' + y;
    for ii := hh downto 1 do
    begin
    ossz := fval(x[ii])+fval(y[ii])+mar;
    mar := ossz div 10 ;
    sossz:=fstr(ossz mod 10) + sossz;
    end;
    while sossz[1] = '0' do delete(sossz,1,1);
    osszead := sossz;
    end;

    function szoroz(x,y:string):string;
    var ii:integer;
    er:string;
    begin
    er := '0';
    if (x='0') or (y='0') then
    szoroz := '0'
    else
    begin
    for ii := 1 to fval(y) do
    er := osszead(er,x);
    end;
    szoroz := er;
    end;

Új hozzászólás Aktív témák