unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, Grids;
type
TForm1 = class(TForm)
ListBox1: TListBox;
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Button2: TButton;
Label1: TLabel;
StringGrid1: TStringGrid;
Edit3: TEdit;
Button3: TButton;
Label2: TLabel;
Edit4: TEdit;
Label3: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var d:integer; //dichiara le variabili di tipo integer;
a,b,c,h,f,g:extended; //dichiara le variabili di tipo extended;
begin
stringgrid1.colCount:=strtoint(edit1.text);
listbox1.clear; //cancella tutto il contenuto del listbox1
a:=0; //inizializza la variabile a, impostandogli valore 0
b:=1; //inizializza la variabile b, impostandogli valore 1
listbox1.Items.Add(floattostr(a)); //scrive nella listbox, la prima...
listbox1.items.add(floattostr(b)); //.. e la seconda cifra della sequenza
stringgrid1.cells[0,1]:=floattostr(a); //Ora li scrive anche...
stringgrid1.cells[1,1]:=floattostr(b); // ...nella tabella
for d:=1 to strtoint(edit1.text)-2 do //inizia qui il ciclo che determina la sequenza
//di fibonacci a seconda del numero immesso
//dall'utente nell'edit1
begin
c:=a+b; //trova il successivo numero della sequenza di fibonacci
listbox1.Items.Add(floattostr(c));//scrive il numero trovato in coda alla lista
stringgrid1.cells[d+1,1]:=floattostr(c); //qui scrive il numero trovato nella tabella
stringgrid1.cells[d-1,0]:=floattostr(d); //qui conta i numeri della sequenza
a:=b; //resetta le variabili sostituendole
b:=c; // con i numeri successivi della sequenza
end; //finisce il ciclo for to do
f:=strtofloat(listbox1.Items[strtoint(edit1.text)-1]); //individua il numero della sequenza scelto dall'utente
g:=strtofloat(listbox1.Items[strtoint(edit1.text)-2]); //individua il numero precedente a quellos celto dall'utente
h:=f/g; //trova il numero di fibonacci facendo il rapporto tra i due numeri di prima
edit2.text:=floattostr(h); //scrive il riusltato ottenuto nell'edit2
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
halt; //esce dal programma
end;
procedure TForm1.Button3Click(Sender: TObject);
var a:integer; //dichiara a come intera
begin
a:=strtoint(edit3.Text); //impone a come valore del contenuto dell'edit3, necessariamente intero
if a > listbox1.Count then //se il numero immesso in edit3 (a) è > della somma dei numeri nela sequenza allora...
showmessage('Il numero inserito è troppo grande, provare con un numero compreso tra 1 e '+inttostr(listbox1.count))//... mostra il messaggio di errore
else //altrimenti
begin
label3.caption:='Il '+inttostr(a)+'° numero della sequenza di Fibonacci è:'; //aggiorna il contenuto della label4 con il valore immesso dall'utente
listbox1.ItemIndex:=a-1; //individua il numero calcolato nella listbox...
stringgrid1.col:=a-1; //... e anhce nella stringgrid
edit4.text:=listbox1.Items[listbox1.itemindex]; // fa vedere nell'edit4, qual'è il numero che corrisonde a quello immesso dall'utente.
end;
end;
end.