Einzelnen Beitrag anzeigen

Ka1

Registriert seit: 28. Dez 2004
1 Beiträge
 
#13

Re: 10 Zahl und Erg. -> + u. - Berechnen

  Alt 28. Dez 2004, 22:31
(Hab es nicht ausgiebig getestet )

Es gibt insgesamt 512 Möglichkeiten (also 9 Bits)

Im "Edit1" stehen die 10 Ziffern (direkt hintereinander)
Im "Edit2" steht das zu suchende Ergebnis
"Button1" startet den Vorgang und die
"ListBox1" gibt das ganze aus

Delphi-Quellcode:
function GetBitStatus(W:Integer):String;
var BS : String;
begin
  BS:='';
  If W-256 >= 0 then begin BS:=BS+'1'; W:=W-256; end else BS:=BS+'0';
  If W-128 >= 0 then begin BS:=BS+'1'; W:=W-128; end else BS:=BS+'0';
  If W-64 >= 0 then begin BS:=BS+'1'; W:=W-64; end else BS:=BS+'0';
  If W-32 >= 0 then begin BS:=BS+'1'; W:=W-32; end else BS:=BS+'0';
  If W-16 >= 0 then begin BS:=BS+'1'; W:=W-16; end else BS:=BS+'0';
  If W-8 >= 0 then begin BS:=BS+'1'; W:=W-8; end else BS:=BS+'0';
  If W-4 >= 0 then begin BS:=BS+'1'; W:=W-4; end else BS:=BS+'0';
  If W-2 >= 0 then begin BS:=BS+'1'; W:=W-2; end else BS:=BS+'0';
  If W-1 >= 0 then begin BS:=BS+'1'; W:=W-1; end else BS:=BS+'0';
  Result:=BS;
end;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i,i1 : Integer;
  A : Array[1..10] of Integer;
  W : Integer;
  S, S1 : String;
begin
  ListBox1.Clear;
  For i:=1 to 10 do A[i]:=StrToInt(Edit1.Text[i]);
  For i:=0 to 511 do
  begin
    W:=A[1];
    For i1:=2 to 10 do
    begin
      S:=GetBitStatus(i); If S[i1-1]='0then W:=W-A[i1]
                                         else W:=W+A[i1];
    end;
    If StrToInt(Edit2.Text)=W then
    begin
      S1:=Edit1.Text[1];
      For i1:=1 to 9 do If S[i1]='0then S1:=S1+'-'+Edit1.Text[i1+1]
      else S1:=S1+'+'+Edit1.Text[i1+1];
      ListBox1.Items.Add(S1+'='+Edit2.Text);
    end;
  end;
end;
  Mit Zitat antworten Zitat