PDA

نسخه کامل مشاهده نسخه کامل : درخواست ارائه يك روش كلي براي حل چند مساله ساده..



behnam_tr
03-03-2008, 18:09
با سلام...

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]>لطفا روشهايي رو(الگوريتم) براي حل اين مسائل بگيد كه فقط از ضرب و تقسم و باقيمانده و خارج قسمت استفاده شود(البته يك حالت كلي).<=======


=====>مسائل:

1-مشخص كردن اينكه يك عدد كامل است يا نه(عددي كامل است كه مجموع مقسوم عليه هاي آن برابر با خود عدد باشد...متال:عدد 6)

2-مشخص كردن اينكه يك عدد اول است يا نه؟

3-به توان رساندن يك عدد به توان عدد ديگر

a=2 ,b=3 ===>2^3=8
مثلا از روش ديگري به غير از اين روش براي حل اين مسئله استفاده كنيم كه البته در حالت كلي برقرار باشد.....

4-بدست آوردن مغلوب يك عدد...مثال:12===21

5-بخش پذيري يك عدد بر 3

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]با تشكر ....

mehdi_7070
03-03-2008, 22:22
من اینها را اول سال برای درس "مبانی علم رایانه" نوشتم . نمی دونم منظور شما همین ها بوده یا نه؟

1. مشخص کردن اینکه یک عدد کامل (تام) است یا نه
1- شروع
2- يك عدد را بگير (N)
3- P=0
4- T=1
5- اگر باقي مانده N/T برابر صفر بود ، سپس P=P+T
6- T=T+1
7- اگر T<N به مرحله 5 برو
8- اگر P=N بود ، چاپ كن «تام است» و برو به پایان
9- چاپ كن «تام نيست»
10- پايان

2. مشخص کردن اینکه یک عدد اول است یا نه
1- شروع
2- يك عدد را بگير (N)
3- I=2
4- اگر باقي مانده N/I برابر صفر بود چاپ كن « اول نيست» و به مرحله 9 برو
5- I=I+1
6- اگر I<N است به مرحله 4 برو
7- چاپ كن «اول است»
8- پايان

3. این الگوریتم مقدار M را به توان N می رساند .
1- شروع
2- M,N را بخوان
3- I=1 , S=1
4- S=S*M , N=N-1
5. اگر N=1 برو به مرحله 8
6- I=I+1 و برو به مرحله 4
7- S را چاپ کن
8- پایان

4. مقلوب یک عدد
برای این من کد VB نوشتم . باید خودت به الگوریتم تبدیل کنی . بدردت میخوره؟

5. بخش پذیری یک عدد بر 3
خوب از طریق باقی مانده می تونید این کار را انجام بدهید (Mod) . یعنی یک عدد را بگیرد ، اگر باقی مانده تقسیم این عدد بر 3 برابر صفر بود ، بر 3 بخش پذیر هست .

behnam_tr
03-03-2008, 22:32
من اینها را اول سال برای درس "مبانی علم رایانه" نوشتم . نمی دونم منظور شما همین ها بوده یا نه؟

4. مقلوب یک عدد
برای این من کد VB نوشتم . باید خودت به الگوریتم تبدیل کنی . بدردت میخوره؟

.
:10:ايول آقا مهدي گل كاشتي بله دقيقا منظورم همين بود...
در مورد مسئله 5 كد يا الگوريتم رو (فرقي نمي كنه ) براي زبان پاسكال ميخام...

:11::11:واقعا مرسي

behnam_tr
03-03-2008, 22:53
:10:آقا مهدي اگه فلوچارتشون رو هم ميذاشتي عالي ميشد....(البته اگه امكانش هست)

mehdi_7070
04-03-2008, 14:40
خواهش می کنم دوست عزیز ...
این هم موارد باقی مانده :

4. چاپ مقلوب یک عدد
کد VB که گفتم . خودت دیگه باید به الگوریتم تبدیل بکنی .

Dim a As Double
Dim d As Integer
a = Val(Text1.Text)
While a <> 0
d = a Mod 10
Text2.Text = Text2.Text & d
a = (a - d) / 10
Wend


5. بخش پذیری بر 3
1- شروع
2- یک عدد را بگیر (N)
3- اگر باقی مانده تقسیم N بر 3 برابر 0 بود چاپ کن "بخش پذیر است" و برو به پایان
4- چاپ کن "بخش پذیر نیست"
5- پایان

در مورد فلوچارت هم که رسم اون از روی الگوریتم ساده هست :)

behnam_tr
08-03-2008, 13:11
:41:اقا مهدي ميشه براي مسائل 1 و 2 و3 مثال عددي بزني آخه هر كاري كردم جور درنيومد...

:11:خواهش ميكنم راهنمايي كن واسه امروز لازم دارم....

