وقتي ما مي گيم return0 دقيقا چه اتفاقي مي افته؟ وقتي علامت&& رو ميذاريم بايد هر دو شرط با هم برقرار باشه؟
وقتي nright و ndown صفر شدند براي چي بايد از تابع خارج بشه؟ مگه نبايد بره خط بعدي؟
وقتي ما مي گيم return0 دقيقا چه اتفاقي مي افته؟ وقتي علامت&& رو ميذاريم بايد هر دو شرط با هم برقرار باشه؟
وقتي nright و ndown صفر شدند براي چي بايد از تابع خارج بشه؟ مگه نبايد بره خط بعدي؟
تا مرحله 6 كه اتفاق خاصي نمي افته و فقط يك R چاپ ميشه. بعدش مرحله 7 رو اجرا مي كنه يا ميره مراحل ديگه رو اجرا مي كنه بعد مياد سراغ مرحله 7؟ كلا سيستمش چه جوريه يعني بايد nright به 0 برسه بعد يره سراغ ndown يا طور ديگه اي هست؟ ما يه مثال ساده مثلا 2در2 يا 3در3 مي توني تك تك مراحل رو برام بررسي كني؟ ممنون ميشم.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
ديگه دارم قاطي مي كنم نمي دونم چرا نمي فهمم! اين بحث هم خيلي داره طولاني ميشه اگه كسي اين چيزها براش مفيد نيست بگه كه من ديگه سوال نكنم
نوشته شده توسط behdad_20 [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
سلام،
'گرچه كمك به ديگران در صورت توانائي وظيفه است ولي راه "هلو برو تو گلو" هم راه درستي نيست!
واما در مورد سوالاتت:
1-در مورد رشته، آيا طول آن معين است يا نه؟ومنظورت از نيمه چپ وراست چيست؟يعني كدام دو رشته زير مد نظر توست؟
abcddcba
يا
abcdabcd
2-در مورد برنامه دوم، يك structure تعريف كن كه شامل string (نام) ،int (شماره دانشجوئي) و float (نمره) باشد.سپس با يك حلقه اسامي،شماره دانشجوئي و نمرات آنها را دريافت كن.در حين دريافت بزرگترين نمره را در يك متغيرtemp1 نگهداري كن. پس از پايان كار،بصورت موقت، بزرگترين ركورد را حذف كن و دوباره از بقيه ماكزيمم بگير و در temp2 ذخيره كن. فقط مي ماند temp1 و temp2 را چاپ كني.
موفق باشي
از تابع خارج میشه اما نه از اولین تابع. همونطور که میدونی این کار بوسیله ی تابع های بازگشتی انجام میشه.تابع اول یک مسیر رو چاپ میکنه و دوباره خودش رو فراخوانی میکنه.دومی به همین ترتیب تا همی ی مسیر اول چاپ بشه پس تابع آخر که دئیگه مسیری برای چاپ نداره دیگه نباید خودش رو فراخونی کنه چون این مسیر تموم شده پس بدون اینکه کاری انجام بشه میاد بیرون.نوشته شده توسط amsjavan [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
Last edited by m3hrz4d; 28-11-2007 at 15:59.
تا وقتی مفهوم تابع بازگشتی رو کامل نفمیدی انتظار نداشته باش که این رو کامل درک کنی اول برو سراغ همون فاکتوریل!نوشته شده توسط amsjavan [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
--
آره اینجا من nRight رو در اولویت قرار دادم یعنی اگه امکان رفتن به سمت راست باشه اول حرکت های اون رو میره بعد میره سراخ nDown.
--
یه نگاه به این عکس بنداز .کل مسیر های یک حرکت 2 در 2 هست: i10.tinypic.com/81gw12h.jpg
فکر کنم فهمیدنش با عکس راحت باشه.هر علامت پیکان معنیش یک فراخوانی تابع توی خودش هست.
شماره هایی هم که گذاشتم ترتیب کارهاییکه که انجام میشه.
Last edited by m3hrz4d; 28-11-2007 at 15:51.
نوشته شده توسط amsjavan [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]نوشته شده توسط sherlockholmz [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]سلام به amsjavan و sherlockholmz عزیز.نوشته شده توسط amsjavan [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
خیلی ممنون از راهنمایی های شما دو دوست گل.
sherlockholmz عزیز من امروز کلاس ++C داشتم و با استادمون مشکلم را حل کردن . خیلی ممنون که من را میخواستید راهنمایی کنید . در هر صورت ببخشید . شاید من سوالم را بد پرسیدم که باعث این همه پست بیخودی شد.در هر صورت شرمنده.
خیلی آقایی.
و اما amsjavan عزیز .
من اصلا ناراحت نشدم.میگم احتمالا یه جایی از کار خودم ایراد داشت و یا سوالم را بد پرسیدم.
مشکل برنامه هم بر طرف شد . درسته که امروز نتونستم برنامه رو تحویل استاد بدم ولی در عوض از زبان خود استاد یاد گرفتم.
با 1 بار تمرین ندادن چیزی از آدم کو نمیشه.
ایشالا در برنامه های بعدی بتونی راهنماییم کنی.
خیلی چاکریم.
با تشکر.
Last edited by behdad_20; 28-11-2007 at 18:24.
در اینجا K چی هست؟ درضمن من دترمینان ماتریس را می خواستم نه ضرب دو ماتریسنوشته شده توسط amsjavan [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
دستت درد نکنه عالی بود واقعا می گم عالی بود معلومه که روش وقت گذاشتی و زحمت کشیدی. خیلی ممنون که اینقدر برای فهماندن مطلب تلاش می کنی انشا الله که بتونم جبران کنمنوشته شده توسط m3hrz4d [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
عکسی که گذاشتی خیلی درک عملکرد تابع رو ساده تر کرد اما هنوز درکش برای من سخته باید بیشتر روش فکر کنم. میشه در مورد عکس بیشتر توضیح بدی مثلا ترتیب انجام گرفتن مراحل چه جوریه؟ مثلا تو قسمت دوم مرحله ی 2 و 6 با هم انجام مشه و 6 رو تو پشته(stack) نگه میداره یا جور دیگه ای هست؟
ببخشید من اشتباه فهمیدم. فکر کردم شما ضرب دو ماتریس رو می خواینوشته شده توسط shadmehrdj [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
اونجا به جای L باید K بذاری اشتباه نوشته بودم:
فکر کنم حالا درگیر Stack نشی راحتر باشی.نوشته شده توسط amsjavan [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
صدا زدن تابع از توی خودش مثل صدا زدن یه تابع دیگه هست.مثلا اگه تابع A خود تابع A رو صدا بزنه دقیقا مسیر برنامه مثل وقتیه که ما یه تابع به اسم B داشته باشیم و توی A تابع B رو صدا بزنیم.تابع B پارامتر های خودش رو داره که تابع A موقع فراخوانی براش ارسال کرده و این ها ربطی به پارامتر های خود A ندارن.
توی این حالت چه اتفاقی می افته؟ :وقتی تابع A صدا زدن میشه کد هاش خط به خط اجرا میشه تا به فراخوانی B برسه.بعد مسیر برنامه پرش میشه به ابتدای B و کل B اجرا میشه و وقتی B تموم شد ادامه ی A اجرا میشه.درسته؟کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
حالا فرض کن یه تابع دیگه مثل C هم داشته باشیم و توی B , تابع C رو فراخوانی کنیم:
توی این حالت هم A اجرا میشه تا به فراخوانی B میرسه و مسیر برنامه میره در ابتدای B و کد های B اجرا میشن تا به فراخوانی C برسن.C اجرا میشه و بعد از اجرا شدن C مسیر برنامه به تابع B بعد از فراخوانی C برمیگرده(شماره 4) و B بقیه ی کد هاش کامل اجرا میشه تا تموم بشه و بعد مسیر برنامه به A بعد از فراخوانی B برمیگرده(شماره 5) و ادامه ی کد های A اجرا و عملیات تموم میشه.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
شکل سادش میشه:
اگه دقیقا به تابع های بازگشتی مثل تابع های جداگانه نگاه کنی قاطی نمیکنی.این مسیر توی این 3 تا تابع مثل مسیری هست که توی کد بازگشتی و شکلی که گذشتم فقط با یک تابع انجام میشه.
Last edited by m3hrz4d; 29-11-2007 at 15:43.
هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)