ورود

نسخه کامل مشاهده نسخه کامل : چه طوری میشه سینوس را محاسبه کرد (فوری)



derpase
21-05-2008, 11:37
چه طوری میشه سینوس را محاسبه کرد (فوری) ..... اگه ممکنه سورسشو میخواستم ....

NoneForce
21-05-2008, 11:49
سلام

از راهنماي دلفي استفاده كنيد : تابع Sin


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

derpase
21-05-2008, 12:42
ممنون . ولی من این طوری نوشتم مشکلش کجاس.
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

function Fact(n: Word): Longint;
var
f: LongInt;
i: Integer;
begin
f := 1;
for i := 2 to 8 do f := f * i;
Result := f;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
sin,fact,x:real;
begin
x:=-1;
x:=strtofloat(edit1.Text);

while i<=15 do
i:=0;
sin:=x-x*2*i+1/2*i+fact ;
i:=2*i+1;
edit2.Text:=floattostr(sin);

end;

end.

NoneForce
21-05-2008, 12:50
سلام

1- كد را داخل تگ Code قرار دهيد.
2- چرا تمام خط ها را از سر خط شروع مي كنيد؟! تا به حال با واژه "كدخوانا" برخورد كرده ايد؟!
3- شما بايد بگيد مشكل كجاست ، نه من.

derpase
21-05-2008, 13:52
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

function Fact(n: Word): Longint;
var
f: LongInt;
i: Integer;
begin
f := 1;
for i := 2 to 8 do f := f * i;
Result := f;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
sin,fact,x:real;
begin
x:=-1;
x:=strtofloat(edit1.Text);
while i<=15 do
i:=0;
sin:=x-x*2*i+1/2*i+fact ;
i:=2*i+1;
edit2.Text:=floattostr(sin);
end;

end.

قسمتی که آبیه اونجارو مشکل دارم جواب درست در نمیاد.

NoneForce
21-05-2008, 14:40
سلام

برنامه را به تكه هاي كوچك تقسيم كنيد، بعد ببينيد مشكل از كجاست.
چيزي كه با يك نگاه ميشه فهميد اينه كه بعد از While آخر بايد يه Begin-End باشه ، چون در حالتي كه الان وجود داره اگر i‌ كوچكتر از 15 باشه ، 15 بار مقدار i را برابر 0 خواهد كرد، ولي به ظاهر بايد 3 خط بعد هم اجرا شود.

YBB
23-05-2008, 12:28
سینوس هر زاویه (برحسب رادیان) به راحتی با تابع sin محاسبه می شود البته می بایست یونیت Math به پروژه اضافه شود.

و اگر می خواهید بدون استفاده از تابع سینوس دلفی سینوس یک زاویه را حساب کنید
با توجه به بسط مک لورن سینوس که به صورت زیر است:

Sinx=x-x^3/3!+x^5/5!-x^7/7!+...

تابع محاسبه سینوس به صورت زیر خواهد بود (تابع 15 جمله اول سری را را به عنوان سینوس زاویه بر می گرداند):
x برحسب رادیان می باشد.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

مرد مباح
25-05-2008, 14:21
دقيقا. شما باسد درجه را به راديان تبديل كنيد و بعد توي سينوس ازش استفاده نمائيد.

موفق باشي.