تمرین سری سوم درس مبانی برنامهسازی )ترم بهار (۱۳۸۷ مهلت ارسال :جمعه ۱۷خرداد ۱۳۸۷ فهرست آیدین نصیریشرق )(aideen@gmail.com مقدمه 1 ................................................................. نحوه ارسال 1 .............................................................. آدرس ارسال 1 ............................................................. عنوان ایمیل 2 .............................................................. پیوست ایمیل 2 ............................................................. مهلت ارسال 3 .............................................................. نحوه نمرهدهی به برنامه 3 ........................................................ نکات آخر 3 ............................................................... تمرین اول :صحافی کتاب ) ۲۰نمره( 4 ................................................ تمرین دوم :روبات و جواهرات گمشده ) ۲۰نمره( 5 .......................................... تمرین سوم :بزرگترین کشور ) ۳۰نمره( 6 .............................................. تمرین چهارم :جمع اعداد خیلی بزرگ! ) ۳۰نمره( 7 ......................................... تمرین سری سوم درس مبانی برنامهسازی )ترم بهار (۱۳۸۷ مهلت ارسال :جمعه ۱۷خرداد ۱۳۸۷ مقدمه در این فایل اوّلین سری تمرینهای برنامهسازی شما )دومین سری در مجموع( آمده است .این مجموع شامل ۴تمرین است که شما باید هر کدام را در یک فایل )الزام ًا با نام خواسته شده( نوشته و سپس هر ۴فایل را )فقط فایلهای کد و نه فایلهای اجرایی( طبق روشهای گفته شده zipکرده و نهایت ًا فایل zipرا به آدرس خواسته شده بفرستید. نحوه ارسال لطف ًا به موارد زیر در ارسال ایمیل پاسخهای خود دقت کنید .بدیهیست که در صورت بروز هرگونه اشتباهی در این پروسه ،نمره شما ممکن است اکیدًا صفر بشود و اکیدًا هیچ اعتراضی در این زمینه پذیرفته نیست .این اشتباهات شامل • ارسال ایمیل به هر آدرسی غیر از آدرس ذکر شده یا درج عنوان اشتباه • نامگذاری نادرست فایلها )حتی اشتباه در نامگذاری حروف بزرگ و کوچک( • اشتباه در زیپکردن فایلها ،نامگذاری نادرست فایل زیپ شده نهایی ،اشتباه در attachکردن فایل زیپ • کامپایل نشدن برنامه توسط کامپایلر ) g++در MinGWیا (DevCPP • خواندن و نوشتن اشتباه و زائد )هر گونه توضیح اضافه در خروجی یا قرار دادن )( getcharدر انتهای برنامه( و موارد مشابه خواهد بود. آدرس ارسال برنامههای خود را ،پس از تکمیل شدن و بررسی نکات ذیل بهصورت پیوست 1به آدرس cpp862hw@gmail.comارسال کنید .دقت کنید که بدنهی که مبنی بر دریافت ایمیل است. توجه کنید که این آدرس ممکنست در طول مهلت ارسال توسط دستیاران درس چک نشود؛ پس اگر سؤال یا مشکلی داشتید ،حتم ًا بهطور مستقیم با یکی از دستیاران درس )ترجیح ًا ( aideen@gmail.comتماس بگیرید .ضمن ًا از ارسال برنامههایتان توسط ایمیلی بهجز ایمیل شخصی خودتان ،اکیدًا خودداری کنید .ایمیلهای خودتان را )حداقل( هر ۳روز یک بار چک کنید! درصورتی که پس از فرستادن برنامههایتان )و پیش از اتمام موعد مقرّر( تصمیم به ارسال مجدد )و با تغییر( برنامههایتان گرفتید ،ایمیل دیگری با همان مشخصات و فرمتهای ایمیل قبلی به همان آدرس بزنید و در بدنهی ایمیل دلیل ارسال مجدد و تغییرات ایجاد شده را بنویسید .دقت کنید در ایمیل جدید باید تمامی فایلها را عین ًا مانند ایمیل اوّلتان و عین ًا با همان فرمت ،قرار دهید .ضمن ًا درصورتیکه دلیلتان برای ارسال موجه نباشد، ممکنست کسری از نمره را از دست بدهید. Attachment تمرین سری سوم درس مبانی برنامهسازی )ترم بهار (۱۳۸۷ ایمیل شما ممکنست به هیچوجه خوانده نشود .پس از ارسال ایمیل ،احتما ًال یک ایمیل از طرف ) Cpp Assistantهمان آدرس فوق( به شما میآید 1 1 عنوان ایمیل ن 86abcdef-3باشد که در آن به جای 86abcdefشماره دانشجویییتان را باید قرار ددهید .بهعنوان 8 فرمت ایمیل شما باید به ت عنوان یا subjectل 86113804را بررای این سری از تممرینها )سری سوم( انتخاب کند. ۸۶باید عبارت -3 شجوی به شماره داننشجویی ۶۱۱۳۸۰۴ مثال دانش ال حذف ه د ،کام ً ارسالی که فرمت عنوان را رعایت نکرداند ی نید که ممکنست ایمیلهای دقت کنی شده و نمرهشان صفر شود. پیوست ایمیل ت ظیر ،P32.cpp ،P31.cpp های گفته شده )نظ های خود را با نامها برنامه ی (P34.cppنوشته و در یک پپوشه 2دلخواه ذخیره کنید .سپس P P33و 3.cpp انتخاب تمامی فایل و زدن کلیک راست ماووس ،از منوی ب با Compressed Folder Send d to گزینهی سؤالی از طرف در صورت پرسیدن س را انتخاب کرده و ر بزنید. ویندوز ،گگزینهی Noرا د یک فایل شبیه نهایت ًا فایل zipساخته شود توسط خود ویندوز را به ک در آن abcdefساییر ارقام شماره 86abcdef-3تغغییر نام دهید که ر 3.zip ال دانشجوی به شماره دانشجویی ۸۶۱۱۱۳۸۰۴باید نام دانشجویی شماست .مث ً ی کنید که وجود د زیپشدهاش 86113804-3.zipباشد .دقت فایل پ ده و اشتباه در نامگذاری فایل، های اضافی غیر از ۴فایل خواستهشد فایل ی دن نمره بشود. ست باعث کسر شد ممکنس ظیر (zipبه طور دقت کننید که ممکنست پسوند فایلها )نظ فرض به شما نشان داده نشود و پس از تغییر نام فایل ،به پیش ض طور خوددکار در انتهای نام شما )بدون اینکه ممتوجه شوید( درج تمرین سری سوم درس مبانی برنامهسازی )ترم بهار (۱۳۸۷ 2 الف انتظار ،نام واقعی فایل شما شود! در اینصورت برخال 86113804-3.zip p.zip بود، در حالیکه 86113804-3ببه شما نمایش داده میشود! برای 3.zip است منجر به صفر جلوگیری از بروز این مشککل که ممکن ت ی شدن ننمره شما بشود ،از منوی Folder Option T Tools باالیی ،گزینهی انتخاب کرده و سپس در پنجرهای که باز ب را میشود ،از قسمت known file types View گزینهی Hide extension ns for را )پاایینترین گزینهی قابل رؤیت!( غیر نید )تیک آن را برددارید( .اکنون میتووانید مطمئن باشد فعال کنی هستند که میبینید! د که نام فاایلها همانی Folderیا Directory 2 مهلت ارسال مهلت شما برای ارسال این تمارین ساعت ۲۳:۵۹:۵۹روز جمعه ۱۷ ،اردیبهشت ماه است .پس از این تاریخ ،شما ۲۴ساعت وقت دارید تا با کسر ۲۰٪از نمره اکتسابی ،تمارین خود را با تأخیر ارسال کنید .دالیلی نظیر قطع بودن اینترنت خوابگاه ،تمام شدن کارت اینترنت ،داشتن تمرین ،کوئیز و میانترم درس های دیگر ،فراموشی ،برگشتن از شهرستان ،خواب ماندن ،فوت اقوام درجه ۲به باال و ...همگی غیرموجه بوده و هیچ عذری را پذیرفته نمیسازند. نحوه نمرهدهی به برنامه برنامههای خود را با نامهای خواسته شده ذخیره و آمادهسازی کنید و حتم ًا نام ،نام خانوادگی و شماره دانشجویی خود را )با حروف انگلیسی( باالی هر برنامه به صورت کامنت قرار دهید .همچنین رویه اجرای برنامه و تمام متغیرها و توابع خود را با قرار دادن کامنتهای الزم حتم ًا خوانا و واضح کنید .تخطی از این موارد ممکنست باعث شود شما درصدی از نمره را از دست بدهید. معیار نمرهدهی به برنامه صرفاً ،صحّت عملکرد و سرعت اجرای برنامه میباشد ،امّا خوانایی و وضوح کد اکیدًا توصیه میشود .دقّت کنید که یک برنامهی طوالنی ولی دقیق و کارا بسیار با اهمیتتر از یک برنامهی کثیف)!( و فشرده است. در بعضی از برنامههای خواسته شده ،محدودیتی برای ورودیها ذکر شده است .با این محدودیتها و محاسبهی تعداد اعمال برنامهشما ،و این فرض که در هر ثانیه بین ۱۰۶تا ۱۰۹دستور توسط کامپیوتر انجام میشود ،3شما میتوانید تقریبی از زمان اجرای برنامهی خود بهدست بیاورید. به هر یک از برنامههای شما ۱۰ ،ورودی مختلف داشته میشود و برنامهی شما باید در حداکثر ۱ثانیه )برای هر ورودی( پاسخ صحیح را ارائه داده و به پایان برسد ،در غیر اینصورت ،نمرهی آن ورودی را نمیگیرید .با این وصف ،حلقهی زیر برای ۱, ۰۰۰, ۰۰۰, ۰۰۰ ،بیشتر از ۱ثانیه طول میکشد و نتیجت ًا الگوریتم مناسبی برای محاسبهی »باقیماندهی مجموع اعداد ۱تا nبر «۱۰۰۰نمیباشد! ;int sum = 0 )for (int i=0; i<n; i++ ;sum = (sum + i) % 1000 بد نیست این کد را نوشته و ببینید حداکثر مقدار که در حدود یک ثانیه کار به پایان میرسید ،چه توانی از ۱۰است؟! نکات آخر • از خواندن و نوشتن اضافی )نظیر نوشتن The result is: 10به جای 10و گذاشتن )( getcharدر پایان برنامه( بپرهیزید. • اسم برنامههایتان صحیح )بدون پسوند اضافه( باشد .توجه کنید که P31.cppبا ) p31.cppغلط( و ) P31.CPPغلط( متفاوت است! • نام و نام خانوادگی و توضیحات اضافی را بهصورت commentدر برنامههایتان قرار داده باشد. • از دوستانتان و دستیاران درس کمک بگیرید ولی هرگز کُپ نزنید! دقت کنید که رعایت نکردن هر یک از ۴نکتهی فوق ممکنست باعث از دست دادن تمام یا بخشی از نمرهی شود. در صورت مشاهدهی کُپ یا کدی که توسط خود دانشجو نوشته نشده باشد ،نمرهی فرد یا افراد خاطی )منجمله ُکپدهنده!( به -۱تبدیل خواهد شد .در صورتی که از شخص خاص کمک الگوریتمی گرفتهاید ،حتم ًا این نکته را )نام فرد کمک گیرنده و توضیح کمک وی( بهصورت commentدر ابتدای برنامهی خود بنویسید. 3این اعداد به نوع کامپیوتر ،نوع دستورات و موارد زیادی وابستهاند ،اما به طور تقریبی صحیحاند. تمرین سری سوم درس مبانی برنامهسازی )ترم بهار (۱۳۸۷ پیش از ارسال برنامهها ،یکبار دیگر به نکات زیر توجه کرده و آنها را در هر ۴برنامهی خود بررسی کنید. 3 تمرین اول :ص حافی کتاب ) ۲۰نمره ( برنامه شما برای این تمرین باید با نام P31.cppنوشته و ذخیره شود. کامبیز در کار صحافی کتاب است! او میخواهد بداند در نوشتن شماره صفحات یک کتاب ۱۶ برنامهای بنویسید که یک عدد ۱۰ صفحهای )اعداد ۱تا ( ،چند رقم بهکار میروند؟ ۱از ورودی خوانده و تعداد رقمهای بهکار برده شده در شماره صفحات کتابی با این تعداد صفحه را حساب کند. دقت کنید که: • ۹ ۲است و از این رو شما باید از تایپ دیگری )نظیر (long longاستفاده کنید! حداکثر عددی که در تایپ intجا میشود حدود ۱۰ ضمن ًا تعداد عملیاتی که شما انجام میدهید ،اگر متناسب با ال ۲تا عمل جمع( ،احتما ًال برنامهی شما برای ورودیهای بزرگ ،مدت باشد )مث ً ۸ بسیار زیادی )حدود چند سال!( زمان الزم داشته و نتیجت ًا نابود میشود؛ چرا که بهطور تجربی هر ۱۰عمل در یک ثانیه انجام میشود. خروجی صحیح مثال ورودی 12 مثال ورودی خروجی صحیح 103 تمرین سری سوم درس مبانی برنامهسازی )ترم بهار (۱۳۸۷ 4 15 201 تمرین دوم :روبات و جواهرات گم شده ) ۲۰نمره ( برنامه شما برای این تمرین باید با نام P32.cppنوشته و ذخیره شود. یک روبات احمق صبح یک روز بارانی روی نقطهی ۰, ۰صفحه مختصات دو بعدی ایستاده و بهدنبال جعبهی جواهرات گمشدهاش که در یکی از نقاط صحیح صفحهی مختصات است ،میگردد .برای این منظور او در ثانیهی صفر به سمت شرق )سمت مثبت محور ها( میرود و پس از آن در هر ثانیه یک واحد )روی یک خط صاف به طول یک( به جلو میرود؛ اما چون پای راستش میلنگد ،جهت حرکتش تمایل به ۹۰درجه چرخش به سمت راست )نسبت به جهت قبلیاش( دارد و اگر در پایان یک ثانیه خانهی سمت راست )سمت راست نسبت به جهت آخرین حرکت قبلی و نه لزوم ًا شرق( خانهی جاریاش را ندیده باشد ،به آن خانه متمایل میشود. شکل زیر مسیر حرکت روبات تا ثانیهی ۲۲را نشان میدهد .برای مثال در انتهای ثانیهی ،۳وقتی روبات در خانه ۰, ۱قرار دارد علیرغم میل ال آنجا را دیده است. باطنیاش برای چرخش به سمت راست و رفتن به نقطهی ، ۰, ۰نمیتواند به آن خانه برود چرا که قب ً 3 2 1 0 3 1 2 -1 0 -2 -3 -1 -2 -3 مختصههای داده شده در ورودی در بازهی ۱۰۰۰۰۰, ۱۰۰۰۰۰ قرار دارند. خروجی صحیح مثال ورودی -1 -1 مثال ورودی 4 خروجی صحیح -2 1 19 تمرین سری سوم درس مبانی برنامهسازی )ترم بهار (۱۳۸۷ برنامهای بنویسید که مختصات جعبهی جواهرات )ابتدا و سپس آن( را از ورودی خوانده و مشخص کند روبات پس از چند ثانیه به آنجا میرسد. 5 تمرین سوم :بزرگ ترین کشور ) ۳۰نمره ( برنامه شما برای این تمرین باید با نام P33.cppنوشته و ذخیره شود. کامبیز میخواهد به کشور اندونزی سفر کند! کشور اندونزی از جزیره تشکیل شده است و بین بعضی از جزیره ،مسیر دریایی وجود دارد .هر مسیر دریایی ،دقیق ًا یکی از جزیره را به یکی دیگر از جزیرهها متّصل میکند. کامبیز )که در ایران زندگی میکند( میخواهد ابتدا با هواپیما به کشور اندونزی رفته و با چترنجات در یکی از جزیرههای این کشور فرود بیاید ،سپس صرف ًا با حرکت در مسیرهای دریایی )با قایق( ،بیشترین تعداد جزیره را ببیند .به کامبیز کمک کنید تا جزیرهای را پیدا کند که با فرود آمدن در آن جزیره، بتواند بیشترین تعداد جزیره را ببیند .دقت کنید که تنها تعداد جزایر متفاوت مشاهده شده برای کامبیز مهم هستند و نه هیچ چیز دیگری! در سطر اوّل ورودی تعداد جزیرهها ) ( آمده است .در سطر دوم تعداد مسیرهای دریایی ) ( و بهدنبال آن در سطرهای سوم تا ۲ اُم ،در هر سطر یک مسیر دریایی ذکر شده است .هر مسیر دریایی با شمارهی دو جزیرهی انتهایی اش مشخص میشود .فرض کنید مسیرهای دریایی دوطرفه بوده و شمارهی جزیرهها از ۱تا است .بین هر دو جزیره حداکثر یک مسیر دریایی وجود دارد و دو جزیرهی انتهایی یک مسیر دریایی الزام ًا متفاوتند. ضمن ًا میدانیم: ۰است. ۱و ۱۰۰٬۰۰۰ • در تمامی تستها۱۰۰۰ ، • در صورتی که بیش از یک جزیره مطلوب برای کامبیز وجود دارد )که وی میتواند در آنجا فرود بیاید و بیشترین تعداد جزیره را ببیند(، شما باید جزیرهی با اندیس کوچکتر را در خروجی چاپ کنید. خروجی صحیح مثال ورودی 2 4 3 5 تمرین سری سوم درس مبانی برنامهسازی )ترم بهار (۱۳۸۷ 6 2 5 4 4 3 2 1 خروجی صحیح مثال ورودی 1 4 2 1 3 2 4 خروجی صحیح مثال ورودی 3 0 1 تمرین چه ارم :جمع اعداد خیلی بزرگ ! ) ۳۰نمره ( برنامه شما برای این تمرین باید با نام P34.cppنوشته و ذخیره شود. برنامهای بنویسید که ابتدا یک عدد طبیعی را از ورودی بخواند؛ سپس در سطر دوم ورودی، عدد »)قدر مطلق ًا( خیلی بزرگ« خوانده و حاصل جمع این اعداد را در خروجی بنویسد .دقّت کنید که اعداد خیلی بزرگ ممکن است در هیچ یک از نوع4های متعارف جا نشود. • حداکثر مقدار ۱۰ ،بوده و هر یک از اعداد خیلی بزرگ صفر ،مثبت یا منفی بوده و حداکثر ۱۰۰رقم )بدون عالمت( خواهند داشت. • در سمت چپ هیچ عددی در ورودی صفر اضافی وجود ندارد )نظیر (۰۰۱۲و در خروجی نیز این نکته باید رعایت شود. • در سمت چپ اعداد منفی تنها یک کاراکتر -قرار دارد و در خروجی نیز این نکته باید رعایت شود. خروجی صحیح مثال ورودی 3 1000 -100 10 مثال ورودی 910 خروجی صحیح 3 1234567890123456789012345678901234567890 -1 2011111111111111111111111111111111111112 مثال ورودی 3245679001234567900123456790012345679001 خروجی صحیح 3 -100 81 19 خروجی صحیح 5 -50 100 -60 0 -9 -19 »موفق باشید!« Type 4 تمرین سری سوم درس مبانی برنامهسازی )ترم بهار (۱۳۸۷ مثال ورودی 0 7
© Copyright 2025 Paperzz