AS2.pdf

‫به نام یزدان پاک‬
‫درس ‪ 9‬مبانی برنامهسازی – گروه ‪)04259( 1‬‬
‫مدرس ‪ 9‬امید جعفری نژاد‬
‫تمرین سری دوم‬
‫آخرین مهلت ارسال‪ 9‬چهارشنبه ‪ 12‬فروردین ساعت ‪19953‬‬
‫نکات کلی ‪:‬‬
‫‪ ‬هدف این تمرین آشنایی با حلقه های تکرار است‪.‬‬
‫‪ ‬پاسخهای خود را در سیستم داوری آنالین و حداکثر تا ‪ ،2931/2/12‬ساعت ‪ 19953‬آپلود کنید‪.‬‬
‫‪ ‬در تمرینهای برنامهنویسی‪ ،‬گذاشتن کامنت نمرهی اضافی دارد‪.‬‬
‫‪ ‬به ازای هر ساعت تاخیر‪ 5 ،‬درصد از نمره کسر خواهد شد(تا ‪ 6‬ساعت)‪ .‬تاخیر بیش از ‪ 6‬ساعت تا یک روز‬
‫‪ 04‬درصد نمره را کسر خواهد نمود و تاخیر دو روز ‪ 64‬درصد نمره را‪ .‬تاخیر بیش از دو روز قابل قبول‬
‫نیست و نمرهای تعلق نخواهد گرفت‪.‬‬
‫‪ ‬زبان مورد نظر برای این سری‪ ،‬زبان ‪ C‬است نه ‪ . C++‬طبیعتا به کسانی که به زبان ‪ C‬کد نزنند نمرهای‬
‫تعلق نخواهد گرفت‪.‬‬
‫‪ ‬برای تست برنامههای خودتان‪ ،‬میتوانید از دستور)”‪ system(“pause‬در انتهای برنامههایتان استفاده‬
‫کنید اما اکیدا تذکر میدهیم که این دستور را قبل از فرستادن‪ ،‬از آخر همهی برنامههایتان پاک کنید‪.‬‬
‫‪ ‬سیستم تصحیح این تمرین به صورت خودکار و آنالین است‪ .‬لذا برنامهی شما در همان لحظه در سیستم‬
‫‪ online judge‬تصحیح خواهد شد‪ .‬پس حتما نکات گفتهشده را رعایت فرمایید تا به مشکلی برنخورید‪.‬‬
‫‪ ‬مسلم است که همفکری با بقیه دانشجویان ایرادی ندارد ولی هرگونه کپیبرداری چه از سایر دوستان و یا‬
‫از کدهای آماده در اینترنت تخلف محسوب میشود و نمرهای تعلق نخواهد گرفت و با متخلفین برخورد‬
‫خواهد شد‪ .‬این برخورد شامل تقلبدهنده و تقلبگیرنده خواهد بود (شدید!!!)‪.‬‬
‫‪ ‬قطع بودن اینترنت خوابگاه‪ ،‬کندی اینترنت‪ ،‬تمام شدن کارت و ‪ ...‬به هیچ وجه دالیل موجهی نیستند‪.‬‬
‫بنابراین پیشنهاد میکنیم تمارین خود را کمی زودتر ارسال کنید تا به مشکل برنخورید‪.‬‬
‫‪ ‬سواالت خود را در ‪ piazza‬مطرح کنید‪.‬‬
‫مزایده (‪ 95( )Auction.c‬نمره)‬
‫شهرداری تهران به دلیل کمبود بودجه تصمیم گرفته است برخی از جرثقیل های خود را به مزایده بگذارد ‪.‬‬
‫قوانین مزایده ‪:‬‬
‫‪ .2‬در صورت این که قدر مطلق اختالف قیمت پیشنهادی‬
‫از قیمتی که شهرداری تعیین کرده است بیش تر از‬
‫‪ 24‬درصد قیمت شهرداری باشد این شرکت کننده از‬
‫مزایده حذف می شود‪.‬‬
‫‪ .1‬قیمت های پیشنهادی هر شرکت کننده باید مضرب‬
‫صحیح و مثبتی از یک میلیون باشد‪.‬‬
‫‪ .9‬برنده ی مزایده کسی است که قیمت پیشنهادی آن از‬
‫بقیه ی شرکت کنندگان بیش تر باشد‪ .‬در صورتی که‬
‫بیش از یک نفر برنده ی مزایده شدند‪ ،‬مزایده بی نتیجه اعالم می شود‪.‬‬
‫شهرداری در این مسیر با مشکلی مواجه شده است ‪ .‬آن ها به دنبال برنامه ای هستند که در این امر کمکشان کند‪ .‬این برنامه در‬
‫ابتدا قیمت جرثقیل مورد نظر را می گیرد ‪ .‬بعد تعداد شرکت کنندگان در مزایده را می گیرد ‪ .‬بعد به ترتیب در هر خط ابتدا‬
‫شناسه شرکت کننده(که یک عدد صحیح متمایز از بقیه) و قیمت پیشنهادی او را می گیرد‪ .‬در انتها این برنامه در صورت وجود‬
‫داشتن برنده شناسه ی برنده ی مزایده را چاپ می کند و در غیر این صورت عبارت ”!‪ “Auction will be held again‬را‬
‫چاپ می کند‪.‬‬
‫مثال ‪9‬‬
‫ورودی‬
‫خروجی‬
‫‪11122‬‬
‫شماره مثال‬
‫‪2 100‬‬
‫‪5‬‬
‫‪9010 102‬‬
‫‪9011 101‬‬
‫‪9012 102‬‬
‫‪5030 112‬‬
‫‪11122 109‬‬
1 80
5
9010 84
9011 84
1024 89
1532 78
11122 83
3 80
4
9010 89
2030 71
40502 90
40500 88
Auction will be held again!
40500
‫کشور ‪-n‬منگولیا (‪ 94()Mangoolia.c‬نمره)‬
‫کشور ‪–n‬مَنگولیا کشوری است که ‪ n‬شهر با شماره های ‪ 2‬تا ‪ n‬دارد‪ .‬در این کشور از شهر شماره ی ‪ i‬به شهر شماره ی ‪ j‬جاده‬
‫ای(یک طرفه) وجود دارد اگر و تنها اگر ‪ j‬بر ‪ i‬بخش پذیر و نابرابر با ‪ i‬باشد‪ .‬شهری از این کشور را مَنگولیسم می نامیم اگر و‬
‫تنها اگر تعداد جاده هایی (ورودی و خروجی) که به این شهر متصل است برابر عددی اول باشد‪ .‬یکی از شاخصه های کشور –‬
‫‪ n‬مَنگولیا تعداد شهرهای مَنگولیسم آن است که عدد مَنگول نامیده می شود‪ .‬هدف ما در این تمرین این است که شما عدد‬
‫مَنگول یک کشور ‪–n‬مَنگولیا را محاسبه کنید‪ .‬برنامه ی شما تعداد شهرهای کشور یا همان‪ n‬را می گیرد و باید عدد مَنگول را‬
‫محاسبه و چاپ کند‪.‬‬
‫مثال ‪9‬‬
‫ورودی‬
‫خروجی‬
‫شماره مثال‬
‫‪1‬‬
‫‪2 9‬‬
‫‪8‬‬
‫‪1 24‬‬
‫‪25‬‬
‫‪9 244‬‬
‫میانگین (‪ 14( )Average.c‬نمره)‬
‫در این تمرین شما باید میانگین اعدادی که کاربر وارد می کند را محاسبه کنید و چاپ کنید ‪ .‬در هر خط کاربر یک عدد وارد می‬
‫کند که در صورت مثبت بودن برای ما قابل قبول است ‪ .‬تعداد اعدادی که کاربر وارد می کند معلوم نیست اما می دانیم که اگر‬
‫کاربر عدد ‪ 4‬را وارد کرد یعنی دیگر عددی به برنامه نمی دهد و برنامه باید میانگین اعداد مطلوبی که تا این لحظه گرفته است‬
‫محاسبه کند و چاپ کند‪.‬‬
‫توجه ‪9‬‬
‫‪ .2‬اعداد وارد شده طبیعی هستند اما خروجی لزوما عددی طبیعی نیست‪.‬‬
‫‪ .1‬اگر به هر دلیلی تعداد عدد های مطلوب وارد شده برابر ‪ 4‬بود باید عبارت ” !‪ “No Number‬چاپ شود‪.‬‬
‫مثال ‪9‬‬
‫ورودی‬
‫خروجی‬
‫شماره مثال‬
‫‪3333333‬‬
‫‪2 1‬‬
‫‪9‬‬
‫‪5‬‬
‫‪-2‬‬
‫‪-1‬‬
‫‪4‬‬
‫‪7‬‬
‫‪1 6‬‬
‫‪1‬‬
‫‪-1‬‬
‫‪29‬‬
‫‪4‬‬
‫!‪No Number‬‬
‫‪9 -1‬‬
‫‪-9‬‬
‫‪-0‬‬
‫‪4‬‬
‫آزمون صفر شماری (‪ 25( )Zeroes.c‬نمره)‬
‫همه ساله روز ‪ 92‬اسفند شریفی ها به انجام آیین "صفر شماری" می پردازند‪ .‬در این آیین مقدس یک عدد بزرگ (مثال !‪)244‬‬
‫داده می شود و بقیه شروع به شمردن تعداد صفرهای سمت راست این عدد می نمایند‪ .‬هدف شما نوشتن برنامه ایست که بشمارد‬
‫عدد !‪ n‬به چه تعداد صفر ختم می شود‪.‬‬
‫مثال ‪9‬‬
‫ورودی‬
‫خروجی‬
‫شماره مثال‬
‫‪1‬‬
‫‪2 6‬‬
‫‪5‬‬
‫‪1 24‬‬
‫‪6‬‬
‫‪9 16‬‬
‫مثلثات (‪ 14( )Trigonometry.c‬نمره) (نمره اضافی)‬
‫برنامه ای بنویسید که عدد اعشاری ‪ X‬و عدد صحیح ‪ n‬را از ورودی خوانده‪ ،‬در صورتی که ‪ n‬صفر بود سینوس ‪ x‬و در غیر این‬
‫صورت کسینوس ‪ x‬را نمایش دهد‪ .‬برای محاسبه ی سینوس و کسینوس از سری های تیلور استفاده کنید‪ .‬اعداد را تا دقت ‪0‬‬
‫رقم اعشار محاسبه و چاپ کنید‪.‬‬
‫بسط تیلور ‪9‬‬
‫) (‬
‫) (‬
‫{‬
‫مثال ‪9‬‬
‫ورودی‬
‫خروجی‬
‫شماره مثال‬
‫‪.377.6‬‬
‫‪2 4403‬‬
‫‪4‬‬
‫‪.371.0‬‬
‫‪1 44.0‬‬
‫‪2‬‬
‫‪.30223‬‬
‫‪9 449‬‬
‫‪2‬‬
‫موفق باشید و خوش ‪‬‬