Thema: Delphi Haus vom Nikolaus algo

Einzelnen Beitrag anzeigen

Davidb

Registriert seit: 11. Nov 2005
Ort: Hamburg
15 Beiträge
 
Delphi 2005 Personal
 
#1

Haus vom Nikolaus algo

  Alt 11. Jan 2006, 20:16
Hallo, ich versuche seit gestern einen algo zu programieren der mir alle Lösungen vom Huas vom Nikolaus findet
nach zahlreichen versuchen hab ich dann versucht denn c algo von dieser seite:nikohaus in delphi zu übersetzten allerdings klappt das noch nicht so ganz
vielleicht könnt ihr mir ja sagen wo meine fehler liegen
hier mein code:
Delphi-Quellcode:
unit nikolaus;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);

    procedure FormCreate(Sender: TObject);

    
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  matrx: Array[1..5] of string;
  function nikohaus(matrix:array of string; const kn:integer; count:integer):string;

implementation

{$R *.dfm}

function nikohaus(matrix:array of string; const kn:integer; count:integer):string;
//noch keine rückgabem, weiß auch noch nicht genau wie ich die machen soll
    var i: integer;
begin
    for i := 1 to 5 do
    begin
        if matrix[kn][i] = '1then
        begin
            if count = 7 then exit;
            showmessage(matrix[kn]);
            matrix[kn][i] := '0';
            matrix[i][kn] := '0';//nach einigen duchgängen bekomme ich hier immer die exception ERage Error
            nikohaus(matrix, i, count + 1);//with message "range check error"
            matrix[kn][i] := '1';
            matrix[i][kn] := '1';
        end;
    end;

end;



procedure TForm1.FormCreate(Sender: TObject);
begin
    matrx[1] := '01110'; // ich hab statt den innerenarrays strings genommen weil sie leichter zuzuweisen sind
    matrx[2] := '10110';//(weniger schreibarbeit)
    matrx[3] := '11011';
    matrx[4] := '11101';
    matrx[5] := '00110';
end;



procedure TForm1.Button1Click(Sender: TObject);
    var s:string;
begin
   nikohaus(matrx, 1, 0);

end;

end.
weiß jemand wodurch dieser range error kommt?
und kann mir jemand einen tipp geben wie ich die rückgabe sinnvoll gestallte?

freue mich auf eure antworten,
grüße,
David
::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::Es gibt immer mehrere::::::::::::
:::::::::::::::Versionen von der:::::::::::::::
::::::::::::::::::::Wahrheit::::::::::::::::::::
  Mit Zitat antworten Zitat