کسی الگوریتمی بلده که بشه ریشه n ام یک عدد را با m رقم اعشار گرفت
کسی الگوریتمی بلده که بشه ریشه n ام یک عدد را با m رقم اعشار گرفت
یعنی کیسی یه تابع یا روال برای این کار سراغ نداره*
البته sqrt به کارم نمیاد چون اولا فقط ریشه دوم رو محاسبه میکنه*
دوما تقریب اعشار رو توش نمیشه مشخص کرد
من یه تابع میخوام بشه توش اینا رو مشخص کرد
سلام مهندس.این دو لینک رو دنبال کنید ببینید به دردتون میخوره ...
[برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]
[برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]
دلفی ،*جذاب ترین زبان طراحی نرم افزار ...
فقط من یه مشکل دارم*
من میخوام مثلا زمانی که ازش ریشه سوم عدد 8 رو بخوام با هر دقت اعشاری به من 2 رو بده
ولی این تابع 2.21895141649746 رو به من میده*
دقیقا کدتون چیه ؟
سورس رو بزارید
دلفی ،*جذاب ترین زبان طراحی نرم افزار ...
کد:
کد:USES Math; function NthRoot(A, Precision: Double; n: Integer): Double; var x_p, X: Double; begin x_p := Sqrt(A); while Abs(A - Power(x_p, n)) > Precision do begin x := (1/n) * (((n-1) * x_p) + (A/(Power(x_p, n - 1)))); x_p := x; end; Result := x_p; end;
اینم لینکش*
http://rosettacode.org/wiki/Nth_root#Delphi
سلام.اینم جواب شما.
ببینید به دردتون میخوره ...
البته یه مقداری عجله ای شد ...
[برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]
دلفی ،*جذاب ترین زبان طراحی نرم افزار ...
البته کلا شما با این روش زیر مشکلتون حل میشه و اونم تبدیل Double به Int هستش
کد:
کد:var a: double; b: integer; begin a := 3.14159; b := trunc(a); label1.caption := IntToStr(b); end;
دلفی ،*جذاب ترین زبان طراحی نرم افزار ...
*مشکل اینه که در این حالت تمام ریشه ها رو روند میکنه و نباید این کارو کنه مثلا ریشه دوم 5 برابر میشه با ریشه دوم 4 که این کاملا اشتباه هست من می خوام *در ضورتی که ریشه یک عدد طبیعی بود اون رو به صورت غیر اعشار نشون بده و زمانی که جواب اعشاری بود اون رو به صورت اعشار نشون بده ولی این مشکل رو خودم با یه تابع حل کردم ولی مشکلی که اینجا مطرح کردم این بود که چرا الگوریتم جواب درست به من نمیده مثلا باید ریشه 3 عدد 8 رو به من خروجی 2 بده ولی در واقع 2.21895141649746 *رو به من میده که اشتباه*
چون از روشی*که استفاده میکنه، 8 رو به توان یک سوم میرسونه ... مثلا یه دوستی یه جایی اینطوری گفته بود ...
"همه میدونن که ریشه سوم عدد 8 ، عدد 2 هست . اگر چه طبق تعریف قرار باشه 8 رو به توان یک سوم برسونیم مطمئنا جواب دقیقی نمیگیریم !!!چون یک سوم خودش یک عددیه که قسمت اعشاریش پایان پذیر نیست پس مطمعنا عدد 2 با دقت بدست نخواهد اومد ! شما مجبور هستی توی برنامه ات امکان گرد کردن بعضی از*اعداد رو بگذاری و اونها رو به نزدیک ترین عدد ممکن گرد کنی تا جواب هات درست دربیاد ..."
به این لینک هم یه سری بزنید ... [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]
دلفی ،*جذاب ترین زبان طراحی نرم افزار ...
نقل قول از admin
چون از روشی*که استفاده میکنه، 8 رو به توان یک سوم میرسونه ... مثلا یه دوستی یه جایی اینطوری گفته بود ...
"همه میدونن که ریشه سوم عدد 8 ، عدد 2 هست . اگر چه طبق تعریف قرار باشه 8 رو به توان یک سوم برسونیم مطمئنا جواب دقیقی نمیگیریم !!!چون یک سوم خودش یک عددیه که قسمت اعشاریش پایان پذیر نیست پس مطمعنا عدد 2 با دقت بدست نخواهد اومد ! شما مجبور هستی توی برنامه ات امکان گرد کردن بعضی از*اعداد رو بگذاری و اونها رو به نزدیک ترین عدد ممکن گرد کنی تا جواب هات درست دربیاد ..."
من دقیقا منظورتون رو نفهمیدم یعنی شما میگید ریشه سوم 8 یا همون 8 به توان یک سوم*
با 2 اعداد صحیح برابر نیست یا منظورتون مشکل الگوریتم منه؟
الگوریتم درست کار نمیکنه ...
ضمنا شما میتونید تو همون کد بالا فقط از Power استفاده کنید ...
مثال :
کد:
کد:ShowMessage(FloatToStr(Power(StrToFloat(Edit1.Text),(1/StrToInt(Edit3.Text)))));
دلفی ،*جذاب ترین زبان طراحی نرم افزار ...
ایا الگوریتمی سراغ دارید که با اختلاف کیمتری در حد 0 جواب بده*
من که سراغ ندارم ، بقیه ی دوستان چطور؟؟؟
دلفی ،*جذاب ترین زبان طراحی نرم افزار ...
مثله اینکه*بقیه دوستانم جوابی ندارند
علاقه مندي ها (Bookmarks)