PDA

View Full Version : سوال خروجی برنامه



best99
سه شنبه 05 آبان 1388, 18:33 عصر
با سلام

لطفا برنامه زیر چه کاری انجام میده و خروجیش چیه i جهت ویرایش



fuction


prm(az:integer):real; i
if az=1 then
prm= sqrt(12) i
else
prm:=sqrt(12*prm(az-1)); i
end
begin
write(prm(30):0:2); i
end

Hadi_Fayyaz
سه شنبه 05 آبان 1388, 19:42 عصر
سلام دوست گرامي
تابع PRM يك تابع بازگشتي است كه يك فرمول رياضي به صورت زير رو محاسبه ميكنه

SQRT(12*SQRT(12*SQTR(12*.......SQRT(12)...)))
منظور از SQRT همون راديكال يا ريشه دوم هست
تعداد راديكال ها بستگي داره به پارامتر ورودي تابع مثلا در فراخواني تابع كه شما نوشتيد تعداد راديكال ها 30 تا ميباشد.
حالا اين محاسبه از نظر رياضي چه معنايي ميده و چه كاربردي داره نميدونم.
موفق باشيد.

best99
چهارشنبه 06 آبان 1388, 06:48 صبح
سلام دوست گرامي
تابع PRM يك تابع بازگشتي است كه يك فرمول رياضي به صورت زير رو محاسبه ميكنه

SQRT(12*SQRT(12*SQTR(12*.......SQRT(12)...)))
منظور از SQRT همون راديكال يا ريشه دوم هست
تعداد راديكال ها بستگي داره به پارامتر ورودي تابع مثلا در فراخواني تابع كه شما نوشتيد تعداد راديكال ها 30 تا ميباشد.
حالا اين محاسبه از نظر رياضي چه معنايي ميده و چه كاربردي داره نميدونم.
موفق باشيد.

با سلام وتشکر از شما
ولی این چیزهای که فرمودید را به صورت مجزا هر کدومشون معلوم اینکه تابع باز گشتی و اون هم رادیکال عزیز دل .... خروجی بر نامه چیه

Hadi_Fayyaz
چهارشنبه 06 آبان 1388, 07:43 صبح
سلام دوست گرامي
دوست عزيز شما سوال كرديد كه اين برنامه چكار ميكنه من هم عرض كردم يك فرمول رياضي به شكل زير رو محاسبه ميكنه

SQRT(12*SQRT(12*SQRT(...SQRT(12)...)))
و توضيح هم دادم كه تعداد SQRT ها كه منظور همون راديكال است بستگي به مقدار پارامتر ورودي داره كه توي برنامه اي كه شما كدش رو نوشتيد ظاهرا تعداد اونها 30 تا ست.
حالا اگه منظور از خروجي تفسير اين فرمول هست كه بنده هم عرض كردم نميدونم اين چه فرموليه و اگه منظور شما از خروجي برنامه اينه كه اين برنامه چه عددي رو توليد ميكنه كافيه اولا اشكال هاي املايي برنامه رو اصلاح كنيد وبعد اون رو اجرا كنيد كه به عدد 11.999999972229 خواهيد رسيد.
در غير اين صورت باكمال تاسف بايد بگم منظور شما رو از خروجي برنامه نميفهمم.
موفق باشيد

Ebrahim Asadi
چهارشنبه 06 آبان 1388, 08:14 صبح
سلام
جواب دوستمون Hadi_Fayyaz كاملاً درسته اما دستور write فوق باعث ميشه كه عدد 11.999999972229 تا دو رقم اعشار Round بشه كه ميشه 12.00


program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

function prm(az: Integer): real;
begin
if az=1 then
begin
prm := sqrt(12)
end
else
begin
prm := sqrt(12*prm(az-1));
end;
end;

begin
write(prm(30):0:2);
readln;
end.