...
...
...
Du wirst ein Array von Zahlen (0..9) anlegen müssen, in dem du die Berechnungen durchführst...
Delphi-Quellcode:
function binaraytostring(const bins:array of boolean):string;
var
intarray:array of 0..9;
value2add:array of 0..9;
i,j,k,l,factor:integer;
einsweiter:boolean;
weiter:integer;
begin
factor:=1;
for i:=0 to length(bins)-1 do begin
//in value2add den integerwert des bins speichern
setlength(value2add,1);
if bins[i]=true then
value2add[0]:=1
else
value2add[0]:=0;
//value2add multiplizieren
for j:=2 to factor do begin
for k:=length(value2add)-1 downto 0 do begin
einsweiter:=value2add[k]>=5;
value2add[k]:=(value2add[k]*2) mod 10;
weiter:=(value2add[k]*2) div 10;
l:=k+1;
while einsweiter do begin
if l=length(value2add) then
setlength(value2add,l+1);
if value2add[l]+weiter<10 then
begin
value2add[l]:=value2add[l]+weiter;
einsweiter:=false;
end else begin
einsweiter:=true;
value2add[l]:=value2add[l]+(weiter mod 10);
weiter:=weiter div 10;
end;
end;
end;
end;
//value2add zu intarray hinzufügen
setlength(intarray,max(length(intarray),length(value2add)));
for k:=length(value2add)-1 downto 0 do
begin
einsweiter:=value2add[k]+intarray[k]>=10;
intarray[k]:=(value2add[k]+intarray[k]) mod 10;
weiter:=(value2add[k]+intarray[k]) div 10;
l:=k+1;
while einsweiter do begin
if l=length(intarray) then
setlength(intarray,l+1);
if intarray[l]+weiter<10 then
begin
intarray[l]:=intarray[l]+weiter;
einsweiter:=false;
end else begin
einsweiter:=true;
intarray[l]:=intarray[l]+(weiter mod 10);
weiter:=weiter div 10;
end;
end;
end;
//stellenwert um 1 erhöhen
factor:=factor+1;
end;
result:='';
for i:=0 to length(intarray)-1 do
result:=inttostr(intarray[i])+result;
end;
irgendwo is noch ein Fehler drin...
Beim verdoppeln von 16 kommt 22 raus...
Michael Enßlin
Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates