HW4.pdf

‫تمرین سری چهارم‬
‫تاریخ تحویل تمرین ‪ 1‬آذر‪1392‬‬
‫درس مبانی برنامهسازی‬
‫‪CE153‬‬
‫‪Sharif University of Technology‬‬
‫‪Fall 2013‬‬
‫‪1‬‬
‫توضیحات اولیه‬
‫‪ ‬آخرین مهلت تحویل تمرین‪ ،‬ساعت ‪ 23:59‬دقیقه روز جمعه‪ ،‬اول آذر ماه می‬
‫باشد‪.‬‬
‫‪ ‬بعد از اتمام زمان ارسال‪ ،‬تا ‪ 3‬روز می توانید تمرین های خود را با تاخیر ارسال‬
‫نمایید‪ .‬به ازای هر ساعت تاخیر ‪ 1%‬از نمره ی شما کسر می شود‪.‬‬
‫‪ ‬خروجی تمرین ها فقط موارد خواسته شده باشد‪.‬‬
‫‪ ‬در صورت هرگونه مشکل در خصوص تمرین‪ ،‬سواالت خود را در پیازا مطرح‬
‫کنید‪.‬‬
‫‪2‬‬
‫سوال اول‬
‫برنامهای بنویسید که ابتدا یک عدد ‪ n‬را از ورودی بخواند‪ .‬سپس به تعداد آن عدد‬
‫از ورودی عدد بخواند‪ .‬دقت کنید اعداد خوانده شده از ورودی به صورت صعودی‬
‫وارد میشوند‪ .‬حال تمام جایگشتهای مختلف این اعداد را در خروجی به ترتیبی‬
‫مشابه ترتیب لغتنامه چاپ کند‪ .‬یعنی مثال از بین دو جایگشت زیر مورد اول زودتر‬
‫چاپ میشود‪:‬‬
‫‪213‬‬
‫‪231‬‬
‫راهنمایی‪ :‬از تابع بازگشتی استفاده کنید‪.‬‬
‫‪ ‬ورودی و خروجی‬
‫در خط اول ورودی ابتدا یک عدد وارد میشود (‪ )n‬و سپس در ‪ n‬خط بعدی در‬
‫هر خط یک عدد دیگر وارد میشود‪ .‬در خروجی نیز در هر خط یکی از‬
‫جایگشتهای گفته شده چاپ میشود‪ .‬اعداد هر جایگشت نیز با ‪ space‬از هم جدا‬
‫میشوند‬
‫‪3‬‬
‫خروجی نمونه‬
‫ورودی نمونه‬
‫‪3‬‬
‫‪5‬‬
‫‪9‬‬
‫‪11‬‬
‫‪5 9 11‬‬
‫‪5 11 9‬‬
‫‪9 5 11‬‬
‫‪9 11 5‬‬
‫‪11 5 9‬‬
‫‪11 9 5‬‬
‫‪4‬‬
‫سوال دوم‬
‫‪ ‬برنامه بنویسید که حداکثر ‪ 10‬عدد حداکثر یک میلیون رقمی را از کاربر‬
‫گرفته و حاصل جمع آنها را در خروجی چاپ کند ‪.‬‬
‫‪ ‬ورودی و خروجی‪:‬‬
‫در ورودی در خط اول تعداد اعداد و در خروجی حاصل جمع را چاپ کند‪.‬‬
‫خروجی نمونه‬
‫ورودی نمونه‬
‫‪3‬‬
‫‪123‬‬
‫‪312‬‬
‫‪1‬‬
‫‪436‬‬
‫‪5‬‬
‫سوال سوم‬
‫‪ ‬برنامهای بنویسید که یک آرایه و یک عدد را از ورودی بگیرد در صورتی‬
‫که آن عدد منفی است آرایه را به اندازه آن عدد به سمت چپ دوران دهد و‬
‫در صورتی که مثبت است به اندازه آن عدد به سمت راست دوران دهد‪.‬‬
‫(‪)n<10000‬‬
‫‪ ‬ورودی و خروجی‪:‬‬
‫در خط اول تعداد اعضای آرایه(‪ ،)n‬درخط بعدی ‪ n‬عضو آرایه و در آخر‬
‫نیز عددی که مقدار و جهت دوران را نشان میدهد به عنوان ورودی گرفته‬
‫میشود‪.‬‬
‫در تنها خط خروجی آرایه دوران یافته چاپ میشود‪.‬‬
‫‪6‬‬
‫خروجی نمونه‬
‫ورودی نمونه‬
‫‪5‬‬
‫‪3 8 12 0 3‬‬
‫‪-3‬‬
‫‪0 3 3 8 12‬‬
‫‪7‬‬
‫سوال چهارم‬
‫‪ ‬بازی ‪ Tic-tac-toe‬به این صورت است که دو بازیکن به نوبت بازی میکنند و یکی در‬
‫جدول ‪ X‬قرار میدهد و دیگری ‪ O‬و تا زمانی که یکی از آنها موفق شود تمام خانههای‬
‫یک سطر یا یک ستون یا یک قطر را پرکند به بازی ادامه میدهند‪ .‬امین و مینا با یکدیگر‬
‫بازی میکنند‪ .‬امین از ‪ X‬و مینا از ‪ O‬استفاده میکند‪ .‬در این سوال به شما یک جدول نتیجه‬
‫بازی داده میشود و از شما خواسته میشود تشخیص دهید برنده بازیکن مینا است یا امین‪.‬‬
‫‪ ‬ورودی و خروجی‪:‬‬
‫در خط اول ورودی بعد جدول داده میشود (‪ )n<8‬و سپس در ‪ n‬خط هر خط شامل ‪n‬‬
‫عنصر که با ‪ space‬از هم جدا میشوند عناصر جدول داده میشود‪ .‬عناصر ورودی به یکی‬
‫از حالتهای زیر است‪ X( X, O, N :‬نشانه امین‪ O ،‬نشانه مینا و ‪ N‬یعنی بازی پیش از پر‬
‫شدن این خانه تمام شده است و این خانه خالی است )‬
‫در خروجی باید یکی از این ‪ 3‬حالت چاپ شود‪:‬‬
‫‪Amin won.‬‬
‫‪Mina won.‬‬
‫‪Tie.‬‬
‫‪8‬‬
‫خروجی نمونه‬
‫ورودی نمونه‬
‫‪3‬‬
‫‪NOO‬‬
‫‪NXO‬‬
‫‪XXX‬‬
‫‪Amin won.‬‬
‫‪9‬‬
‫سوال امتیازی‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫ترور‬
‫تعدادی جنایتکار که قرار است توسط تیر انداز هایی ترور شوند در یک ردیف می ایستند‬
‫سپس برای هر تیرانداز بازه ای مشخص می شود و او جنایتکار های موجود در ان بازه را‬
‫ترور می کند‪ .‬دکتر هایی هم موجودند که بعد از ترور بازه ای به هرکدام داده می شود و‬
‫جنایتکار های ترور شده در ان بازه را درمان میکنند تا زنده بمانند‪.‬‬
‫برنامه ای بنویسید که پس از ترور جنایتکار ها شماره جنایتکارهایی را که زنده مانده اند را‬
‫بدهد‪:‬‬
‫برنامه شما باید ابتدا تعداد جنایتکار ها را بگیرد سپس تعداد تیرانداز ها را بگیرد و به ازای‬
‫هر تیرانداز یک بازه بگیرد بعد تعداد دکتر ها و سپس به ازای هر دکتر نیز یک بازه بگیرد و‬
‫به عنوان خروجی مکان ایستادن جنایتکار هایی که زنده هستند را بدهد‬
‫توجه کنید که حداکثر تعداد دکتر ها یا تیرانداز ها ‪ 1000000‬می باشد‬
‫‪10‬‬
‫خروجی نمونه‬
‫ورودی نمونه‬
‫‪4‬‬
‫‪2‬‬
‫‪01‬‬
‫‪23‬‬
‫‪1‬‬
‫‪23‬‬
‫ورودی نمونه‬
‫‪23‬‬
‫خروجی نمونه‬
‫‪6‬‬
‫‪01‬‬
‫‪34‬‬
‫‪2‬‬
‫‪02‬‬
‫‪45‬‬
‫‪01245‬‬
‫‪11‬‬