PDA

View Full Version : سوال: پروژه ساخت ماشین حساب مهندسی با پاسکال



anghel
شنبه 26 اسفند 1391, 16:39 عصر
سلام دوستان
من باید یک ماشین حساب مهندسی با زبان پاسکال طراحی کنم
از شما دوستان کمک میخوام که منو همراهی کنین:لبخندساده:
بعد از چند روز مطالعه سخت (روزی 7 ساعت) تونستم تابع سینوس بنویسم اما به مشکل برخوردم
مشکلم اینه که باید حتما مقدار ورودی به رادیان وارد کنم اما میخوام درجه باشه نمیدونم چیکار کنم
تازه استادمون چیز خاصی به ما یاد نداده اما پروژه ای که داده خیلی سخته خودش که گفته خیلی آسونه نمیدونم چی بگم

اینطوری در بیاد101545

یوسف زالی
شنبه 26 اسفند 1391, 21:09 عصر
سلام.
فقط یک راهنمایی کنم ،
بزای تبدیل واحدهای خطی با نقطه صفر مشترک:


واحد اول واحد دوم
---------------- = --------------------
تعداد تقسیمات تعداد تقسیمات

مثال:



Degree / 180 = Radian / PI


تبدیلش به همین سادگی هست.
این قسمت ماهی گیریش بود.
شما در دلفی یونیت Math رو Use کنی همه توابع و تبدیلاتش هست.
در پاسکال هم sin, cos, tan, ln, sqrt و سایر توابع ریاضی وجود دارند.
موفق باشی.

anghel
یک شنبه 27 اسفند 1391, 11:55 صبح
ممنون دوست خوبم بابت راهنمایی که کردی
مشکل اینجاست که استاد گفتند بدون استفاده از توابع پیش فرض کامپایلر مثل سینوس و کسینوس
یعنی باید با استفاده از توابع سینوسی انجامش بدم
فرمولاشو گیر آوردم مشکلم این بود که به رادیان جواب میداد
x-x^3/3!+x^5/5!

یوسف زالی
یک شنبه 27 اسفند 1391, 12:22 عصر
بدون اونها باید از بسط هایی مثل تیلور یا مک لورن استفاده کنید.
برای دقت یالاتر تعداد جملات باید بیشتر باشه.

anghel
یک شنبه 27 اسفند 1391, 12:53 عصر
من این کد رو برای سینوس نوشتم
program sinus;
uses crt;
var
i,j,k,sign:=integer;
fact:=longint;
rad,deg,sinx,power:=real;
begin
clrscr;
write('sin= ');
readln(deg);
rad:=deg*57.29;
i:=3;
sign:=-1;
sinx:=rad;
for j:=2 to 5 do
fact:=fact*k;
for k:=1 to i do
power:=power*rad;
sinx:=sinx+(power/fact)*sign;
sing:=-sign;
i:=i+2;
end;
writeln('sin(',rad,')=',sinx:4:2);
readln;
end.

خروجی برنامه
sin=30
sin(30.00)=3606011224619060000000.00

نمیدونم مشکل کار کجاست جواب درست نمیده لطفا منو راهنمایی کنید
ممنونم:متفکر:

