Re: Fibonacci-Folge - Programmieren...
PS: Falls das mit deiner Delphiversion schon geht, solltest du einfach mal einen Haltepunkt setzen, und dann Zeilenweise dein Programm durchlaufen lassen - dann solltest du den Fehler eigentlich selber finden.
|
Re: Fibonacci-Folge - Programmieren...
?? Also wenn die Zahlen kein Kovertierungsfehler enthalten oder nicht kleiner als 0 sind, werden sie in den SPeicher reingepackt. So interpretier ich das...
Wie mach ich das denn mit den Haltepunkt? Gruß |
Re: Fibonacci-Folge - Programmieren...
Ich weiß nicht genau, ob das mit den Haltepunkten in Delphi 5 schon geht. Wernn ja, dann kannst du einen Haltepunkt setzen, indem du links neben die entsprechende Codezeile klickst. Und dann kannst du (mit F7?) das Programm Zeilenweise weiterlaufen lassen.
Ansonsten kannst du das exit ja mal durch eine Nachricht ersetzen. Was für Zahlen gibst du denn ein? |
Re: Fibonacci-Folge - Programmieren...
Hallo,
ein paar kleine Tipps : 1) statt
Delphi-Quellcode:
benutze
then exit
Delphi-Quellcode:
so has Du eine Kontrolle, was schiefgegangen ist.
then
begin ShowMessage('... dein hier möglicherweise auftretender Fehler'); Exit; end; 2) Dein Block mit
Delphi-Quellcode:
sollte so aussehen
For i := 0 to anz do .....
Delphi-Quellcode:
und überprüfe mal Deine Berechnung im o.a. Block ... wenn Du mit i = 0 anfängst ... :gruebel:
for i := 0 to anz do
begin StringGrid1.Cells ... zahl[i.... StrigGrid1.Cells[i, 1] := ... end; |
Re: Fibonacci-Folge - Programmieren...
Keine Besserung...
Delphi-Quellcode:
Gruß
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 zahl[1]:=StrToInt(Edit1.Text) Except exit end; Try zahl[2]:=StrToInt(Edit2.Text) Except exit end; Try anz:=StrToInt(Edit3.Text)Except exit end; SetLength(zahl,anz); StringGrid1.ColCount:=succ(anz); If anz<=0 Then Begin ShowMessage('FEHLER...'); exit; end; For i:=1 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. |
Re: Fibonacci-Folge - Programmieren...
Hallo,
... und eigentlich müsstest Du hier noch eine Fehlermeldung bekommen :
Delphi-Quellcode:
in den Zeilen mit Try zahl[0] und Try zahl[1] greifst Du erst auf das dyn. array zu
begin
Try zahl[0]:=StrToInt(Edit1.Text) Except exit end; Try zahl[1]:=StrToInt(Edit2.Text) Except exit end; Try anz:=StrToInt(Edit3.Text) Except exit end; SetLength(zahl,anz); ... und setzt aber erst nach Abfrage des Wertes in Edit3 die Länge !? |
Re: Fibonacci-Folge - Programmieren...
Delphi-Quellcode:
verbessert! i wird angezeigt, mehr aber nicht..
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:=1 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ß |
Re: Fibonacci-Folge - Programmieren...
Delphi-Quellcode:
Wenn du mit i:=1 beginnst, und deine erste Zahl in Zahl[1] speicherst, dann kann das so nicht funktionieren...
zahl[i]:=zahl[i-1]+zahl[i-2];
|
Re: Fibonacci-Folge - Programmieren...
... Berechnungsfehler
>>>>>>>>>>>> i := 1 : zahl[i-2] >>> gibt's im array doch gar nicht, wäre zahl := array[-1...max] of Integer !!! :idea: |
Re: Fibonacci-Folge - Programmieren...
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:50 Uhr. |
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