صفحه 1:
توابع در ++O
قسمت اول
ET
) اصول کامپیوتر
صفحه 2:
تقسیم و حل
- ساخت يك برنامه با استفاده از قطعات کوچکتر مستقل
- هر بخش, وظیفه خاصي دارد و به دلیل کوچك بودن مدیریث آن آسانتر است
صفحه 3:
اجزا برنامه در 62+ ۲+
© هر برنامه :
- ترکيبي از توابع موجود در کتابخانه ۲62+ و توابع جدید لست.
- کتابخانه استاندارد 62+ + مجموعه اي غني از تولبع مفید و كاربردي است
٩ با فراخواني تابع. از توابع استفاده مي کنيم
- هنگام فراخولني تابع. نام تابع وبرخي از اطلاعات مورد نیاز آن را ذکر مي کنیم
- فراخواني تابع مانند کار ریس و کارگر است:
رییس(تابع فراخوني کننده )از کارگر (تابع فراخواني شده) مي خواهد كه كاري را انجام داده و
برگردد
© کد تابع یکبار نوشته مي شود:
دستورات يك:تایع از تولیع بدیگرجدا معني سعد
7 مثال: (رییس و کارگر): رییس لازم نیست بداند که کارگر کار مورد نظر را چگونه انجام مي
دهد. او تنها به انجام شدن کار اهمیت مي دهد.
صفحه 4:
توابع کتابخانه اي رياضي در 6
# توابع عمومي رياضي را پیاده سازي مي کنند
- باالحاق < 6112۴0 > به بنامه مي توان از آنها استفاده کرد
* فرخواني اين توابع به شکل زیر است:
مس سس ها
* مثال
;cout << sqrt( 900.0 )
- اين دستور تابع ۳4« (ريشه دوم ) را فراخواني مي کند. دستور بالاه عدد 30 را
چاپ مي کند
- همانند بقیه توابع مشابه در کتابخانه رياضيء اين تابع يك آرگومان از نوع
2 مي گیرد و يك از همان نوع تولید مي کند.
صفحه 5:
توابع کتابخانه اي رياضي در 6 +
* آرگومان توابع مي تواند يكي از انواع زیر باشد
- ثابت
ssqrt( 4)
ssqrt( x )
: 50۲۲) 50۳) ۲ ( (
ysqrt( 3 - 6x )
صفحه 6:
٩ با استفاده از توابع:
- برنامه نويس مي تواند برنامه خود را به چندین بخش تقسیم کند
- هر بخش را يك پیمانه ((۳)) مي گویند
- تقسیم برنامه به چند پیمانه را 00( مي كويتد
© متغير هاي محلي
- إتنها در تابعي که تعریف شده آند؛ شتاخته مي شوند
* پارامترهاي تابع
- دسته اي از متفيرهاي محلي هستند که براي انتقال داده از خارج به داخل تابع استفاده
شوند
صفحه 7:
غورف توایم
* هنكام پرنامه نويسي. توابعي تعریف کنید که:
داقه ها را بگیرند
2 «مطلیاتن انجام:دهند:
- انتيجه را بركردانتد
© نحوه تعريف تابع
return-value-type function-name( parameter-list )
declarations and statements
© مثال:
int square( int y)
1
return y * y;
}
صفحه 8:
1 // Fig. 3.3: ig03_03.cpp
2 // Creating and using a progranmer-defined function
3 #include <iostream>
:
5 using std::cout;
xt )
cout << square( x ) <<"
9
10
11
2
B
14
15 cout << endl;
16 return 0;
17
18
19
20
21
22
23
// Function definition
int square( int y )
{
return y *
صفحه 9:
cpp.
1 // Fig. 3.4: fig03
2 // Finding the maximum of three integers
5 #include <iostream>
int maximum( int, int, int ); // function prototype
1
11 int main()
12 )
1 int a, b,
14
۱
16 cin >> a >> b >> ¢;
17
a, b and c below are arguments to // قد
the maximum function call /// ود
20 cout << "Maximum is: " << maximum( a, b, ¢ ) << endl;
صفحه 10:
return 0;
int maximum( int x, int y, int z)
0 int max = x;
if (y > max )
max = y;
if (z> max )
6 max = 2;
return max;
صفحه 11:
* الگوي تابع از قسمتهاي زیر تشکیل یافته است
نام تابع
- پارلمترها
* داده هايي که تابع بعنوان ورودي دریافت مي کند
7 نوع نتیجه برگشتي
* بیانگر نوع داده برگشتي به فراخواننده است. )پیش فرض ۸ )
٩ 0301 نوع بر گشتی/۷۳۸ بسدینمعنولستکه سابع هیچ چيزيسر نسميگردلند
- اگر تابع فراخواننده پیش از تابع فراخواني شده . نوشته شده باشد. لازم است الگوي تابع
پیش از استفاده از آن اعلام شود
yes ©
yint maximum( int, int, int )
سه عدد صحیح مي گیرد
- يك عدد صحیح برمي گرداند
صفحه 12:
Weeder فايلهاي
Deuter Pies ©
- حاوي الگوي توابع کتابخانه اي هستند
-cstdlib> ,<cmath>, ev> -
- با دستور ۶1160306#> 061106 > به برنامه اضافه مي شوند
*مثال:
61۷06 10>
© فايلهاي ۲" خصوصي
- برنامه نويس مي تواند فايلهاي جلما مورد نياز خود را تعريف كند و الكوي توابع خاصي را
در آنها قرار دهد
~ بااين نام و يسوند ذخیره مي شوند: ۶1160306۰1
- با استفاده از دستور زیر به برنامه اضافه مي شوند:
“include "filename. h#
صفحه 13:
تولید اعداد تصادفي
“Qi = rand
<cstdlib> -
. مي کند ad ROOO_DOX عدد شبه تصادفی بین صفر تا -
۲ این قابت معمولا بابر 32763 است -
اعداد شیه تصادفي , دنباله اي از اعداد تصادفي هستند که تحت فرمول ویژه اي تولید مي شوند -
در هربار اجراي برنامه. ين ذتباله تكرار مي شود ©
۱ 5۳۲200۵ تابع *
نقطه شروع این دنباله را تعیین مي کند.
;srand( seed )
<srand( time( @ ) ); //must include <ctime
106) 0 ( -
زمان كاميايل شدن برنامه را بر مي كردائد ©
- استفاده از اين تابع سبب مي شود بس از هر بار كامبايل برنامه, دنباله متفاوتي توليد شود
صفحه 14:
تولید اعداد تصادفي
دامتة اعدلد
- با استفاده از عملگر محاسبه باقیمانده مي توان دنباله تولید اعداد تصادفي را به بازه خاصي
محدود کرد ۲ 5 ۲
* 00 9۵ (۳۷6< ۷ب رليتولیدلعداد از 0 تا 99
ji = rand() 5 6 + 1-
© تولید اعداد تصادفي از | تا 6
صفحه 15:
Fig 41403 87 . مم
Shifted
Hinclude <iostream
scaled integers produced by 1 + rand() % 6
using std::endl;
include <iomanip>
‘include <cstdLib>
int main()
{
for ( int i=; 4 <= 20; i++) {
cout << setw( 10) << (1+ rand() % 6);
رو عد و5 4) ۶
cout <« endl;
}
return 0;
مرب ساح ضعت © فت 5 نر 85 يا 8 6 5 5 5 5 8 8 0 ا 58
صفحه 16:
Fig. 3.9: 3903 09.۶
Randonizing die-roLling program
‘lude <iostream>
ESS
iid
مر ساح صاه ناه ه 5 ثز نم نا ظ ما 5 5 5 6 8 8 8 0 8 0 8 8 8 8 عام
3
1
0
std::setw;
“lude <estdLib>
main()
mE
unsigned seed;
cout << “Enter seed:
cin >> seed;
srand( seed );
for ( int ji 10; i+) {
cout << setw( 10) << 1+ rand() % 6;
35 )1 5 2 (
cout << endl;
return 0;
صفحه 17:
~~. [Notice how the die
rolls change with the
seed.
Proyeacy Output
صفحه 18:
© نوع دلده شمارشي: مجموعه اي از اعداد صحیح که با اسم تعریف مي شوند
تسه ر امه هام6
- ثابتها از 0 شروع شده و یکی یکی اضافه می شلوند:
اسم ثابتها منحصر بفرد باید باشد
نت بقل
jenum Status {CONTINUE, WON, LOST}
© استفاده از نوع داده شمارشي:
Status enumVar; // create variable
enumVar = WON; // set equal to WON
enumVar = 1; // ERROR
صفحه 19:
مثال : بازي شانسي
هاي شمارشي را مي توان هنگام تعریف مقدار دهي کرد:
enum Months { JAN = 1, FEB, MAR, APR, MAY, JUN, JUL,
jAUG, SEP, OCT, NOV, DEC}
Gros o 1, ieorewects by 1 -
© قاعده بازي:
- دو تاس را با هم بریزید:
# مجموع 7یا 11 نشانگر برنده شدن بازيكر است
* اگر در دور اول 3۰2 یا 12 بیاید. بازیگر بازنده است
۶ 9 , 9 و, 40
- عدد بدست آمده امتیازبزیگر است
- بازيكر بايد أنقدر اس بريد نا
مجموعي برابر امتياز كسب شده
رحله اول بدسث أورد كه هر اين صورث برئده اسث
© مجموع بدست آمده 7 ياشد كه دراين ani Sng ست
صفحه 20:
include <iostream
BRE Beevaueune
Ant rollDice( void ):
int main)
1
‘enum Status { CONTINUE. WON. LOST ¥:
int sum. mvPoint:
Status aameStatus:
srand( time( 0)
sum = rolDice(
switch ( sum) £
۳ سر
a
i
case 12:
‘aameStatus
break:
Los
صفحه 21:
default:
gameStatus = CONTINUE;
myPoint = sum;
cout << “Point is “ << myPoint << endl;
break;
CONTINUE ) {
while ( gameStatus
sum = rolDice();
if ( sum == myPoint )
gameStatus = WON;
else
if ( sum == 7)
gameStatus = LOST;
if ( gamestatus == WON )
cout << "Player wins" << endl;
else
cout << "Player loses" <« endl;
return 0;
۸۲ ۲ ۵ ۵ ۵
555 55 5
صفحه 22:
27۳99 vor)
+
int diel, die2, workSum:;
diel = 1+ rand() % 6
die2 = 1+ rand() % 6:
workSum = diel + die2
cout << “Player rolled " << diel <<" +" << die2
<< "=" <e workSum << endl:
return workSum:
صفحه 23:
پروژه شماره 0- بازي حدس اعداد
برنامه اي بنويسيد كه gone 5 رقمي به صورت تصادفي توليد كند و از كاربر بخواهد اين عدد را
حدس بزند.
عدد تولید شده را عدد مخفي و عددي را که کاربر وارد مي کند عدد کاربر مي نامیم
يرنامه بايد عد كاربر را با عد مخفي مقایسه کند و در صورت مساوي نبودن این دو عدد. دو
کمیت زیر را محاسبه و چاپ کند:
تعداد ارقام مشابه عدد مخفي و عدد کاربر
- تعداد ارقام مشابه عدد مخفي و عدد کاربر که ارزش مكاني
- مثال : عدد مخفي 11386 و عدد کاربر 18755
تعداد رقام مشایه: 2 ( او 8 در هر دو عدد موجودند)
* تعداد ارقاممشابه و هم ارزش : 1 (رقم 1 در هر دو عدد در مکان پنجم است)
آیا مي توانید الگوريتمي ارائه دهید که با تعداد قدمهاي متناهي, هر عدد ممكني را حدس بزند؟
- حداقل و حداکثر تعداد قدمهاي لازم براي حدس يك عدد چقدر است؟
پروژه انفرادي و مهلت انجام آن تا دو هفته آینده است.
از توابع مناسب براي پیاده سازي قسمتهاي مختلف این برنامه استفاده کنید
توابع در ++C
قسمت اول
اصول كامپيوتر 1
1
آشنايي
تقسيم و حل
– ساخت يك برنامه با استفاده از قطعات كوچكتر مستقل
– هر بخش ،وظيفه خاصي دارد و به دليل كوچك بودن ،مديريت آن آسانتر است
2
اجزا برنامه در ++C
هر برنامه :
– تركيبي از توابع موجود در كتابخانه ++Cو توابع جديد ا7ست.
– كتابخانه استاندارد ++Cمجموعه اي غني از توا7بع مفيد و كاربردي است
با فراخواني تابع ،از توابع استفاده مي كنيم
– هنگام فراخوا7ني تابع ،نام تابع وبرخي از اطالعات مورد نياز آن را ذكر مي كنيم
– فراخواني تابع مانند كار رييس و كارگر است:
كد تابع يكبار نوشته مي شود:
– دستورات يك تابع از توابع ديگر جدا و مخفي ست.
– مثال( :رييس و كارگر) :رييس الزم نيست بداند كه كارگر كار مورد نظر را چ7گونه انجام مي
دهد .او تنها به انجام شدن كار اهميت مي دهد.
رييس(تابع فراخوني كننده )از كارگر (تابع فراخواني شده) مي خواهد كه كاري را انجام داده و
برگردد
3
توابع كتابخانه اي رياضي در ++C
توابع عمومي رياضي را پياده سازي مي كنند
– با الحاق < >cmathبه برنامه 7مي توان از آنها استفاده كرد
فرخواني اين توابع به شكل زير است:
)functionName (argument
مثال
–
–
) ;cout << sqrt( 900.0
اين دستور تابع ( sqrtريشه دوم ) را فراخواني مي كند .دستور باال ،عدد 30را
چاپ مي كند
همانند بقيه توابع مشابه در كتابخانه 7رياضي ،اين تابع يك آرگومان از نوع
doubleمي گيرد و يك نتيجه از همان نوع توليد مي كند.
4
توابع كتابخانه اي رياضي در ++C
آرگومان توابع مي تواند يكي از انواع زير باشد
– ثابت
) ;sqrt( 4
–
متغير
–
عبارت
) ;sqrt( x
) ) ; sqrt( sqrt( x
) ;sqrt( 3 - 6x
5
توابع
با استفاده از توابع:
– برنامه نويس مي تواند برنامه خود را به چندين بخش تقسيم كند
– هر بخش را يك پيمانه ( )Moduleمي گويند
– تقسيم برنامه به چند پيمانه را Modularizationمي گويند
متغير هاي محلي
– تنها در تابعي كه تعريف شده اند ،شناخته مي شوند
پارامترهاي تابع
– دسته اي از متغيرهاي محلي هستند كه براي انتقال داده از خارج به داخل تابع استفاده مي
شوند
6
تعريف توابع
هنگام برنامه نويسي ،توابعي تعريف كنيد كه:
– داده ها را بگيرند
– عملياتي ا7نجام دهند
– نتيجه را برگردانند
نحوه تعريف تابع
) return-value-type function-name( parameter-list
{
declarations and statements
}
مثال:
)int square( int y
{
;return y * y
}
7
1 // Fig. 3.3: fig03_03.cpp
2 // Creating and using a programmer-defined function
3 #include <iostream>
4
5 using std::cout;
Notice how parameters and
return value are declared.
6 using std::endl;
7
8 int square( int );
// function prototype
9
10 int main()
11 {
12
13
for ( int x = 1; x <= 10; x++ )
cout << square( x ) << " ";
14
15
16
cout << endl;
return 0;
17 }
18
19 // Function definition
20 int square( int y )
Program Output
21 {
22
23 }
return y * y;
1
9
4
8
16
25
36
49
64
81
100
1 // Fig. 3.4: fig03_04.cpp
2 // Finding the maximum of three integers
3 #include <iostream>
4
5
Function prototype (3 .1
using std::cout;
parameters)
6 using std::cin;
7 using std::endl;
8
Input values .2
9 int maximum( int, int, int );
10
11 int main()
// function prototype
Call function 2.1
12 {
13
int a, b, c;
14
15
cout << "Enter three integers: ";
16
cin >> a >> b >> c;
17
18
// a, b and c below are arguments to
19
// the maximum function call
20
cout << "Maximum is: " << maximum( a, b, c ) << endl;
9
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
return 0;
}
// Function maximum definition
// x, y and z below are parameters to
// the maximum function definition
int maximum( int x, int y, int z )
{
int max = x;
if ( y > max )
max = y;
if ( z > max )
max = z;
return max;
}
Program Output
Enter three integers: 22 85 17
Maximum is: 85
Enter three integers: 92 35 14
Maximum is: 92
Enter three integers: 45 19 98
Maximum is: 98
1
الگوي توابع
الگوي تابع از قسمتهاي زير تشكيل يافته است
– نام تابع
– پارا7مترها
–
–
مثال:
داده هايي كه تابع بعنوان ورودي دريافت مي كند
نوع نتيجه برگشتي
بيانگر نوع داده برگشتي به فراخواننده است) .پيش فرض ) int
م7عني7س7تك7ه ت77اب7ع ه7يچ چ7يزيب77ر ن77ميگ77ردا7ند
void ن77وع ب77رگ7شتي voidب77دي7ن ا
اگر تابع فراخواننده پيش از تابع فراخواني شده ،نوشته شده باشد ،الزم است الگوي تابع
پيش از استفاده از آن اعالم شود
) ;int maximum( int, int, int
–
–
سه عدد صحيح مي گيرد
يك عدد صحيح برمي گرداند
11
فايلهاي Header
Header files
– حاوي الگوي توابع كتابخانه اي هستند
– <.cstdlib> , <cmath>, etc
– با دستور >include <filename#به برنامه اضافه مي شوند
مثال:
>include <cmath#
فايلهاي Headerخصوصي
– برنامه نويس مي تواند فايلهاي Headerمورد نياز خود را تعريف كند و الگوي توابع خاصي را
در آنها قرار دهد
– با اين نام و پسوند ذخيره مي شوندfilename.h :
– با استفاده از دستور زير به برنامه اضافه مي شوند:
"include "filename.h#
1
توليد اعداد تصادفي
تابع rand
–
–
–
–
<>cstdlib
عدد شبه تصادفي بين صفر تا RAND_MAXتوليد مي كند .
اين ثابت معموال برابر 32767است
اعداد شبه تصادفي ،دنباله اي از اعداد تصادفي هستند كه تحت فرمول ويژه اي توليد مي شوند
;)(i = rand
در هربار اجراي برنامه ،اين دنباله تكرار مي شودs
تابع srand
– نقطه شروع اين دنباله را تعيين مي كند
) ;srand( seed
//must include <ctime
–
) time( 0
–
;) ) >srand( time( 0
زمان كامپايل شدن برنامه را بر مي گرداند
استفاده از اين تابع سبب مي شود پس از هر بار كامپايل برنامه ،دنباله متفاوتي توليد شود
1
توليد اعداد تصادفي
تغيير دامنه اعدا7د
– با استفاده از عملگر محاسبه باقيمانده مي توان دنباله توليد اعداد تصادفي را به بازه خاصي
محدود كرد
X =rand() % 100 ب77را7يت77ول7يد ا7عداد از 0ت77ا 99
–
;i = rand() % 6 + 1
توليد اعداد تصادفي از 1تا 6
1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
1
// Fig. 3.7: fig03_07.cpp
// Shifted, scaled integers produced by 1 + rand() % 6
#include <iostream>
using std::cout;
using std::endl;
#include <iomanip>
using std::setw;
#include <cstdlib>
int main()
{
for ( int i = 1; i <= 20; i++ ) {
cout << setw( 10 ) << ( 1 + rand() % 6 );
Program Output
Notice rand() % 6 . This returns a
number between 0 and 5 (scaling).
Add 1 to get a number between 1
and 6.
if ( i % 5 == 0 )
cout << endl;
}
Executing the program again
gives the same "random" dice
rolls.
return 0;
}
5
2
5
5
5
4
3
1
3
2
2
4
5
5
2
6
5
5
1
4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// Fig. 3.9: fig03_09.cpp
// Randomizing die-rolling program
#include <iostream>
Input value for seed .2
using std::cout;
using std::cin;
using std::endl;
Use srand to 2.1
#include <iomanip>
change random sequence
using std::setw;
#include <cstdlib>
Define Loop 2.2
int main()
{
unsigned seed;
Generate and output .3
random numbers
cout << "Enter seed: ";
cin >> seed;
srand( seed );
for ( int i = 1; i <= 10; i++ ) {
cout << setw( 10 ) << 1 + rand() % 6;
if ( i % 5 == 0 )
cout << endl;
}
1
return 0;
}
Enter seed: 67
1
5
6
6
5
3
1
1
4
2
Enter seed: 432
4
2
2
5
6
1
4
4
3
4
Enter seed: 67
1
5
6
6
5
3
1
1
4
2
Notice how the die
rolls change with the
seed.
Program Output
1
مثال :بازي شانسي
نوع دا7ده شمارشي :مجموعه اي از اعداد صحيح كه با اسم تعريف مي شوند
}…;enum typeName {constant1, constant2
–
–
–
ثابتها از 0شروع شده و يكي يكي اضافه مي شوند.
اسم ثابتها منحصر بفرد بايد باشد
مثال:
};enum Status {CONTINUE, WON, LOST
استفاده از نوع داده شمارشي:
// create variable
// set equal to WON
;enumVar = 1
// ERROR
;Status enumVar
;enumVar = WON
1
مثال :بازي شانسي
ثابت هاي شمارشي را مي توان هنگام تعريف مقدار دهي كرد:
قاعده بازي:
– دو تاس را با هم بريزيد:
enum Months { JAN = 1, FEB, MAR, APR, MAY, JUN, JUL,
};AUG, SEP, OCT, NOV, DEC
– Starts at 1, increments by 1
مجموع 7يا 11نشانگر برنده شدن بازيگر است
اگر در دور اول 3 ، 2يا 12بيايد ،بازيگر بازنده است
10 ,9 ,8 ,6 ,5 ,4
– عدد بدست آمده امتياز بازيگر است
–
بازيگر بايد آنقدر تاس بريزد تا :
مجموعي برابر امتياز كسب شده در مرحله اول بدست آورد كه د7ر اين صورت برنده است
مجموع بدست آمده 7باشد كه دراين صورت بازنده است
1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// Fig. 3.10: fig03_10.cpp
// Craps
#include <iostream>
Initialize variables and 1.1
enum
using std::cout;
using std::endl;
#include <cstdlib>
#include <ctime>
Seed srand 1.2
using std::time;
int rollDice( void );
// function prototype
Define switch .2
statement for
win/loss/continue
srand( time( 0 ) );
int main()
{
enum Status { CONTINUE, WON, LOST };
int sum, myPoint;
Status gameStatus;
2
sum = rollDice();
switch ( sum ) {
case 7:
case 11:
gameStatus = WON;
break;
case 2:
case 3:
case 12:
gameStatus = LOST;
break;
Notice how
the enum is
defined
// first roll of the dice
// win on first roll
// lose on first roll
35
default:
// remember point
36
gameStatus = CONTINUE;
37
myPoint = sum;
38
cout << "Point is " << myPoint << endl;
39
break;
40
// optional
}
41
44
// keep rolling
Define loop to 2.1
sum = rollDice();
continue playing
45
if ( sum == myPoint )
42
while ( gameStatus == CONTINUE ) {
43
46
gameStatus = WON;
47
Print win/loss// lose
2.2
by rolling 7
else
48
if ( sum == 7 )
49
50
// win by making point
gameStatus = LOST;
}
51
52
53
54
55
if ( gameStatus == WON )
cout << "Player wins" << endl;
else
cout << "Player loses" << endl;
56
57
2
58 }
59
return 0;
60 int rollDice( void )
61 {
62
int die1, die2, workSum;
63
64
die1 = 1 + rand() % 6;
65
die2 = 1 + rand() % 6;
66
workSum = die1 + die2;
67
cout << "Player rolled " << die1 << " + " << die2
68
<< " = " << workSum << endl;
69
70
return workSum;
71 }
Player rolled 6 + 5 = 11
Player wins
Define rollDice .3
function
Player rolled 6 + 5 = 11
Player wins
Player rolled
Point is 10
Player rolled
Player rolled
Player rolled
Player rolled
Player wins
4 + 6 = 10
Player rolled
Point is 4
Player rolled
Player rolled
Player rolled
Player rolled
Player rolled
Player rolled
Player loses
1 + 3 = 4
2
2
6
3
6
1
5
4
6
1
5
+
+
+
+
+
+
+
+
+
+
4
5
3
4
4
4
6
3
2
2
=
=
=
=
=
=
=
=
=
=
6
11
6
10
Program Output
5
9
10
9
3
7
پروژه شماره -1بازي حدس اعداد
برنامه اي بنويسيد كه عددي 5رقمي به صورت تصادفي توليد كند و از كاربر بخواهد اين عدد را
حدس بزند.
برنامه بايد عدد كاربر را با عدد مخفي مقايسه كند و در صورت مساوي نبودن اين دو عدد ،دو
كميت زير را محاسبه و چاپ كند:
–
عدد توليد شده را عدد مخفي و عددي را كه كاربر وارد مي كند عدد كاربر مي ناميم
–
تعداد ارقام مشابه عدد مخفي و عدد كاربر
تعداد ارقام مشابه عدد مخفي و عدد كاربر كه ارزش مكاني آنها نيز مشابه باشد
مثال :عدد مخفي 11386و عدد كاربر 18755
–
–
تعداد ارقام مشابه1 ( 2 :و 8در هر دو عدد موجودند)
تعداد ارقام مشابه و هم ارزش ( 1 :رقم 1در هر دو عدد در مكان پنجم است)
آيا مي توانيد الگوريتمي ارائه دهيد كه با تعداد قدمهاي متناهي ،هر عدد ممكني را حدس بزند؟
پروژه انفرادي و مهلت انجام آن تا دو هفته آينده است.
–
حداقل و حداكثر تعداد قدمهاي الزم براي حدس يك عدد چقدر است؟
–
از توابع مناسب براي پياده سازي قسمتهاي مختلف اين برنامه استفاده كنيد
2