Ergebnis 1 bis 7 von 7

Thema: 'Taxigeometrie' Rekursiv lösen. [Anzahl kürzester Strecken zwischen zwei Punkten]

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Code:
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    type
      TForm1 = class(TForm)
        Edit1: TEdit;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
        function AnzahlWege(x,y,end_x,end_y:integer):integer;
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    edit1.text:=inttoStr(anzahlwege(0,0,5,5));
    end;
    
    function TForm1.AnzahlWege(x,y,end_x,end_y:integer):integer;
    var zahl:integer;
    begin
            if (x = end_x) and (y = end_y) then
                    result:=1;   // wenn nur 1x1 kästchen
            zahl:=0;
            if (x < end_x) then
                    zahl := zahl + anzahlWege(x+1,y,end_x,end_y);
            if (y < end_y) then
                    zahl := zahl + anzahlWege(x,y+1,end_x,end_y);
    
            result:=zahl;
    end;
    
    end.
    mein delphigeblubber.
    leider ist result immer 0.
    immer.

    Geändert von FF (22.03.2007 um 17:03 Uhr)

  2. #2
    ok, die lösung war so einfach wie doof.
    ich hab den c++ in delphi code umgeschrieben, und demensprechend angepasst.
    das return wurde zu result.
    was ich nicht wusste, ist, das result die funktion nicht beendet :<
    insofern wurde mein zähler immer wieder auf 0 gesetzt.
    delphi suckt.

  3. #3
    Zitat Zitat von Freierfall Beitrag anzeigen
    ich hab den c++ in delphi code umgeschrieben
    Das war vernünftig

    Zitat Zitat von Freierfall Beitrag anzeigen
    delphi suckt.
    O.O nein, es ist äußerst praktisch das result nicht beendet (wäre auch insofern dämlich, da es ja nur eine Variablezuweisung ist, nicht wie in C eine funktion. So kann man in Delphi immer schön platz sparen z.B.

    Code:
    function x: Integer;
    begin
      result := 0;
      if x then
        result := 1;
    end;
    oder so. Jedenfalls wenn du nach Result beenden willst schau dir mal den "exit"-Befehl an.

  4. #4
    Zitat Zitat
    function x: Integer;
    begin
    result := 0;
    if x then
    result := 1;
    end;
    wäre woander
    Code:
    function x: Integer;
    {
      if x
       return 1;
      else
       return 0;
    }
    oder so in der art.


    aber egal, danke nochmal an dfyx und magor, funzt ja jetzt.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •