Assignment-6.pdf

‫ﻣﺒﺎﻧﯽ ﺑﺮﻧﺎﻣﻪﺳﺎزي )‪(40153‬‬
‫‪f‬‬
‫ﻣﺪرس‪ :‬ﺣﻤﯿﺪ ﺿﺮاﺑﯽزاده‬
‫داﻧﺸﮑﺪهي ﻣﻬﻨﺪﺳﯽ ﮐﺎﻣﭙﯿﻮﺗﺮ‬
‫ﺗﻤﺮﯾﻦ ﺳﺮي ﺷﺸﻢ‬
‫ﻣﻬﻠﺖ ﺗﺤﻮﯾﻞ‪ :‬ﺷﻨﺒﻪ ‪ 21‬آﺑﺎن ‪ ،1390‬ﺳﺎﻋﺖ ‪ 9‬ﺻﺒﺢ‬
‫ﻧﮑﺎت ﮐﻠﯽ‬
‫‪ ‬ﮐﺪ ﻫﺮ ﺗﻤﺮﯾﻦ را در ﯾﮏ ﻓﺎﯾﻞ ﺟﺪاﮔﺎﻧﻪ و ﺑﺎ ﻧﺎم ﺧﻮاﺳﺘﻪ ﺷﺪه ﻗﺮار دﻫﯿﺪ‪ .‬ﺑﺎﻻي ﻫﺮ ﻓﺎﯾﻞ ﻧﺎم‪ ،‬ﻧﺎم ﺧﺎﻧﻮادﮔﯽ و‬
‫ﺷﻤﺎرهي داﻧﺶﺟﻮﯾﯽ ﺧﻮد را ذﮐﺮ ﮐﻨﯿﺪ‪.‬‬
‫‪ ‬ﺑﺮاي ارﺳﺎل ﺗﻤﺮﯾﻦﻫﺎ ﺑﻪ ﺳﺎﯾﺖ درس ﻣﺮاﺟﻌﻪ ﮐﻨﯿﺪ‪.‬‬
‫‪ ‬ﮐﺎﻣﻨﺖﮔﺬاري ﺑﺮاي ﺑﺮﻧﺎﻣﻪﻫﺎ ﺟﺰﺋﯽ از ﻧﻤﺮهي ﺗﻤﺮﯾﻦ ﺷﻤﺎﺳﺖ‪.‬‬
‫‪ ‬ﺑﺮﻧﺎﻣﻪﻫﺎي ﻣﺮﺑﻮط ﺑﻪ ﺗﻤﺮﯾﻦ ﭘﻨﺠﻢ ﺑﺎﯾﺪ ﺻﺮﻓﺎً ﺑﻪ زﺑﺎن ‪) C‬و ﻧﻪ ‪ (C++‬ﻧﻮﺷﺘﻪ ﺷﺪه و ﺑﺎ ﮐﺎﻣﭙﺎﯾﻠﺮﻫﺎي اﺳﺘﺎﻧﺪارد‬
‫ﺳﯽ )‪ (C99‬ﻗﺎﺑﻞ ﮐﺎﻣﭙﺎﯾﻞ ﺑﺎﺷﻨﺪ‪.‬‬
‫‪ ‬ﻣﻮﻋﺪ ارﺳﺎل‪ ،‬ﺳﺎﻋﺖ ‪ 9:00‬ﺻﺒﺢ روز ﺷﻨﺒﻪ ‪ 21‬آﺑﺎن ﻣﺎه ‪ 1390‬ﺑﻮده و ﺑﻪ ﻫﯿﭻ ﻋﻨﻮان ﺗﻤﺪﯾﺪ ﻧﺨﻮاﻫﺪ ﺷﺪ‪.‬‬
‫‪ ‬در ﺻﻮرت ﺗﺎﺧﯿﺮ‪ ،‬ﺑﻪ ازاي روز اول ‪ ٪30‬از ﻧﻤﺮهي ﺷﻤﺎ ﮐﺎﺳﺘﻪ ﺧﻮاﻫﺪ ﺷﺪ‪ .‬ﺗﺄﺧﯿﺮ ﺑﯿﺸﺘﺮ از ﺑﯿﺴﺖ و ﭼﻬﺎر ﺳﺎﻋﺖ‬
‫ﻗﺎﺑﻞ ﻗﺒﻮل ﻧﯿﺴﺖ‪.‬‬
‫‪ ‬ﻗﻄﻊ ﺑﻮدن اﯾﻨﺘﺮﻧﺖ ﺧﻮاﺑﮕﺎه‪ ،‬ﮐﻨﺪي ﭘﺎﯾﮕﺎه اﯾﻨﺘﺮﻧﺘﯽ داﻧﺸﮑﺪه‪ ،‬ﺗﻤﺎم ﺷﺪن ﮐﺎرت اﯾﻨﺘﺮﻧﺖ و … ﻫﯿﭻﮐﺪام دﻟﯿﻞ‬
‫ﻣﻮﺟﻬﯽ ﺑﺮاي ﺗﺄﺧﯿﺮ ﻧﯿﺴﺘﻨﺪ‪ .‬ﺑﻨﺎﺑﺮاﯾﻦ ﭘﯿﺸﻨﻬﺎد ﻣﯽﺷﻮد ﺟﻮابﻫﺎي ﺧﻮد را در داﻧﺸﮑﺪه ارﺳﺎل ﮐﻨﯿﺪ‪.‬‬
‫‪ ‬ﻫﻢﻓﮑﺮي ﺑﺎ دﯾﮕﺮ داﻧﺶﺟﻮﯾﺎن ﻣﻮرد ﻗﺒﻮل اﺳﺖ‪ ،‬اﻣﺎ ﻓﺎﯾﻞﻫﺎﯾﯽ ﮐﻪ ﻣﯽﻓﺮﺳﺘﯿﺪ ﺑﺎﯾﺪ ﺑﻪﻃﻮر ﮐﺎﻣﻞ ﺗﻮﺳﻂ ﺧﻮدﺗﺎن‬
‫ﻧﻮﺷﺘﻪ ﺷﺪه ﺑﺎﺷﻨﺪ‪ .‬ﮐﻢﺗﺮﯾﻦ ﺗﺨﻄﯽ از اﯾﻦ ﻣﻮﺿﻮع ﺑﺎﻋﺚ درﯾﺎﻓﺖ ﻧﻤﺮهي ‪ -100‬ﺑﺮاي ﮐﻤﮏدﻫﻨﺪه و ﮐﻤﮏﮔﯿﺮﻧﺪه‬
‫ﺧﻮاﻫﺪ ﺑﻮد و در ﺻﻮرت ﺗﮑﺮار‪ ،‬ﻣﻨﺠﺮ ﺑﻪ ﺣﺬف درس و ﮔﺰارش ﺑﻪ ﮐﻤﯿﺘﻪي اﻧﻀﺒﺎﻃﯽ ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬
‫‪ ‬در ﺻﻮرت وﺟﻮد ﻫﺮﮔﻮﻧﻪ ﻣﺸﮑﻞ‪ ،‬ﺳﻮاﻻت ﺧﻮد را از ﻃﺮﯾﻖ ﺳﯿﺴﺘﻢ ﭘﯿﺎﺗﺰا ﺑﺎ ﮐﻤﮏﻣﺪرﺳﯿﻦ در ﻣﯿﺎن ﺑﮕﺬارﯾﺪ‪.‬‬
‫ﻣﺴﺌﻠﻪي اول‪ :‬ﻋﺪد ﺟﺎﻟﺐ‬
‫ﻧﺎم ﻓﺎﯾﻞ‪interesting.c :‬‬
‫ﻋﺪد ﺟﺎﻟﺐ ﻋﺪدي اﺳﺖ ﮐﻪ ﺣﺪاﻗﻞ ﺳﻪ ﻋﺎﻣﻞ اول داﺷﺘﻪ ﺑﺎﺷﺪ‪ .‬ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﯾﺴﯿﺪ ﮐﻪ ﺑﺎ درﯾﺎﻓﺖ ﻋﺪد ﻃﺒﯿﻌﯽ ‪ n‬از ورودي‪،‬‬
‫اوﻟﯿﻦ ‪ n‬ﻋﺪد ﺟﺎﻟﺐ را ﻣﺤﺎﺳﺒﻪ و ﭼﺎپ ﮐﻨﺪ‪.‬‬
‫ورودي ﻧﻤﻮﻧﻪ‬
‫ﺧﺮوﺟﯽ ﻧﻤﻮﻧﻪ‬
‫‪30‬‬
‫‪42‬‬
‫‪60‬‬
‫‪66‬‬
‫‪70‬‬
‫‪Enter n: 5‬‬
‫ﺗﻤﺮﯾﻦ ﺳﺮي ﺷﺸﻢ ‪ -‬درس ﻣﺒﺎﻧﯽ ﺑﺮﻧﺎﻣﻪﺳﺎزي‬
‫‪1‬‬
‫ﻣﺴﺌﻠﻪي دوم‪ :‬ﮐﺎﺷﯽﮐﺎري‬
‫ﻧﺎم ﻓﺎﯾﻞ‪tiling.c :‬‬
‫ﻣﯽ ﺧﻮاﻫﯿﻢ ﮐﻒ ﯾﮏ اﺗﺎق ﺑﻪ اﺑﻌﺎد ‪ 2 x n‬را ﺑﻪ ﻃﻮر ﮐﺎﻣﻞ ﺑﺎ ﮐﺎﺷﯽﻫﺎﯾﯽ ﺑﻪ اﺑﻌﺎد ‪ 1 x 2‬ﮐﺎﺷﯽﮐﺎري ﮐﻨﯿﻢ‪ .‬ﮐﺎﺷﯽﻫﺎ‬
‫ﻣﯽﺗﻮاﻧﻨﺪ ﻫﻢ ﺑﻪ ﺻﻮرت اﻓﻘﯽ و ﻫﻢ ﺑﻪ ﺻﻮرت ﻋﻤﻮدي ﻗﺮار ﮔﯿﺮﻧﺪ‪ .‬ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﯾﺴﯿﺪ ﮐﻪ ﺗﻌﺪاد روشﻫﺎﯾﯽ ﮐﻪ ﻣﯽﺗﻮان اﯾﻦ‬
‫اﺗﺎق را ﮐﺎﺷﯽ ﮐﺮد ﺑﻪ ﻣﺎ ﻧﺸﺎن دﻫﺪ‪.‬‬
‫ﺧﺮوﺟﯽ ﻧﻤﻮﻧﻪ‬
‫ﺗﻤﺮﯾﻦ ﺳﺮي ﺷﺸﻢ ‪ -‬درس ﻣﺒﺎﻧﯽ ﺑﺮﻧﺎﻣﻪﺳﺎزي‬
‫‪2‬‬
‫ورودي ﻧﻤﻮﻧﻪ‬
‫‪3‬‬
‫‪Enter n: 3‬‬
‫‪55‬‬
‫‪Enter n: 9‬‬
‫ﻣﺴﺌﻠﻪي ﺳﻮم‪ :‬ﺑﺎزي ﻧﯿﻢ‬
‫ﻧﺎم ﻓﺎﯾﻞ‪nim.c :‬‬
‫ﻫﺪف از اﯾﻦ ﺗﻤﺮﯾﻦ ﺷﺒﯿﻪﺳﺎزي ﯾﮏ ﺑﺎزي ﻗﺪﯾﻤﯽ ﺑﻪ ﻧﺎم ﻧﯿﻢ اﺳﺖ‪ .‬در اﯾﻦ ﺑﺎزي ﯾﮏ ﺟﻌﺒﻪ دارﯾﻢ ﮐﻪ ﺣﺎوي ﺗﻌﺪادي ﻣﻬﺮه‬
‫اﺳﺖ‪ .‬ﻫﺮ ﺑﺎزﯾﮑﻦ در ﻫﺮ ﺣﺮﮐﺖ ﺣﺪاﻗﻞ ﯾﮏ و ﺣﺪاﮐﺜﺮ ﺳﻪ ﻣﻬﺮه را از اﯾﻦ ﺟﻌﺒﻪ ﺑﺮﻣﯽدارد‪ .‬ﺑﺎزﻧﺪهي ﺑﺎزي ﮐﺴﯽ اﺳﺖ ﮐﻪ‬
‫آﺧﺮﯾﻦ ﻣﻬﺮه را ﺑﺮدارد‪ .‬در اﯾﻦ ﺗﻤﺮﯾﻦ ﺷﻤﺎ ﺑﺎﯾﺪ ﺑﺎزي ﻧﯿﻢ را ﺑﯿﻦ ﮐﺎرﺑﺮ و ﮐﺎﻣﭙﯿﻮﺗﺮ ﭘﯿﺎدهﺳﺎزي ﮐﻨﯿﺪ‪ .‬ﺗﻌﺪاد ﻣﻬﺮهﻫﺎﯾﯽ ﮐﻪ از‬
‫اﺑﺘﺪا در ﺟﻌﺒﻪ ﻣﻮﺟﻮد اﺳﺖ ﺑﻪ ﺻﻮرت ﺗﺼﺎدﻓﯽ ﺑﯿﻦ ‪ 1‬ﺗﺎ ‪ 20‬ﺗﻌﯿﯿﻦ ﻣﯽﺷﻮد‪ .‬در ﻫﺮ ﻣﺮﺣﻠﻪ از ﺑﺎزي‪ ،‬اﺑﺘﺪا ﮐﺎرﺑﺮ ﺗﻌﺪاد‬
‫ﻣﻬﺮهﻫﺎﯾﯽ ﮐﻪ ﻣﯽﺧﻮاﻫﺪ از ﺟﻌﺒﻪ ﺑﺮدارد را وارد ﻣﯽﮐﻨﺪ‪ .‬ﺳﭙﺲ ﻧﻮﺑﺖ ﺑﻪ ﺑﺮﻧﺎﻣﻪ ﻣﯽرﺳﺪ ﺗﺎ ﺑﻪﺻﻮرت ﺗﺼﺎدﻓﯽ ﺗﻌﺪادي ﻣﻬﺮه‬
‫)ﺑﯿﻦ ‪ 1‬ﺗﺎ ‪ (3‬ﺑﺮدارد‪ .‬ﭘﺲ از ﻫﺮ ﺣﺮﮐﺖ‪ ،‬ﺗﻌﺪاد ﻣﻬﺮهﻫﺎي ﻓﻌﻠﯽ در ﺟﻌﺒﻪ ﻧﻤﺎﯾﺶ داده ﻣﯽﺷﻮد‪ .‬وﻗﺘﯽ ﻫﻤﻪي ﻣﻬﺮهﻫﺎ ﺑﺮداﺷﺘﻪ‬
‫ﺷﺪ‪ ،‬ﺑﺮﻧﺎﻣﻪ ﺑﺮﻧﺪهي ﺑﺎزي را اﻋﻼم ﻣﯽﮐﻨﺪ‪.‬‬
‫ﻣﺜﺎل ‪2‬‬
‫‪Number of balls:‬‬
‫‪7‬‬
‫‪Your turn: 2‬‬
‫‪5‬‬
‫‪My turn: 3‬‬
‫‪2‬‬
‫‪Your turn: 1‬‬
‫‪1‬‬
‫‪My turn: 1‬‬
‫‪0‬‬
‫!‪You won‬‬
‫ﺗﻤﺮﯾﻦ ﺳﺮي ﺷﺸﻢ ‪ -‬درس ﻣﺒﺎﻧﯽ ﺑﺮﻧﺎﻣﻪﺳﺎزي‬
‫‪Number of balls:‬‬
‫‪10‬‬
‫‪Your turn: 3‬‬
‫‪7‬‬
‫‪My turn: 1‬‬
‫‪6‬‬
‫‪Your turn: 2‬‬
‫‪4‬‬
‫‪My turn: 3‬‬
‫‪1‬‬
‫‪Your turn: 1‬‬
‫‪0‬‬
‫!‪I won‬‬
‫ﻣﺜﺎل ‪1‬‬
‫‪3‬‬