کد و الگوریتم مثلث خیام پاسکال به زبان c++

سلام، یکی از مسائل مهم برنامه نویسی، مسئله‌ مثلث خیام پاسکال است اکنون در این مطلب قصد داریم کد و الگوریتم مثلث خیام پاسکال به زبان c++ را به شما آموزش دهیم.

مثلث خیام پاسکال چیست؟
مثلث خیام پاسکال یک آرایش مثلثی از ضرایب بسط دو جمله ایست

روش کار بدین صورت است که مجموع مقادیر دو خانه‌ی ردیف قبل در مثلث مقدار خانه‌ی ردیف فعلی را به ما میدهد و این عمل تا بینهایت ادامه دارد.برای فهم بیشتر این قضیه به شکل زیر نگاه کنید.

کد و الگوریتم مثلث خیام پاسکال به زبان c++

ما نیز از روشی مشابه در الگوریتم خود استفاده میکنیم تا مثلث خیام پاسکال را برای نمایش تا مرحله ی nام برنامه نویسی کنیم.

در ابتدای کار سه متغیر n , s , temp از نوع int تعریف میکینم

متغیر n مرحله ای است که ما میخواهیم تا آن مرحله مثلث خیام پاسکال را رسم کنیم که از کاربر دریافت میشود،متغیر s نقطه ی شروع هر مرحله از رسم مثلث در آرایه است و در آخر که متغیر temp برای نگهداری مقدار فعلی هنگام چاپ آن است.

مشخص است که در این روش نیاز به استفاده از آرایه در برنامه خود دارم زیرا قرار دادن مقادیر در خانه ها و استفاده از آن ها برای ما مهم است. همچنین برای تکرار اعمال مشابه استفاده از دستورات تکرار(حلقه ها) ضروری است.

آرایه‌ی خود را با نام nums از نوع int و مقدار اولیه ی ۰ تعریف میکنیم و اندازه ی آرایه را یک واحد بیشتر از n درنظر میگیریم.

در این الگوریتم روش کار به این صورت است که با هر بار اجرای حلقه یک مرحله از مثلث خیام پاسکال چاپ میشود.در مرحله ی اول خانه‌ی شروع را خانه‌ی n – 1 در نظر میگیریم سپس برای چاپ مقدار هر خانه مقدار فعلی را با مقدار خانه ی بعد جمع کرده و پس از چاپ درون خانه ی قبلی میریزیم پس از اجرای هر مرحله نقطه ی شروع مرحله ی بعد را (همانطور که در شکل مشخص است) یک خانه به عقب میبریم.

در کد بالا بعدا از مشخص کردن خانه ی شروع و دادن مقدار ۱ به آن، نوبت به چاپ مثلث میرسد.کار حلقه ی اول شمارش مراحل رسم مثلث و همچنین رفتن به خط بعد، پس از اتمام هر مرحله است.حلقه ی داخلی اول فاصله های قبل از چاپ اعداد را چاپ میکند و در هر مرحله یک واحد کمتر اجرا میشود.حلقه ی داخلی دوم که حلقه ی اصلی ماست انجام عملیات کل الگوریتم را بر عهده دارد بدین صورت که برای چاپ هر یک از ضرایب مقدار خانه ی فعلی را با مقدار خانه ی بعد جمع کرده و درون متغیر temp میریزد و پس از چاپ آن مقدار را درون خانه ی فعلی میریزد تا برای مرحله ی بعد ار آن استفاده کند.این حلقه پس از هر بار اجرای کامل برای دور بعد یک واحد بیشتر اجرا میشود و تکرار آن به گام حلقه ی اصلی بستگی دارد.در آخر هم از مقدار s یک واحد کم میشود تا شروع مرحله ی قبل از یک خانه قبل صورت گیرد

نکته
تابع setw() که در کد ها به کار رفته میان ضرایب هر سطر فاصله ی یکسان قرار میدهد تا مثلث به شکلی زیبا نمایش داده شود.همچنین برای استفاده از این تابع نیاز به اضافه کردن کتابخانه ی iomanip داریم.

در آخر کد کامل شده به صورد زیرخواهد بود

مشاهده کد مثلث خیام پاسکال

و خروجی به شکل زیر خواهد بود

کد و الگوریتم مثلث خیام پاسکال به زبان c++

چاپ مثلث خیام پاسکال با استفاده از مفهوم جایگشتی (روش دوم)

در این روش برای بدست آوردن ضرایب نیاز به داشتن مقدار ضرایب مرحله ی قبل نیست بلکه مقدار هر ضریب بسته به جایگاه آن در مثلث خیام است.طبق قضیه ضرایب در مثلث خیام پاسکال به صورت زیر بدست میاید

کد و الگوریتم مثلث خیام پاسکال به زبان c++

بنابرین برای استفاد ه از این روش تنها نیاز به تابع فاکتوریل داریم که به صورت زیر پیاده سازی میشود

استفاده از حلقه ها کاملا شبیه حلقه های روش قبل است و کد این قسمت به صورت زیر است

قسمت اصلی این الگوریتم نیز مانند روش قبل حلقه ی درونی ثانویه است. در این حلقه چک میکنیم که اگر در خانه اول یا آخر مرحله بودیم مقدار یک را چاپ کنید در غیر اون صورت با استفاده از تابع فاکتوریل و مقادیر i , j فرمول ترکیب را پیاده سازی کرده و آن را چاپ میکنیم

در آخر کد ما به صورت زیر خواهد بود

مشاهده کد مثلث خیام پاسکال

همچنین
سوالات و مشکلات خود را در مورد این آموزش از طریق نظرات با ما در میان بگذارید