Математикалык маселелерди программалоо. Эвклидтин алгоритми. 15.03.2014

FPC.
Абдан озгочо маселени чечууго туура келди. Интернетте даяр алгоритмдер бар экен бирок мен аларды колдонбодум. Интернеттеги программалар татаал экен, циклдерди жакшы тушуно албадым, ошондуктан озумдун женил программамды туздум. evklid процедурасы озун озу чакырат, функция катары кылайн десем каталык болуп жатты, жоопту сактоо учун жаны nod(наибольший обший делитель) озгормосун киргиздим. Маселе 2 жол менен чечилет экен болуу жана кемитуу менен. Мен кемитуусун карадым, себеби болуусун программалоо кыйын. Маселе томондогу сайтта абдан женил жана тушунуктуу берилен. http://younglinux.info/algorithm/euclidean
______________________________________________________________________
//Fee Pascal(Lazarus)

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

{ TForm1 }

TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;

var
Form1: TForm1;
nod:real;

implementation

{$R *.lfm}

{ TForm1 }

procedure evklid(a,b:real);
var
c :real;
begin
c := a -b;
if b>c then
begin
evklid(b,c)
end;

if c>b then
begin
evklid(c,b)
end;

if c=b then
begin
ShowMessage('You Win_'+FloatToStr(c));
nod :=c;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
res:real;
begin
evklid(130,50);
res:=nod;
ShowMessage('17_algorithm_euclidean='+FloatToStr(res));
end;

end.
______________________________________________________________________

comments powered by Disqus