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. |
Re: Fibonacci-Folge - Programmieren...
Klar, weil du die ersten Zwei Zahlen ja auch nicht in Zahl[0] und Zahl[1] speicherst ...
|
Re: Fibonacci-Folge - Programmieren...
Tut mir Leid, ich steh grad total aufm Schlauch :wall: :wall:
Gruß |
Re: Fibonacci-Folge - Programmieren...
Delphi-Quellcode:
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.
Try zahl[1]:=StrToInt(Edit1.Text) Except exit end;
Try zahl[2]:=StrToInt(Edit2.Text) Except exit end; |
Re: Fibonacci-Folge - Programmieren...
Geändert, trotzdem kein Ergebnis :(
Delphi-Quellcode:
Gruß
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. |
Re: Fibonacci-Folge - Programmieren...
Delphi-Quellcode:
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
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]);
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; |
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ß |
Re: Fibonacci-Folge - Programmieren...
Hast du es mal mit Haltepunkten versucht? Und wie sieht es mit F7 zum Compilieren (Einzelschritt) aus?
|
Re: Fibonacci-Folge - Programmieren...
So habe mein Fehler gefunden! Programm läuft einwandfrei!
Delphi-Quellcode:
Danke hierfür and closed!
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:48 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