صفحه 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

51,000 تومان