Ocena użytkownikóww: ***** / 3
Nadesłany przez Michał Knasiecki, 26 lipca 2005 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.
NWD/Iter/NWP/Unit1.pas:
//Program pobrany z www.algorytm.org
//Opracowal Michal Knasiecki
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type tab=array[1..1000]of integer;
var
Form1: TForm1;
tablica:tab;
implementation
Function ZnajdzNWP:string; //Zwykla funkcja
var
p,NWP,i:integer;
begin
NWP:=Tablica[1];
for i:=2 to form1.memo1.Lines.Capacity do
begin
p:=Tablica[i];
while p<>NWP do
if p>NWP then dec(p,NWP) else
dec(nwp,p);
end;
result:=inttostr(nwp);
end;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
//Wprowadź do tablicy liczby z listboxa...
for i:=0 to memo1.Lines.Capacity-1 do
tablica[i+1]:=strtoint(memo1.lines[i]);
//... i znajdź nwp
edit1.text:=znajdznwp;
end;
end.
NWD/Rek/NWP/Unit1.pas:
//Program pobrany z www.algorytm.org
//Opracowal Michal Knasiecki
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type tab=array[1..1000]of integer;
var
Form1: TForm1;
tablica:tab;
implementation
function NWP2(a,b:integer):integer;
begin
while not(a=b) do
if a>b then a:=a-b else
b:=b-a;
result:=a;
end;
function NWP(n:integer):integer; //Funkcja rekurencyjna
begin
if n=2 then result:=NWP2(Tablica[1],Tablica[2])
else result:=nwp2(Tablica[n],nwp(n-1));
end;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
//Wprowadź do tablicy liczby z listboxa...
for i:=0 to memo1.Lines.Capacity-1 do
tablica[i+1]:=strtoint(memo1.lines[i]);
//... i znajdź nwp
edit1.text:=inttostr(nwp(memo1.lines.Capacity));
end;
end.