تمرین سری سوم
تاریخ تحویل تمرین 17آبان 1392
درس مبانی برنامهسازی
CE153
Sharif University of Technology
Fall 2013
1
توضیحات اولیه
آخرین مهلت تحویل تمرین ،ساعت 23:59دقیقه روز جمعه ،هفدهم آبان
ماه می باشد.
بعد از اتمام زمان ارسال ،تا 3روز می توانید تمرین های خود را با تاخیر
ارسال نمایید.
به ازای هر ساعت تاخیر 1 %از نمره ی شما کسر می شود.
به ازای تمامی سواالت این تمرین ،هدف تنها یادگیری و درک مفهوم
توابع و چگونگی تعریف و به کار بردن آنها می باشد .لذا نیازی به بررسی
سرریز در سواالت نمی باشد و محدوده ورودی ها به گونه ای است که
سرریز رخ ندهد.
در کلیه سواالت ،استفاده از آرایه ها ،اشاره گر ها و توابع به صورت
بازگشتی غیر مجاز است.
2
سوال اول
الف) تابع factرا بنویسید که فاکتوریل یک عدد ورودی را حساب کند.
;) int fact(int n
ب) با استفاده از قسمت الف ،تابع Combرا به گونه ای بنویسد که ترکیب دو
عدد ورودی را حساب کند.
;) int Comb(int n, int r
ج) با استفاده از قسمت ب ،تابع calcرا پیاده سازی کنید تا عبارت زیر را
حساب کند.
𝑖
𝑖
𝑗 𝑗=1
𝑛
𝑖=1
;) int calc(int n
د) سپس برنامه ای بنویسید که عدد nرا از ورودی گرفته و با استفاده از تابع
قسمت ج نتیجه را نمایش دهد.
3
سوال اول
ورودی :یک عدد به عنوان nوارد می شود .محدوده آن به صورتی است
که خروجی سرریز نشود.
خروجی :نتیجه به عنوان خروجی به صورت یک عدد چاپ شود.
4
سوال اول
ورودی نمونه:
ورودی نمونه
خروجی نمونه
1
1
2
3
3
12
5
سوال دوم
می خواهیم تابعی بنویسید که یک عدد را از ورودی گرفته و مشخص کند
آیا شرط زیر برایش برقرار است یا خیر.
شرط مورد نظر به این صورت است که اگر nعدد ورودی باشد و 𝑖𝑃 عامل
اول iام و 𝑖𝑏 توان 𝑖𝑃 باشد ،آنگاه 𝑖𝑏 بر 𝑃𝑖+1بخش پذیر باشد .به عبارت
دیگر:
𝑃𝑖 𝑏𝑖 where 𝑃𝑖 > 𝑃𝑗 for i > j
then 𝑏𝑖 % 𝑃𝑖+1 == 0
= If n
ورودی و خروجی:
در تنها خط ورودی عدد nآمده است .در تنها خط خروجی باید Yesیا
Noچاپ شود.
6
سوال دوم
نمونه ی ورودی و خروجی
ورودی نمونه
خروجی نمونه
9720
Yes
6272
Yes
48009024
Yes
38880
No
در مثال باال داریم
51 * 35 * 23 = 9720
72 * 27 = 6272
73 * 37 * 26 = 48009024
51 * 35 * 25 = 38880
7
سوال سوم
تابعی بنویسید که پارامتر های d ،r ،y ،xرا دریافت کند و با توجه به
مقادیر آنها مثلثی از مکان شروع ) (x, yبه ضلع rبکشد به طوری که d
جهت آن را مشخص می کند.
4
3
2
1
d
شکل مورد
نظر برای
X=1
Y=1
R=4
برای مقدار dمی توانید هر مقدار دیگر را در نظر بگیرید.
8
سوال سوم
سپس عدد nرا به عنوان طول ضلع مثلث گرفته و با 4بار فراخوانی با
مقادیر مناسب برای پارامتر ها شکل زیر ()n = 5چاپ شود.
9
سوال چهارم
می خواهیم عدد پی را تخمین بزنیم.
فرض می کنیم اندازه ضلع مربع در شکل زیر 10می باشد.
به این ترتیب ابتدا تابع IsInCircleرا بنویسید که مشخص کند یک
نقطه داخل ربع دایره قرار دارد یا خیر.
;) int IsInCircle(float x, float y
سپس با تولید تعدادی نقطه تصادفی که در داخل مربع قرار دارند ،نسبت
تعداد نقاط داخل ربع دایره به تعداد کل نقاط را حساب کنید.
این نسبت برابر است با یک چهارم عدد پی.
10
سوال چهارم
بدین ترتیب تابع Findرا به گونه ای بنویسد که تعیین کنید که تعداد
نقاط تصادفی باید حداقل چند باشد تا به خطای یک صدم برسیم.
;)( Int Find
سپس یک عدد از ورودی خوانده و به تعداد آن تابع Findرا صدا بزنید و
میانگین خروجی ها را به عنوان نتیجه نهایی چاپ کنید.
11
راهنمایی
در هدر فایلgotoxy(x, y) برای تغییر دادن نشانگر مواس می توانید از تابع
از این تابعdev c++ اما با توجه به این که. استفاده کنیدconio.h
.پشتیبانی نمی کند می توانید این تابع را به صورت زیر پیاده سازی کنید
12
#include <windows.h >
void gotoxy(int x, int y)
{
static HANDLE h = NULL;
if(!h)
h = GetStdHandle(STD_OUTPUT_HANDLE);
COORD c = { x, y };
SetConsoleCursorPosition(h,c);
}
© Copyright 2025 Paperzz