mehdi_7070
08-03-2008, 14:46
الگوریتم های 1 و 2 را یک قسمتی اش را تصحیح کردم . با این تغییرات ببینید درست شده یا نه .
برای شماره 3 کد وی بی نوشتم .
برای شماره 4 هم یک الگوریتم گذاشتم ، ولی تست نکردم .

شماره 1 :
4- T=1

شماره 2 :
4- اگر باقي مانده N/I برابر صفر بود چاپ كن « اول نيست» و به مرحله 9 برو

شماره 3 :
من کد وی بی اش را براتون نوشتم . خودتون به الگوریتم تبدیل کنید .
m = InputBox("Enter M")
n = InputBox("Enter N")
s = 1
For i = 1 To n
s = m * s
Next i
Print s

این احتمالا برای چاپ مقلوب یک عدد جواب بده . یک امتحانی بکن :
1- شروع
2- یک عدد را بگیر (X)
3- I=X mod 10
4- I را چاپ کن
5- X=INT(X/10)
6- اگر P>0 بود به مرحله 2 برگرد
7- پایان

K A R I M I
08-03-2008, 15:11
با اجازه آقا مهدی من برنامه ها رو به زبان پاسکال برای این دوستمون بنویسم ( اگه وقت کنم ! ) ،
این اولیش برای اینکه مشخص کنه عدد کامله یا نه :


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

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اینم دومی برای اینکه مشخص کنه عدد اول هست یا نه :


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

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


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

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
چهرمین برنامه هم برای بخش پذیری یک عدد برای 3 :


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

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اینم آخرین برنامه برای عوض کردن ارقام عدد و مغلوب کردن آن:


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

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

mehdi_7070
08-03-2008, 16:58
من الگوریتم ها را توی VB پیاده سازی کردم و درست بود (با آخرین تغییرات که براتون گذاشتم)

ظاهرا دیگه مشکلتون کاملا حل شد! چون K A R I M I ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]) عزیز براتون سورس پاسکال هم گذاشت .

behnam_tr
08-03-2008, 21:50
مرسي كريمي جان...

فقط يه مشكلي هست اونم اينكه بايد مسائل فقط از طريق عمليات چهارگانه و باقي مانده و خارج قسمت حل شوند
يعني در نوشتن برنامه نبايد از حلقه هاي تكرار و توابع رياضي استفاده شود.

مثلا براي بخش پذيري يك عدد بر 3 بايد از روش مجموع ارقام (بايد مجموع ارقام بر سه بخش پذير باشد) استفاده كنيم
يعني اول بايد يه كاري كنيم كه ارقام رو از عدد اصلي جدا كنيم و بعد با هم جمع كنيم حال اگر حاصل بر 3 بخش پذير باشد اين عدد هم بر 3 بخش پذير است.

K A R I M I
09-03-2008, 10:07
سلام
بهنام جان این حلقه ها برنامه رو کوچکتر و خوندنش رو راحت تر می کنند ، شما اگر به الگوی من نگاه کنید و با یکمی تلاش می تونید از دستور if,else به جای حلقه ها استفاده کنید که یه کم برنامه بزرگتر میشه و امکان خطا بیشتر ...
اون بخشپذیری بر 3 که من از حلقه استفاده نکردم ؟
فقط گفتم عدد رو بگیر
اگر باقیمانده تقسیمش بر 3 شد صفر
بنویس ok
وگرنه بنویس nokey
فقط از اعمال پهار گانه استفاده شده ...
این برنامه هم برای بخشپذیری بر 3 از روش جمع مجموع ارقام و بدون استفاده از حلقه ها که یه کم لقمه رو دور سرمون در حقیقت چرخوندیم ( اون تیکه آخرش رو که با قرمز مشخص کردم خودم برای زیبایی برنامه اضافه کردم که خودت میتونی حذفش کنی ...)


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

_Mohsen_
21-03-2008, 02:32
خوب تمام جوابهايي كه دوست خوبم K R I M I داد قبول اما ... اما .... اصلاً به تمان رسوندن 2 عددو درك مي كني ؟ اقا اگه b عدد طبيعي باشه a^bا يعني a رو b بار در خودش ضرب كن اگه b عدد گيا مثل m/n باشه به صورت ريشه nام a^m تعريف مي كنيم، بماند حالا ريشه Nام يعني چي امما شما چي تعريفي واسه توان غير گوياي يه عد حقيقي داري؟ واقعاً مي توني بدون احضار هيچ تايع از پيش تعريف شدهايي تو يه زبان برنامه نويسي صرفاً با 4 عمل اصلي ريشه غير گوياي يه عدد حقيقي رو حساب كني ؟ من كه خيلي مشطاقم نظرتو در اين باره بدونم.

behnam_tr
21-03-2008, 10:27
من که با یه مثال کنترل کردم درست دراومد حالا تو مشکالت کجاست