-
سلام
والا تا اونجايي كه من يادم مياد به توان رساندن در پاسكال امكان پذير نبود ولي يه فرمول بود كه مي شد براي به توان رساندن اعداد ازش استفاده كرد به صورت زير:
مثلا برايX به توان Y به صورت زير مي شود :
Z : يك متغير كه حاصل را در خود ذخيره مي كند
موفق باشيد
-
ببینید ، مثلا میخوای به توان 3.16 برسونی ، یعنی به توان 100/316 ، پس:
1 - باید عدد رو به توان 316 برسونی ، چطوری؟
یه حلقه بنویس که 316 بار عدد رو در خودش ضرب کنه بریزه تو یه متغیری.
2 - حالا باید ریشه صدم عددی رو که در مرحله 1 بدست آوردی رو بگیری. چون ریشه زوجه میتونی 50 باز جذر بگیری*. مثلا میتونی یه حلقه بنویسی که 50 بار جذر بگیره و بریزه تو یه متغیری مثل total
خوب حالا شما عدد رو به توان 3.16 رسوندی! جواب در متغیر total ذخیره شده البته با تقریب خیلی خوب یعنی 4 رقم اعشار. برگردوندنش به زبان پاسکال با خودت، راستی یه قسمتی هم توش در نظر بگیر که اگر عدد نما منفی بود در آخر عدد بدست آورده رو معکوس کنه.
البته این راه غیر از روش نیوتونه و همون طور که میبینی محاسبات زیادی داره . البته اگه قسمتی از یه پروژه بزرگ نیست و زمان اجرا برات اهمیت نداره میشه استفاده کرد.
روش نیتون هم اگه دیفرانسیل خوندی باید یادت باشه... ولی من سعی میکنم در اولین فرصت اون رو هم بنویسم.
* اگر جذر به صورت متوالی گرفته بشه به ترتیب 1بار و 2 بار و 3 بار و 4 بار و 5 بار و 6 بار و ... ریشه های : 2و4و6و8و10و12 ... حاصل خواهند بود.
-
سلام عزیزان
اگه برنامشو نوشتین به من هم بدین که لازم شد حسابی
منتظرمااااااااااااااااااا اااااااااااا
موفق باشین دوستان خوبم
-
به يه مشكل جديد خوردم
error 205 : floating point overflow]
[var
ttt,x,tt,r,g,y,h1,h2,p1,p2,ro1,ro2,t1,t2,a:real;
i:integer;
begin
t1:=288.16;p1:=101325;ro1:=1.225;h1:=0;g:=9.81;r:= 278.26;
for i:=1 to 10 do
begin
a:=-0.0065;
h2:=i*100;
t2:=t1+(a*(h2-h1));
y:=-g/(a*r);
tt:=t2/t1;
p2:=p1*(exp(y*ln(tt)));
x:=((-g/a*r)+1);
ro2:=(ro1*abs((exp(x*ln(tt)))));
writeln(t22,' ',p22,' ',ro22,' ');
end
end.][/code]
-
فکر کنم سرریزی میکنه به خاطر اعشاری بودن ...
شما هر دفعه 4 رقم اعشار رو بگیر از بقیش چشن پوشی کن ...