HW4.pdf

‫تمرین سری چهارم‬
‫تاریخ تحویل تمرین ‪ 1‬آذر ‪1392‬‬
‫درس مبانی برنامهسازی‬
‫‪CE153‬‬
‫‪Sharif University of Technology‬‬
‫‪Fall 2013‬‬
‫‪1‬‬
‫توضیحات اولیه‬
‫‪ ‬آخرین مهلت تحویل تمرین‪ ،‬ساعت ‪ 23:59‬دقیقه روز جمعه‪ ،‬اول آذر ماه می‬
‫باشد‪.‬‬
‫‪ ‬بعد از اتمام زمان ارسال‪ ،‬تا ‪ 3‬روز می توانید تمرین های خود را با تاخیر ارسال‬
‫نمایید‪ .‬به ازای هر ساعت تاخیر ‪ 1%‬از نمره ی شما کسر می شود‪.‬‬
‫‪ ‬خروجی تمرین ها فقط موارد خواسته شده باشد‪.‬‬
‫‪ ‬در صورت هرگونه مشکل در خصوص تمرین‪ ،‬سواالت خود را در پیازا مطرح‬
‫کنید‪.‬‬
‫‪2‬‬
‫سوال اول‬
‫‪ ‬برنامهای بنویسید که در هر مرحله یک عدد را از ورودی دریافت کند و تا‬
‫زمانی که رقم ‪ 0‬وارد نشده به کار خود ادامه دهد‪ .‬پس از وارد شدن رقم ‪0‬‬
‫این برنامه باید اعداد وارد شده را به صورت برعکس ترتیب وارد شدن چاپ‬
‫نماید‪.‬‬
‫دقت کنید باید یک بار این برنامه را با استفاده از آرایه و یک بار بدون‬
‫استفاده از آرایه و به وسیله تابع بازگشتی پیادهسازی کنید‪.‬‬
‫‪ ‬ورودی و خروجی‪:‬‬
‫در ورودی در هر خط یک عدد وارد میشود و در خروجی نیز در هر خط‬
‫یک عدد چاپ میشود‪.‬‬
‫‪3‬‬
‫خروجی نمونه‬
‫ورودی نمونه‬
‫‪3‬‬
‫‪4‬‬
‫‪7‬‬
‫‪4‬‬
‫‪9‬‬
‫‪.‬‬
‫‪9‬‬
‫‪4‬‬
‫‪7‬‬
‫‪4‬‬
‫‪3‬‬
‫‪4‬‬
‫سوال دوم‬
‫‪ ‬بازی ‪ minesweeper‬به این صورت است که از یک جدول ‪ m*n‬ساخته‬
‫شده است که بعضی از خانههای آن بمب هستند و سایر خانهها تعداد‬
‫بمبهایی را که در ‪ 8‬خانه مجاور آنها قرار دارد‪ ،‬نشان میدهند‪ .‬در این سوال‬
‫خانههای حاوی بمب به شما داده میشود و از شما میخواهیم مقدار سایر‬
‫خانههای جدول را چاپ کنید‪(m , n <100) .‬‬
‫‪ ‬ابتدا به ترتیب ‪( m‬شماره سطر) و ‪( n‬شماره ستون) از ورودی خوانده میشود‬
‫و سپس یک عدد ‪ k‬که تعداد بمبهای واقع در جدول را نشان میدهد‪ .‬در‬
‫نهایت ‪ k‬زوج عدد که مکان بمبها را نشان میدهند‪( .‬در هر زوج ابتدا‬
‫شماره سطر و سپس ستون مربوطه نمایش داده میشود)‬
‫در خروجی جدول را کامل نشان دهید به این صورت که به ازای بمبها‬
‫نماد * را چاپ کنید و سایر خانههای جدول نیز عدد متناظر را چاپ کنید‪.‬‬
‫‪5‬‬
‫خروجی نمونه‬
‫ورودی نمونه‬
‫‪43‬‬
‫‪5‬‬
‫‪11‬‬
‫‪42‬‬
‫‪13‬‬
‫‪32‬‬
‫‪43‬‬
‫*‪*2‬‬
‫‪211‬‬
‫‪2*3‬‬
‫**‪2‬‬
‫‪6‬‬
‫سوال سوم‬
‫‪ ‬برای یک آرایه از اعداد بزرگترین عدد ‪ n‬را پیدا کنید به طوری که حداقل‬
‫‪ n‬عضو از آرایه بزرگتر از آن باشند‪ .‬توجه داشته باشید که آرایه نامرتب‬
‫است‪.‬‬
‫‪ ‬ورودی خروجی‪:‬‬
‫در خط اول تعداد اعضای آرایه خوانده میشود و سپس به همان اندازه عنصر‬
‫آرایه از ورودی گرفته میشود‪ .‬در خروجی عدد ‪ n‬چاپ میشود‪.‬‬
‫‪7‬‬
‫خروجی نمونه‬
‫ورودی نمونه‬
‫‪6‬‬
‫‪5 10 8 1 7 2‬‬
‫‪4‬‬
‫‪8‬‬
‫سوال چهارم‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫برنامه بنویسید که با گرفتن یک ماتریس و سپس گرفتن ‪ 2‬عدد که اولی شماره‬
‫یک سطر و دومی شماره یک ستون می باشد جای این سطر و سطون را عوض کند‬
‫یعنی سطر مورد نظر به جای ستون مورد نطر قرار می گیرد و بالعکس‪.‬‬
‫برنامه شما باید به گونه ای باشد که در ابتدا ‪ 2‬عدد میگیرد که به ترتیب تعداد سطره‬
‫و تعداد ستون های ماتریس است‪ .‬سپس اعضای ماتریس را می گیرد و در اخر دو‬
‫عدد می گیرد که به ترتیب سطر مورد نظر و دومی ستون مورد نظر است که قرار‬
‫است با هم جا بجا شوند‪ .‬و به عنوان خروجی ماتریس حاصل را چاپ کند‪.‬‬
‫توجه کنید که اگر تعداد اعضای سطر انتخاب شده از تعداد اعضای ستون انتخاب‬
‫شده کمتر باشد خانه های باقیماند ه را ‪ 0‬قرار دهید‪ .‬و اگر بیشتر بود خانه های‬
‫اضافی حذف می شوند‪ .‬و بالعکس‬
‫همچنین عدد تالقی سطر و ستون را ‪ 0‬قرار دهید‬
‫‪9‬‬
‫خروجی نمونه‬
‫ورودی نمونه‬
‫‪44‬‬
‫‪1234‬‬
‫‪4567‬‬
‫‪8912‬‬
‫‪4321‬‬
‫‪32‬‬
‫ورودی نمونه‬
‫‪1834‬‬
‫‪4967‬‬
‫‪2093‬‬
‫‪4221‬‬
‫خروجی نمونه‬
‫‪23‬‬
‫‪123‬‬
‫‪345‬‬
‫‪13‬‬
‫‪350‬‬
‫‪342‬‬
‫‪10‬‬
‫سوال امتیازی‬
‫‪ ‬سه میله داریم و تعدادی حلقه قرمز و آبی ‪ :‬بر روی هر حلقه عددی درج است ‪،‬‬
‫می خواهیم این حلقه ها را طوری درون این سه میله قرار دهیم که ‪ :‬هیچ یک از دو‬
‫حلقه ای که روی هم قرار می گیرند هم رنگ نباشند ‪ ،‬و از طرفی شماره ی میله ها‬
‫به ترتیب نزولی (از پایین به باال کم شود)‪ ،‬برنامه ای بنویسید که با دریافت یک‬
‫عدد به عنوان تعداد حلقه ها ‪ ،‬همین تعداد حلقه از ورودی دریافت کند ‪ (،‬ورودی‬
‫داده شده برای هر حلقه عددی است که با ارزش ترین رقم آن ‪ 1‬یا ‪ 2‬است که اگر‬
‫‪ 1‬بود یعنی حلقه قرمز و اگر ‪ 2‬بود حلقه آبی است و در ادامه باقی رقم های عدد ‪،‬‬
‫همان عدد درج شده به روی حلقه است) و در خروجی سه حلقه باالیی میله ها را به‬
‫ترتیب شماره روی آنها از کوچک به بزرگ برگرداند و اگر میله خالی بود مقدار‬
‫‪ 1‬را چاپ کند ‪ ( .‬فرض کنید اعداد داده شده در ورودی طوری باشد که در‬‫نهایت حلقه ای بدون میله نخواهد ماند)‬
‫‪ ‬نکته‪ :‬در صورتی که می توانید عددی را روی دو میله قرار دهید اولویت با میله ای‬
‫است که عدد حلقه باالیی آن مقدار بیشتری دارد‪.‬‬
‫‪11‬‬
‫خروجی نمونه‬
‫ورودی نمونه‬
‫‪6‬‬
‫‪10‬‬
‫‪25‬‬
‫‪21‬‬
‫‪11‬‬
‫‪13‬‬
‫‪20‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪12‬‬