Pascal-HW2.pdf

‫هوالعلیم‬
‫مبانی برنامهسازی (‪)40151‬‬
‫)‪Fundamentals of Programming (Pascal‬‬
‫دانشکده مهندسی کامپیوتر‬
‫دانشگاه صنعتی‬
‫مدرس‪ :‬صادق دری نوگورانی‬
‫شریف‬
‫تمرین سری ‪2‬‬
‫‪1‬‬
‫مهلت ارسال تمرین‪:‬جمعه‪ 1 ،‬اردیبهشت‬
‫توضیحات اولیه‬
‫‪ ‬آخرین مهلت تحویل تمرین اول‪ ،‬ساعت ‪ 95:32‬روز جمعه‪ 1 ،‬اردیبهشت ‪ 1521‬می باشد‪.‬‬
‫‪ ‬تمرین به صورت انفرادی میباشد‪.‬‬
‫‪ ‬بعد از نوشتن تمرینها‪ ،‬فایلهای ‪ .pas‬تمرین خود را در یک فولدر با نام ‪ HW2_STDID‬قرار دهید‪.‬‬
‫(‪ STDID‬شماره دانشجویی شما می باشد)‪ .‬این فولدر را ‪ zip‬کنید‪ .‬فایل فشرده شده را به آدرس‬
‫‪ [email protected]‬ارسال نمایید‪( .‬از فرستادن جواب تمرین به گروه پستی‬
‫جدا خودداری کنید)‬
‫‪ ‬عنوان ایمیل باید به صورت ‪ HW2_STDID‬باشد‪ .‬که ‪ STDID‬شماره دانشجویی شما می باشد‪.‬‬
‫‪ ‬فرستادن کل یا قسمتی از برنامه تان برای افراد دیگر‪ ،‬یا استفاده از کل یا قسمتی از برنامه فردی دیگر‬
‫به نام خود‪ ،‬تقلب محسوب میشود‪.‬‬
‫‪ ‬در صورت مشاهده تقلب‪ ،‬به میزان نمره سوال‪ ،‬نمره منفی تعلق خواهد گرفت‪ ( .‬یعنی اگر نمره سوال‬
‫‪ 92‬نمره بود‪ ،‬نمره ‪ -92‬برای هر ‪ 9‬نفر منظور خواهد شد) در صورتی که در ‪ 9‬سوال از یک تمرین تقلب‬
‫علمی مشاهده شود‪ ،‬نمره تمرین هر ‪ 9‬نفر‪ ،‬صفر خواهد شد‪ .‬پس لطفا کپ نزنید!‬
‫‪ ‬پس از اتمام زمان ارسال تمرین‪ ،‬تا ‪ 4‬روز می توانید تمرین خود را ارسال کنید‪ .‬هر روز تاخیر در ارسال‬
‫برنامه‪ %92 ،‬از نمره شما کسر خواهد شد‪.‬‬
‫‪ ‬اگر هر گونه ابهام یا مشکل در مورد تمرین داشتید که فکر میکنید پاسخ آن برای همه مفید خواهد‬
‫بود‪ ،‬لطفا آن را به گروه پستی درس ارسال کنید‪ .‬در غیر این صورت به آدرس‬
‫‪ [email protected]‬بفرستید‪.‬‬
‫با تشکر از آقایان سجاد فوالدی ‪ ،‬محمد چگینی و سعید براتی‬
‫‪1‬‬
‫‪1‬‬
‫تمرین های عملی‬
‫‪( – 1‬آرایه) برنامه ای بنویسید که کاربر طول و اعضای یک آرایه را وارد کند و سپس برنامه اعضای خانه های‬
‫شماره زوج را به صورت صعودی و اعضای خانه های شماره فرد را به صورت نزولی مرتب کند‪ .‬سپس جواب را‬
‫چاپ کند‪.‬‬
‫(این برنامه را در قالب ‪ 5‬رویه بنویسید که برنامه اصلی آنها را فرا میخواند‪ .‬رویه اول برای خواندن آرایه‪ ،‬رویه‬
‫دوم برای مرتب کردن و رویه سوم برای چاپ نتایج به کار میرود) (‪ 12‬نمره)‬
‫ورودی نمونه‬
‫خروجی صحیح‬
‫‪1 3 14 8 2 3‬‬
‫‪14 3 2 3 1 8‬‬
‫‪8 3 14 94 71 52 23 74 32 24 39 83 71 3 39 24 32 52 23 74 14 83 8 94‬‬
‫‪( -9‬آرایه) برنامه ای بنویسید که ابتدا ‪ 5‬عدد صحیح ‪ n ،m‬و ‪ p‬را از ورودی دریافت کرده و سپس مقادیر‬
‫صحیح دو ماتریس ‪ A‬و ‪ ( B‬که ماتریس ‪ m*n ،A‬و ماتریس ‪ n*k ،B‬است) را از ورودی دریافت کند‪ .‬سپس‬
‫حاصلضرب این دو ماتریس (که ‪ m*k‬میشود) را در خروجی چاپ نمایید به طوری که هر سطر ماتریس در‬
‫یک خط جداگانه چاپ شود‪.‬‬
‫(این برنامه را در قالب ‪ 5‬رویه بنویسید‪ ،‬رویه اول برای دریافت ورودی‪ ،‬رویه دوم برای محاسبه حاصلضرب و‬
‫رویه سوم برای چاپ خروجی استفاده شود) (‪ 92‬نمره)‬
‫ورودی نمونه‬
‫خروجی صحیح‬
‫‪23 51‬‬
‫‪8 32‬‬
‫‪7 8‬‬
‫‪-4 5‬‬
‫‪242‬‬
‫‪1623‬‬
‫‪0341‬‬
‫‪23‬‬
‫‪16‬‬
‫‪03‬‬
‫‪52‬‬
‫‪222‬‬
‫‪78‬‬
‫‪-4 5‬‬
‫‪10‬‬
‫‪01‬‬
‫‪( -5‬تابع) یک تابع بازگشتی بنویسید که تعداد تکرار عضوی را در یک آرایه ‪N‬تایی بیابد‪( .‬مقدار بیشینه ‪،N‬‬
‫‪ 122‬می باشد) ( برنامه ای که ابتدا ‪ ،N‬سپس عنصر مورد نظر و در نهایت اعضای آرایه را از ورودی دریافت‬
‫میکند‪ .‬تعداد تکرار عنصر را در آرایه پیدا نموده و در خروجی نمایش میدهد‪ 92( ).‬نمره)‬
‫;‪Type Matrix= Array[1..100] of Real‬‬
‫;‪Function count(A:Matrix;size:Integer;element:Integer):Integer‬‬
‫ورودی نمونه‬
‫خروجی صحیح‬
‫‪5‬‬
‫‪4‬‬
‫‪12443‬‬
‫‪12‬‬
‫‪5‬‬
‫‪435235758545‬‬
‫‪2‬‬
‫‪5‬‬
‫) و سپس ‪ n+1‬سطر از مثلث‬
‫‪( -4‬رویه) رویه ای بنویسید که ابتدا عدد ‪ n‬را از ورودی بخواند (‬
‫خیام‪-‬پاسکال را در خروجی چاپ کند‪ 93( .‬نمره)‬
‫راهنمایی‪ :‬برای این کار از یک آرایه استفاده کنید‪ .‬با فرض ‪ ،n=4‬مراحل کار به صورت زیر است‪:‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪9‬‬
‫‪1‬‬
‫‪1‬‬
‫‪5‬‬
‫‪5‬‬
‫‪1‬‬
‫‪4‬‬
‫‪6‬‬
‫‪4‬‬
‫‪1‬‬
‫ورودی نمونه‬
‫خروجی صحیح‬
‫‪1‬‬
‫‪2 1‬‬
‫‪3 3 1‬‬
‫‪4 6 4 1‬‬
‫‪5‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪( -3‬الگوریتم مرتب سازی) برنامه ای بنویسید که یک ‪ N‬را به عنوان سایز ورودی دو آرایه دریافت کند‪ .‬سپس‬
‫‪ 2N‬عنصر هر آرایه را به صورت مرتب شده از ورودی بخواند‪ .‬حال خروجی این ‪ 2N‬عنصر را به صورت مرتب‬
‫شده در خروجی چاپ کند‪( .‬به این کار اصطالحا ادغام ‪ Merge -‬گفته میشود)‬
‫(عملیات ادغام را در قالب یک رویه با نام ‪ merge‬بنویسید) (‪ 93‬نمره)‬
‫خروجی صحیح‬
‫‪1233456789‬‬
‫ورودی نمونه‬
‫‪5‬‬
‫‪13456‬‬
‫‪23789‬‬
‫تمارین امتیازی (الگوریتمها)‬
‫‪ -6‬برنامه ای بنوسید که ‪ N‬را دریافت کند‪ ،‬سپس ‪ N‬عدد را از ورودی بخواهد و در یک آرایه قرار دهد‪ .‬بیشینه‬
‫مقدار ‪ 122 ، N‬خواهد بود‪ .‬سپس با استفاده از الگوریتم ‪ ،1Insertion Sort‬آرایه را از بزرگ به کوچک مرتب‬
‫کنید‪ 13( .‬نمره)‬
‫ورودی نمونه‬
‫خروجی صحیح‬
‫‪-4‬‬
‫‪0‬‬
‫‪2‬‬
‫‪9‬‬
‫‪11‬‬
‫‪-3‬‬
‫‪6‬‬
‫‪12‬‬
‫‪12‬‬
‫‪5‬‬
‫‪-4‬‬
‫‪9‬‬
‫‪2‬‬
‫‪0‬‬
‫‪11‬‬
‫‪4‬‬
‫‪12‬‬
‫‪6‬‬
‫‪-3‬‬
‫‪12‬‬
‫‪en.wikipedia.org/wiki/Insertion_sort‬‬
‫‪1‬‬
‫‪ -7‬برنامه ای بنویسید که ابتدا عدد ‪ N‬را دریافت کند‪ .‬سپس ‪ N‬عدد بعد از آن را از ورودی دریافت کند‪ .‬با‬
‫استفاده از یک رویه‪ ،‬اعداد تکراری را از آرایه حذف کنید‪ .‬آرایه جدید که عضو تکراری ندارد را چاپ کنید‪.‬‬
‫همچینین با پیغام مناسب‪ ،‬اعدادی که حذف شده اند و تعداد تکرار آنها را نیز چاپ کنید‪ 13( .‬نمره)‬
‫توجه داشته باشید که بیشینه مقدار ‪ 922 ،N‬است‪.‬‬
‫خروجی صحیح‬
‫‪-4‬‬
‫‪2‬‬
‫‪12‬‬
‫‪45‬‬
‫‪Repeats of Numbers:‬‬
‫‪2:3‬‬
‫‪12‬‬
‫‪-1‬‬
‫‪6‬‬
‫‪2‬‬
‫‪5‬‬
‫‪4‬‬
‫‪7‬‬
‫‪8‬‬
‫‪0‬‬
‫‪Repeats of Numbers:‬‬
‫‪-1 : 2‬‬
‫‪5:4‬‬
‫ورودی نمونه‬
‫‪6‬‬
‫‪-4‬‬
‫‪2‬‬
‫‪12‬‬
‫‪2‬‬
‫‪45‬‬
‫‪2‬‬
‫‪12‬‬
‫‪-1‬‬
‫‪6‬‬
‫‪-1‬‬
‫‪2‬‬
‫‪5‬‬
‫‪4‬‬
‫‪7‬‬
‫‪5‬‬
‫‪8‬‬
‫‪5‬‬
‫‪5‬‬
‫‪0‬‬