یوسف زالی
یک شنبه 27 اسفند 1391, 13:54 عصر
اینجا (http://barnamenevis.org/showthread.php?388044-%D8%AF%D9%84%D9%81%DB%8C-%D9%88-%D8%B1%DB%8C%D8%A7%D8%B6%DB%8C&p=1718625&viewfull=1#post1718625) رو مطالعه کنید.

anghel
یک شنبه 27 اسفند 1391, 14:30 عصر
اینجا (http://barnamenevis.org/showthread.php?388044-%D8%AF%D9%84%D9%81%DB%8C-%D9%88-%D8%B1%DB%8C%D8%A7%D8%B6%DB%8C&p=1718625&viewfull=1#post1718625) رو مطالعه کنید.

مطالعه کردم ولی راستشو بخوای زیاد نتونستم سر در بیارم
مشکل کار من در این برنامه که در پست قبلی دادم به نظر شما چیه؟

یوسف زالی
یک شنبه 27 اسفند 1391, 14:49 عصر
rad:=deg*57.29;

اینو از کجا آوردید؟
یعنی یک درحه می شه 57 رادیان؟ بعد چجوری 180 درجه می شه PI رادیان؟؟
کمی هم به خودتون زحمت بدید.
مطالب و راهنمایی ها کامله.

anghel
دوشنبه 28 اسفند 1391, 10:21 صبح
اینو از کجا آوردید؟
یعنی یک درحه می شه 57 رادیان؟ بعد چجوری 180 درجه می شه PI رادیان؟؟
کمی هم به خودتون زحمت بدید.
مطالب و راهنمایی ها کامله.

داداشم 180 تقسیم بر عدد pi کردم یعنی:
180/3.14=57.29

یعنی کارم اشتباه بود؟
اگه اشتباه هست میشه بگین عدد pi رو چطوری در پاسکال نشون بدم؟
اگه باعث اذیتتون شدم معذرت میخوام من تازه وارد دنیای برنامه نویسی شدم مبتدی هستم شرمنده

anghel
دوشنبه 28 اسفند 1391, 10:29 صبح
به اشتباه خودم پی بردم
ویرایش میکنم ببینم جواب میده یا نه
از راهنماییتون متشکرم

anghel
دوشنبه 28 اسفند 1391, 10:42 صبح
ممنون از شما تونستم با ضریب 0.1 به جواب برسم
الان هم سینوس هم کسینوس درست کار میکنه ممنون از شما

یوسف زالی
دوشنبه 28 اسفند 1391, 12:16 عصر
ببین دوست من؛
قضیه اصلا شخصی نیست. شما باید به عنوان یک برنامه نویس خوب راه های زیادی رو امتحان کنید و در دنیای برنامه نویسی هر شکستی یک آموزشه.
در مورد تبدیلات؛ گفتم که با استفاده از اون فرمول شما باید یک معادله یک مجهولی حل کنی که با عجله و اعتماد به نفس بی مورد (که همه درگیرش هستیم) باعث می شیم اشتباهات کودکانه ای رخ بده.
حالا ببین:
Radian / PI = Degree / 180
Radian = (Degree / 180) * PI
Radian = Degree * PI / 180
Radian = Degree * 0.01745278

به همین سادگی اشتباه رخ می ده.
ما اینجا دور هم جمع هستیم تا به برنامه نویس شدن هم دیگه کمک کنیم. این هم با گذاشتن کد آماده بدست نمیاد .
موفق یاشی.

anghel
دوشنبه 28 اسفند 1391, 13:09 عصر
ممنون دوست من
بله حرفاتون درست و منطقی بود پذیرفتم
تونستم سینوس و کسینوس و تانژانت و لگاریتم و توان2 بنویسم
الان روی رادیکال گیر کردم ، احتیاج به کمک دارم نمیتونم به کد بنویسم
ممنون میشم راهنمایی کنید

Ananas
دوشنبه 28 اسفند 1391, 13:42 عصر
سلام.
ایشون 57.29 رو درست بدست آورده فقط باید تقسیم به 57.29 کنه نه ضرب در 57.29.

یوسف زالی
دوشنبه 28 اسفند 1391, 14:07 عصر
می دونم آناناس جان ( رادیکال دو دوم :) )
می خواستم تو محاسباتشون تجدید نظر کنن که کردن.


الان روی رادیکال گیر کردم

یک راهش اینه که از فرمول زیر استفاده کنید:


radical A = A^0.5 = e^(0.5 * Ln(A)) = 10^(0.5 * Log(A))

البته ممکنه به بسط تابع e^x نیاز پیدا کنید.

anghel
دوشنبه 28 اسفند 1391, 19:01 عصر
با تشکر از دوستان گلم
با بسط تیلور این کارو کردم اما به نتیجه ی خاصی نرسیدم
یعنی نتیجه درستی نمیده
radical:=(1/2)*x-(1/8)*(x*x)+(1/16)*(x*x*x)-(5/128)*(x*x*x*x);

خروجی برنامه
radical=25
radical(25.0)=-14347.9

به نظرتون مشکل کارم کجاست؟
محاسباتم رو از اینجا گرفتمhttp://fa.wikipedia.org/wiki/%D8%B1%DB%8C%D8%B4%D9%87_%D8%AF%D9%88%D9%85

anghel
دوشنبه 28 اسفند 1391, 19:06 عصر
می دونم آناناس جان ( رادیکال دو دوم :) )
می خواستم تو محاسباتشون تجدید نظر کنن که کردن.

یک راهش اینه که از فرمول زیر استفاده کنید:


radical A = A^0.5 = e^(0.5 * Ln(A)) = 10^(0.5 * Log(A))

البته ممکنه به بسط تابع e^x نیاز پیدا کنید.

این علامت "^" در پاسکال برای مشخص کردن آدرس باید باشه درسته؟!

یوسف زالی
سه شنبه 29 اسفند 1391, 00:38 صبح
اون علامت در کدهای سودو علامت توان هست.

anghel
سه شنبه 29 اسفند 1391, 10:20 صبح
اون علامت در کدهای سودو علامت توان هست.

اما در پاسکال وقتی این کدو مینویسی ارور illegal میده
ممنونم از راهنمایی شما:چشمک:

یوسف زالی
سه شنبه 29 اسفند 1391, 10:43 صبح
گفتم که "در کدهای سودو"
نه در پاسکال
pseudo code یک زبان برنامه نویسی نیست.
فقط باهاش توضیح می دن که چکار قراره کنن. همین.
زبان قابل فهم برای همه برنامه نویساست. فقط جهت درک الگوریتم.
پاسکال تابع توان نداره. البته به صورت مستقیم.

anghel
سه شنبه 29 اسفند 1391, 11:16 صبح
گفتم که "در کدهای سودو"
نه در پاسکال
pseudu code یک زبان برنامه نویسی نیست.
فقط باهاش توضیح می دن که چکار قراره کنن. همین.
زبان قابل فهم برای همه برنامه نویساست. فقط جهت درک الگوریتم.
پاسکال تابع توان نداره. البته به صورت مستقیم.

بله ممنون
کدهای سودو ، جالب بود یه چیز جدید یاد گرفتم ممنون

anghel
سه شنبه 17 اردیبهشت 1392, 17:40 عصر
بالاخره تونستم پروژمو تکمیل کنم با تشکر از شما دوستان خوبم


103828