Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fibonacci-Folge - Programmieren... (https://www.delphipraxis.net/144917-fibonacci-folge-programmieren.html)

umbras 20. Dez 2009 19:55

Re: Fibonacci-Folge - Programmieren...
 
Auch wenn ich i:=2 setze.. kriege ich kein Ergebnis:

Delphi-Quellcode:
unit FibonacciU;

interface

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

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    StringGrid1: TStringGrid;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Cells[0,0]:='Anzahl'; StringGrid1.Cells[0,1]:='Ergebnis';
end;

procedure TForm1.Button1Click(Sender: TObject); var zahl: array of integer; anz,i :integer;
begin
Try anz:=StrToInt(Edit3.Text)Except exit end;
SetLength(zahl,anz);
Try zahl[1]:=StrToInt(Edit1.Text) Except exit end;
Try zahl[2]:=StrToInt(Edit2.Text) Except exit end;
StringGrid1.ColCount:=succ(anz);
If anz<=0
Then
Begin ShowMessage('FEHLER...'); exit; end;
For i:=2 to anz do
StringGrid1.Cells[i,0]:=IntToStr(i);
zahl[i]:=zahl[i-1]+zahl[i-2];
StringGrid1.Cells[i,1]:=IntToStr(zahl[i]);
end;

end.

Leanahtan 20. Dez 2009 20:03

Re: Fibonacci-Folge - Programmieren...
 
Klar, weil du die ersten Zwei Zahlen ja auch nicht in Zahl[0] und Zahl[1] speicherst ...

umbras 20. Dez 2009 20:05

Re: Fibonacci-Folge - Programmieren...
 
Tut mir Leid, ich steh grad total aufm Schlauch :wall: :wall:

Gruß

Leanahtan 20. Dez 2009 20:09

Re: Fibonacci-Folge - Programmieren...
 
Delphi-Quellcode:
Try zahl[1]:=StrToInt(Edit1.Text) Except exit end;
Try zahl[2]:=StrToInt(Edit2.Text) Except exit end;
Deine erste Zahl ist also im array bei zahl[1]. Wenn du nun mit i=2 rechnest, dann ist Zahl[2]=Zahl[1]+Zahl[0] -> Zahl[0] hast du aber nirgends zugewiesen.

umbras 20. Dez 2009 20:12

Re: Fibonacci-Folge - Programmieren...
 
Geändert, trotzdem kein Ergebnis :(
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject); var zahl: array of integer; anz,i :integer;
begin
Try anz:=StrToInt(Edit3.Text)Except exit end;
SetLength(zahl,anz);
Try zahl[0]:=StrToInt(Edit1.Text) Except exit end;
Try zahl[1]:=StrToInt(Edit2.Text) Except exit end;
StringGrid1.ColCount:=succ(anz);
If anz<=0
Then
Begin ShowMessage('FEHLER...'); exit; end;
For i:=2 to anz do
StringGrid1.Cells[i,0]:=IntToStr(i);
zahl[i]:=zahl[i-1]+zahl[i-2];
StringGrid1.Cells[i,1]:=IntToStr(zahl[i]);
end;

end.
Gruß

Leanahtan 20. Dez 2009 20:27

Re: Fibonacci-Folge - Programmieren...
 
Delphi-Quellcode:
For i:=2 to anz do
StringGrid1.Cells[i,0]:=IntToStr(i);
zahl[i]:=zahl[i-1]+zahl[i-2];
StringGrid1.Cells[i,1]:=IntToStr(zahl[i]);
Schleife wird nur für StringGrid1.Cells[i,0]:=IntToStr(i); durchlaufen. Danach hat i den Wert anz+1 (Abbruchbedingung). Zahl[anz+1] erzeugt dann einen Fehler. Probiers mal mit
Delphi-Quellcode:
For i:=2 to anz do
begin
  StringGrid1.Cells[i,0]:=IntToStr(i);
  zahl[i]:=zahl[i-1]+zahl[i-2];
  StringGrid1.Cells[i,1]:=IntToStr(zahl[i]);
end;

umbras 20. Dez 2009 21:24

Re: Fibonacci-Folge - Programmieren...
 
Hi,
Er rechnet zwar und ich krieg auch Ergebnisse, aber ich krieg teilweise verschiedene Fehlermeldungen z.B ungültige Zeigeroperation!

Gruß

Leanahtan 20. Dez 2009 21:27

Re: Fibonacci-Folge - Programmieren...
 
Hast du es mal mit Haltepunkten versucht? Und wie sieht es mit F7 zum Compilieren (Einzelschritt) aus?

umbras 20. Dez 2009 21:42

Re: Fibonacci-Folge - Programmieren...
 
So habe mein Fehler gefunden! Programm läuft einwandfrei!

Delphi-Quellcode:
unit FibonacciU;

interface

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

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    StringGrid1: TStringGrid;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Cells[0,0]:='Anzahl'; StringGrid1.Cells[0,1]:='Ergebnis';
end;

procedure TForm1.Button1Click(Sender: TObject); var zahl: array of integer; anz,i :integer;
begin
Try anz:=StrToInt(Edit3.Text)Except exit end;
SetLength(zahl,anz+1);
Try zahl[0]:=StrToInt(Edit1.Text) Except exit end;
Try zahl[1]:=StrToInt(Edit2.Text) Except exit end;
StringGrid1.ColCount:=succ(anz);
If anz<=0
Then
Begin ShowMessage('FEHLER...'); exit; end;
StringGrid1.Cells[1,0]:='1';
StringGrid1.Cells[1,1]:='Z1:'+IntToStr(zahl[0])+' Z2:'+IntToStr(zahl[1]);
For i:=2 to anz do
begin
StringGrid1.Cells[i,0]:=IntToStr(i);
zahl[i]:=zahl[i-1]+zahl[i-2];
StringGrid1.Cells[i,1]:=IntToStr(zahl[i]);
end;
end;

end.
Danke hierfür and closed!


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:48 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz