AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Frage zur Rekursion

Ein Thema von Hannes22549 · begonnen am 8. Nov 2007 · letzter Beitrag vom 10. Nov 2007
 
Hannes22549

Registriert seit: 16. Nov 2005
Ort: Potsdam
20 Beiträge
 
Delphi 7 Professional
 
#1

Frage zur Rekursion

  Alt 8. Nov 2007, 14:15
Hi, also ich suche eine Prozedur, die die Zahlen aus einer ListBox in Zweiergruppen anordnet. D.h. in der ListBox stehen die Zahlen 1, 3, 5, 7. Dann soll in dem Arry festgehalten werden: [1,3 ; 5,7] [1,5 ; 3,7] [1,7 ; 3,5]. Also jedes mit jedem. Mein Code sieht dazu so aus:

Delphi-Quellcode:
procedure TForm1.BitBtn2Click(Sender: TObject);
var wahr:array[1..100] of boolean;
    zahl:array[1..100] of real;
    merk:array[1..50,1..2,1..1280] of real;
    max:Integer;
    i,l:Integer;
    zaeler:Integer;

  procedure rek(wahr:array of boolean;tiefe:integer);
  var l:Integer; //Prüfvariable
      i,ii:Integer;
  begin
    ShowMessage('Tiefe '+IntToStr(tiefe));
    l:=0;
    for i:=1 to max do
      if wahr[i]
        then l:=l+1;
    if l<2 //Prüfung ob noch 2 leere vorhanden sind
      then begin
        zaeler:=zaeler+1;
        exit;
      end
        else begin
          for i:=1 to max-1 do begin
            if wahr[i] then begin //wenn der Platz noch frei ist...
              wahr[i]:=false;
              ShowMessage('Max'+IntToStr(max));
              ShowMessage('1.'+IntToStr(i));
              for ii:=i+1 to max do begin
                if wahr[ii] then begin
                  wahr[ii]:=false;
                  ShowMessage('2.'+IntToStr(ii));
                  merk[tiefe,1,zaeler]:=zahl[i]; //Zahlenpaar merken
                  merk[tiefe,2,zaeler]:=zahl[ii];
                  rek(wahr,tiefe+1);
                end;
              end;
            end;
          end;
        end;
  end;

begin
  max:=ListBox1.Count;
  for i:=1 to max do begin
    zahl[i]:=StrToFloat(ListBox1.Items.Strings[i-1]);
    wahr[i]:=true;
  end;

  zaeler:=0;
  rek(wahr,1);
end;
Wo ist mein Fehler? Es kommt Stacküberlauf...

Danke schon mal im Voraus!

P.S.: Sorry, ich bin noch Anfänger...
Achtung!!! Anfänger am Start!!!
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz