Najnoviji breaktrough. Prvom programu je trebalo 48 sati za milijardu decimala a ovaj radi milijardu na 20 minuta sto ce reci 3 milijarde na sat vremena!!! Jesam pametaaaaan
Kod:
program divider;
uses crt,windos;
var
ti,tl,t,x1,x2,l1,l2,l3,z,l,code,code1,fs:integer;
b,d,x,xf:longint;
resultat,o,o1:string;
fin:boolean;
fajl:text;
fsajz: file of byte;
begin
{
X je broj decimala rezultatnog broja
B je broj koji se dijeli
D je broj s kojim se dijeli
X1 je broj ispisanih decimala
X2 je takodje broj ispisanih decimala
XF je ciljni broj decimala
}
x:=0;
x1:=0;
x2:=0;
l1:=-1000;
l2:=-1001;
l3:=-1002;
val(ParamStr(1),b,code);
val(ParamStr(2),d,code);
Assign(fajl,ParamStr(3));
Assign(fsajz,ParamStr(3));
Rewrite(fajl);
Reset(fsajz);
{ Write('Broj decimala: ');
readln(xf); }
l:=(b mod d)*10;
if (b mod d)*d=b then fin:=true;
z:=l div d;
l:=(l-(z*d))*10;
inc(x);
writeln(fajl,'');
writeln(fajl,b div d,'.');
writeln(fajl,'');
write(fajl,z);
inc(x1);
inc(x2);
while (fin<>true) { and (x<=xf) } do
begin
l3:=l2;
l2:=l1;
l1:=l;
z:=l div d;
l:=(l-(z*d))*10;
inc(x);
write(fajl,z);
inc(x1);
inc(x2);
if x1=10 then
begin
write(fajl,' ');
x1:=0;
end;
if x2=60 then
begin
write(fajl,' - ',x);
writeln(fajl,'');
x2:=0;
end;
if (x mod 1000000=0) then
begin
str(x,o);
tl:=length(o);
o1:='';
for ti:=tl downto 1 do o1:=o1+o[ti];
o:=o1;
o1:='';
for ti:=1 to tl do
begin
o1:=o1+o[ti];
if ti mod 3=0 then o1:=o1+'.';
end;
o:=o1;
o1:='';
tl:=length(o);
if o[tl]='.' then o[tl]:=' ';
for ti:=tl downto 1 do o1:=o1+o[ti];
clrscr;
writeln('Decimala: ',o1);
writeln('Fajl: ',FileSize(fsajz)/1024/1024:0:2,' MB.');
end;
if (l3=l2) and (l2=l1) and (l1=l) then
begin
writeln(fajl,'');
writeln(fajl,'');
writeln('Izracunavanje broja zavrseno!');
writeln('Zadnja decimala se vjerovatno ponavlja u beskonacnost!');
writeln('Broj izracunatih decimala: ',x);
fin:=true;
end;
if l=0 then
begin
writeln;
writeln;
writeln('Izracunavanje broja zavrseno!');
writeln('Broj izracunatih decimala: ',x);
fin:=true;
end;
end;
close(fajl);
end.