ﻣﻬﻠﺖ ﺗﺤﻮﻳﻞ دوﺷﻨﺒﻪ 5ﺁذر 1386 ﺗﻤﺮﻳﻦ ﺳﺮﯼ ﺳﻮم ﻣﺒﺎﻧﯽ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ C++ ﺗﻤﺮﻳﻦ هﺎﯼ ﺧﻮد را ﺑﻪ ﻓﺮﻣﺖ zipو ﺑﺎ ﻧﺎم HW3_StudentIDﮐﻪ در ﺁن StudentIDﺷﻤﺎرﻩ داﻧﺸﺠﻮﻳﯽ ﺷﻤﺎﺳﺖ ، ﺗﺎ ﻗﺒﻞ از ﮐﻼس ﺗﻤﺮﻳﻦ ﺑﻪ ﺁدرس [email protected] :ﺑﻔﺮﺳﺘﻴﺪ. ﺗﻮﺟﻪ: در ﺣﻞ ﻣﺴﺎﻟﻪ هﺎﯼ 2,1ﻧﻴﺎز ﺑﻪ ﺗﻮﻟﻴﺪ اﻋﺪاد ﺗﺼﺎدﻓﯽ دارﻳﺪ .ﺑﺮاﯼ اﻳﻦ ﻣﻨﻈﻮر ﻣﯽ ﺗﻮاﻧﻴﺪ از ﺗﺎﺑﻊ ﻣﻮﺟﻮد اﺳﺖ اﺳﺘﻔﺎدﻩ ﮐﻨﻴﺪ .ﻓﺮاﺧﻮاﻧﯽ اﻳﻦ ﺗﺎﺑﻊ ﻋﺪدﯼ ﺗﺼﺎدﻓﯽ و ﻃﺒﻴﻌﯽ در ﺑﺎزﻩ 1 _ _ ﮐﻪ در ﮐﺘﺎﺑﺨﺎﻧﻪ . 0ﺑﺮﻣﯽ ﮔﺮداﻧﺪ .ﮐﻪ در ﺁن ﻋﺪدﯼ ﺛﺎﺑﺖ اﺳﺖ .ﺑﺮاﯼ ﻣﺜﺎل ،ﮐﺪ زﻳﺮ 10ﻋﺪد ﺗﺼﺎدﻓﯽ در اﻳﻦ ﺑﺎزﻩ ﭼﺎپ ﻣﯽ ﮐﻨﺪ. >#include <stdlib.h >#include <time.h >#include <iostream.h )(int main { ;// random integer ;int r // control variable ;int i = 0 // initialise random number generator ;))srand(time(0 )while (i < 10 { // gets random int in 0-RAND_MAX ;)(r = rand ;cout << "Random integer was " << r<<endl ;i++ } ;)return (0 } دﻗﺖ ﮐﻨﻴﺪ ﮐﻪ ﺗﺎﺑﻊ 0 از ﮐﺘﺎﺑﺨﺎﻧﻪ . ﺗﻨﻬﺎ ﻳﮏ ﺑﺎر در اﺑﺘﺪاﯼ ﺑﺮﻧﺎﻣﻪ ﻓﺮاﺧﻮاﻧﯽ ﻣﯽ ﺷﻮد ﺗﺎ اﻋﺪاد ﺗﺼﺎدﻓﯽ ﺗﻮﻟﻴﺪ ﺷﺪﻩ در هﺮ ﺑﺎر اﺟﺮاﯼ ﺑﺮﻧﺎﻣﻪ ﻣﺘﻔﺎوت ﺑﺎﺷﻨﺪ .ﺑﺎ ﮐﻤﯽ ﺗﻐﻴﻴﺮ در ﺑﺮﻧﺎﻣﻪ ﻣﯽ ﺗﻮاﻧﻴﺪ اﻋﺪاد ﺗﺼﺎدﻓﯽ ﻣﻮرد ﻧﻴﺎز در اﻳﻦ دو ﻣﺴﺎﻟﻪ را ﺑﺴﺎزﻳﺪ. ﻣﺴﺎﻟﻪ اول . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ﺑﺎز هﻢ ﻋﺪد ! π در اﻳﻦ ﺑﺮﻧﺎﻣﻪ ﻣﯽ ﺧﻮاهﻴﻢ ﺗﻘﺮﻳﺒﯽ از ﻋﺪد πﺑﻪ روش Monte Carloﺑﻪ دﺳﺖ ﺁورﻳﻢ .ﺗﺎﺑﻌﯽ ﺑﻨﻮﻳﺴﻴﺪ ﮐﻪ ﻋﺪد nرا ﺑﻪ ﻋﻨﻮان ورودﯼ ﮔﺮﻓﺘﻪ و ﺑﻪ ﺗﻌﺪاد nﺑﺎر زوج هﺎﯼ ﻣﺨﺘﺼﺎت ﺗﺼﺎدﻓﯽ , ﺑﺎ ﺷﺮط 1 1 , ﺗﻮﻟﻴﺪ ﮐﺮدﻩ و ﺑﺎ ﺑﺪﺳﺖ ﺁوردن ﻧﺴﺒﺖ ﺗﻌﺪاد ﻧﻘﺎﻃﯽ ﮐﻪ در داﺧﻞ داﻳﺮﻩ واﺣﺪ ﻗﺮار ﻣﯽ ﮔﻴﺮﻧﺪ ﺑﻪ ﺗﻌﺪاد ﮐﻞ ﻧﻘﺎط ،ﺗﻘﺮﻳﺒﯽ از πرا ﺑﺮﮔﺮداﻧﺪ. ﺣﺎل در ﺑﺮﻧﺎﻣﻪ اﺻﻠﯽ ﺧﻮد ﻋﺪد nرا از ﮐﺎرﺑﺮ ﮔﺮﻓﺘﻪ و ﺗﻘﺮﻳﺐ ﺑﺪﺳﺖ ﺁﻣﺪﻩ از ﺗﺎﺑﻊ nرا در ﺧﺮوﺟﯽ ﭼﺎپ ﮐﻨﻴﺪ. ﻣﺴﺎﻟﻪ دوم . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ﺑﺎزﯼ ﺣﺪس ﺑﺮﻧﺎﻣﻪ اﯼ ﺑﺮاﯼ اﺟﺮاﯼ ﺑﺎزﯼ ﺣﺪس ﺑﺎ ﻗﻮاﻧﻴﻦ زﻳﺮ ﺑﻨﻮﻳﺴﻴﺪ : - در هﺮ ﺑﺎزﯼ ﻳﮏ ﻋﺪد ﺗﺼﺎدﻓﯽ ﻃﺒﻴﻌﯽ ﮐﻤﺘﺮ از 1000ﺗﻮﺳﻂ ﺑﺮﻧﺎﻣﻪ اﻧﺘﺨﺎب ﻣﯽ ﺷﻮد. ﮐﺎرﺑﺮ ﻣﯽ ﺗﻮاﻧﺪ ﺣﺪاﮐﺜﺮ 10ﺑﺎر ﺷﺎﻧﺲ ﺧﻮد را ﺑﺮاﯼ ﺣﺪس ﻋﺪد اﻧﺘﺨﺎﺑﯽ اﻣﺘﺤﺎن ﮐﻨﺪ. ﺑﺮاﯼ هﺮ ﺣﺪس ﮐﺎرﺑﺮ ،ﺧﺮوﺟﯽ ﺑﺮﻧﺎﻣﻪ ﻳﮑﯽ از 3ﺣﺎﻟﺖ زﻳﺮ ﺧﻮاهﺪ ﺑﻮد: !You win )Play again? (y/n - Too high, try again. Too low, try again. - و اﮔﺮ ﭘﺲ از 10ﺑﺎر ﺣﺪس زدن ،ﮐﺎرﺑﺮ ﻧﺘﻮاﻧﺪ ﻋﺪد اﻧﺘﺨﺎﺑﯽ را ﺣﺪس ﺑﺰﻧﺪ ،ﺑﺎ ﭘﻴﻐﺎم زﻳﺮ ﻣﻮاﺟﻪ ﺧﻮاهﺪ ﺷﺪ: … You have no more choice. The number was …You lose )Play again? (y/n - در ﺻﻮرت ﺗﻤﺎﻳﻞ ﮐﺎرﺑﺮ ،ﺑﺎزﯼ ﺑﺎﻳﺪ ﺗﮑﺮار ﺷﻮد. ﻣﺴﺎﻟﻪ ﺳﻮم . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ﻣﻴﺰ ﮔﺮد! nﻧﻔﺮ ﺑﺎ ﺷﻤﺎرﻩ هﺎﯼ … 1دور ﻳﮏ ﻣﻴﺰﮔﺮد ﻧﺸﺴﺘﻪ اﻧﺪ و در ﻳﮏ ﺑﺎزﯼ ﺷﺮﮐﺖ ﻣﯽ ﮐﻨﻨﺪ .ﻧﺤﻮﻩ ﺑﺎزﯼ ﺑﻪ اﻳﻦ ﺗﺮﺗﻴﺐ اﺳﺖ ﮐﻪ از ﻧﻔﺮ mام ﺷﺮوع ﮐﺮدﻩ و ﻳﮑﯽ در ﻣﻴﺎن اﻓﺮادﯼ را ﮐﻪ هﻨﻮز در ﺑﺎزﯼ ﺷﺮﮐﺖ دارﻧﺪ ،از ﺑﺎزﯼ ﺣﺬف ﻣﯽ ﮐﻨﻴﻢ).ﻳﻌﻨﯽ ﻓﺮد m ام ﺣﺬف و m+1ام در ﺑﺎزﯼ ﺑﺎﻗﯽ ﻣﯽ ﻣﺎﻧﺪ( اﻳﻦ ﮐﺎر ﺗﺎ ﺑﺎﻗﯽ ﻣﺎﻧﺪن ﺗﻨﻬﺎ ﻳﮏ ﻧﻔﺮ در ﺑﺎزﯼ اداﻣﻪ ﭘﻴﺪا ﻣﯽ ﮐﻨﺪ. ﺑﺮﻧﺎﻣﻪ اﯼ ﺑﻨﻮﻳﺴﻴﺪ ﮐﻪ از ﮐﺎرﺑﺮ m, nرا ﮔﺮﻓﺘﻪ و ﺑﺮﻧﺪﻩ ﺑﺎزﯼ را ﺗﻌﻴﻴﻦ ﮐﻨﺪ1000) . ( ﻧﻤﻮﻧﻪ اﺟﺮاﯼ ﺑﺮﻧﺎﻣﻪ: How manny people taake part? 10 Who is thhe first loserr? 3 The winnner is Numbeer 6 ﻣﺴﺎﻟﻪ ﭼﻬﺎرم . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ﺑﺮج ههﺎﻧﻮﯼ دﻳﺴﮏ را هﺎﻧﻮﯼ ﺑﺎ nﮏ ﯼ ﮐﻼﺳﻴﮏ ﺑﺮج ﮏ ﻪ ﺑﺮﻧﺎﻣﻪ اﯼ ﺑﻨﻮﻳﺴﻴﺪ ﮐﮐﻪ ﻋﺪد nرا از ﮐﺎرﺑﺮ ﮔﺮﻓﻓﺘﻪ و راﻩ ﺣﻞ ﻣﺴﺎﻟﻪ ﭼﺎپ ﮐﮐﻨﺪ. اﻳﻦ ﺑﺎززﯼ 3ﻗﺎﻧﻮن ددارد: ﻣﻴﻠﻪ Aﺑﺎﻳﺪ ﺑﻪ ﻣﻴﻴﻠﻪ Cاﻧﺘﻘﺎل ﻳﻳﺎﺑﻨﺪ. ﺴﮏ روﯼ ﻠﻪ ﺗﻤﺎم nدﻳﺴﺠﺎ ﮐﺮد. در هﺮ ﮔﺎم ﺗﻨﻬﺎ ﻳﮑﯽ از ددﻳﺴﮏ هﺎ راﻣﻣﯽ ﺗﻮان ﺟﺎﺑﺠﮑﺘﺮ ﻗﺮار داد. ﺑﺰرگ ﺗﺮ را روﯼ ددﻳﺴﮏ ﮐﻮﭼﮑ ﻧﻤﯽ ﺗﻮان ددﻳﺴﮏ گﻧﻤﻮﻧﻪ اﺟﺮاﯼ ﺑﺮﻧﺎﻣﻪ: Enter n: 3 The soluttion is: A->C A->B C->B A->C B->A B->C A->C
© Copyright 2026 Paperzz