سلام به عزیزان همراه
طبق روالی که در پیش گرفتیم تا به حال دو مثال کاربردی و خوب رو از کدهای متلب در دو پست گذشته باهم بررسی کردیم. تا به حال بدست آوردن مقدار سینوس زاویه از روی بسط تیلور و همچنین بدست آوردن جملهی nام دنبالهی فیبوناچی رو باهم بررسی کردیم.
توی پرانتز:
علت اینکه با مثال پیش میبریم آموزشها رو اینه که اگر ما بخوایم توابع رو دونه دونه و از پایه توضیح بدیم، روند آموزش بسیار طولانی میشه و شاید هرگز به این مقدار کاربردی نباشه. توی مثالها توضیحات به حدی کافی هستند که شما بتونید از توابعی که به کار رفته در برنامههای خاص خودتون استفاده کنید.
در این پست سعی دارم تا روش مقلوب کردن اعداد رو با استفاده از دستورات متلب به شما یاد بدم. اما مقلوب یعنی چه؟ به مثال زیر دقت کنید:
فرض کنید ما یک عدد ۶ رقمی مشابه عدد زیر داریم:
۱۲۳۴۵۶
و اگر این عدد رو مقلوب کنیم:
۶۵۴۳۲۱
به همین سادگی! یعنی ارقام این عدد شش رقمی رو برعکس ردیف کنیم!
حالا برای این کار میشه به سادگی از کدهای زیر استفاده کرد:
clc; clear all; x=input('insert your number: '); m=mod(x,10); while(1) x=floor(x/10); m=mod(x,10)+(10*m); if floor(x/10)==0 out=['the inverse is equal to: ',num2str(m)]; disp(out); break; end end
خطوط اول و دوم که مطابق توضیحات
قبلی مربوط به تمیز کردن command prompt و workspace هستند.
در خط سوم ما با دستور input عددی رو که کاربر مایل به مقلوب کردنش هست رو دریافت میکنیم و اون رو توی متغیر x ذخیره میکنیم.
متغیر m در واقع جایی هست که ما تغییرات رو در اون انجام میدیم و در نهایت مقدار عدد نهای رو از طریق این متغیر توی خروجی تحویل میدیم.
برای اینکه رقم یکان رو از عدد ورودی جدا کنیم از دستور mod استفاده میکنیم. این یعنی x رو بر 10 تقسیم کن و بعد، باقیماندهی این تقسیم رو در m قرار بده.
مطابق دو برنامهی قبلی که نوشتنش رو تمرین کردیم، اینجا هم برای انجام کار توسط سیستم به یک حلقه و یک شرط توقف احتیاج داریم. چرا حلقه؟ فرض کنید عدد وارد شده 14 رقمی! باشه. اون وقت علت وجود حلقه رو شاید بهتر بشه درک کرد!
در اولین دستور داخل حلقه، دستوری که با floor مشخص شده خروجی حاصل تقسیم عدد ورودی بر ۱۰ رو به سمت پایین گرد میکنه تا مقدار اعشار رو از انتهای این عدد بندازه. به مثال زیر توجه کنید:
5423 >> 5423/10 >> 542.3 >> floor(542.3)=542
قبل از ورود به حلقه به سادگی رقم یکان رو جدا کردیم. این مقدار حالا با ارزشترین رقمیه که در اختیار داریم. از طرفی عدد جدید رو با استفاده از اولین خط دستور درون حلقه تشکیل دادیم. با تکرار دستوری که خارج از حلقه نوشته شده بود، و کمارزشترین رقم اون عدد رو برای ما جدا میکرد، میتونیم رقم بعدی رو از عدد اصلی جدا کنیم. کافیه پر ارزشترین رقمی که در اختیار داریم، یا یکان رو با ضرب کردنش در عدد 10 یک جایگاه بالاتر ببریم و با رقم بعدی که بدست آوردیم جمع کنیم! با این کار به سادگی دو رقم از سمت راست عدد اصلی جدا کردیم و به صورت برعکس نوشتیمشون!
میتونید بگید در تکرار بعدی حلقه چه اتفاقی میافته؟!
بله! رقم بعدی از عدد اصلی جدا میشه و کنار m مینشینه! به همین ظرافت.
شرط توقفی که برای این تکرار تعیین کردیم اینه که اون عدد گرد شدهی رو به پایین دیگه بشه صفر! و در واقع بعد از اون هیچ رقم دیگری وجود نداشته باشه. چرا؟! (کامنت کنید)
برای نمایش خروجی هم از دستور disp استفاده میکنیم.
موافق این آموزش بودید؟!
اگر این آموزش و آموزشهای قبلی رو مفید میدونید، ما رو به دوستان خودتون و کسانی که فکر میکنید این مطالب بدردشون میخوره معرفی کنید.
فایل کدها بزودی روی سایت قرار میگیره.
درباره این سایت