Assignment 3.pdf

‫ﺗﻤﺮﻳﻨﺎت ﺳﺮي ﺳﻮم‬
‫آﺧﺮﻳﻦ ﻣﻬﻠﺖ ﺗﺤﻮﻳﻞ ﺳﺎﻋﺖ ‪ 12:00‬ﻇﻬﺮ ‪ 1‬آﺑﺎن ‪86‬‬
‫ﻧﺤﻮه ﺗﺤﻮﻳﻞ ‪:‬‬
‫•‬
‫ﻓﺎﻳﻞ ﻫﺎي ﺑﺮﻧﺎﻣﻪ ﻫﺎي ﺧﻮد را در ﻳﻚ داﻳﺮﻛﺘﻮري ﺑﻪ ﺷﻤﺎره داﻧﺸﺠﻮﻳﻲ ﺧﻮد ﻗﺮار دﻫﻴﺪ‪ ،‬داﻳﺮﻛﺘﻮري را ‪ zip‬ﻛﺮده و آن را ﺑﺎ ﻣﺸﺨﺼﺎت‬
‫زﻳﺮ ‪ email‬ﺑﺰﻧﻴﺪ‪ .‬ﺑﻪ ﺟﺎي ‪ X‬ﻫﺎ ﺷﻤﺎره ي داﻧﺸﺠﻮﻳﻲ ﺧﻮد را ﻗﺮار دﻫﻴﺪ‪ .‬ﺑﻪ ﺑﺮﻧﺎﻣﻪ ﻫﺎﻳﻲ ﻛﻪ ﺑﻪ ﺻﻮرت دﻳﮕﺮي ﻓﺮﺳﺘﺎده ﺷﺪه‬
‫اﻧﺪ‪ ،‬ﻧﻤﺮه اي ﺗﻌﻠﻖ ﻧﻤﻲ ﮔﻴﺮد‪.‬‬
‫‪To: sharifcpp86@gmail.com‬‬
‫‪Subject: HW3-XXXXXXXX‬‬
‫•‬
‫ﺑﺮﻧﺎﻣﻪ ﻫﺎي ﺧﻮد را ﻣﺮﺗﺐ و ﺧﻮاﻧﺎ ﺑﻨﻮﻳﺴﻴﺪ و از ﺗﻮرﻓﺘﮕﻲ ﻫﺎي ﻻزم و اﺳﺎﻣﻲ ﻣﻨﺎﺳﺐ اﺳﺘﻔﺎده ﻧﻤﺎﻳﻴﺪ‪ .‬در اﺑﺘﺪاي ﻫﺮ ﺑﺮﻧﺎﻣﻪ ﻳﻚ ﺗﻮﺿﻴﺢ‬
‫)‪ (comment‬در ﻣﻮرد ﻛﺎري ﻛﻪ ﺑﺮﻧﺎﻣﻪ اﻧﺠﺎم ﻣﻲ دﻫﺪ‪ ،‬اﺿﺎﻓﻪ ﻛﻨﻴﺪ‪.‬‬
‫•‬
‫ورودي و ﺧﺮوﺟﻲ ﺑﺮﻧﺎﻣﻪ ﻫﺎ را ﺣﺘﻲ اﻻﻣﻜﺎن ﺑﺮ اﺳﺎس ﻓﺮﻣﺖ اراﺋﻪ ﺷﺪه در ﻣﺜﺎل ﻫﺎي داﺧﻞ ﻛﺎدرﻫﺎي ﺧﺎﻛﺴﺘﺮي ﻃﺮاﺣﻲ ﻛﻨﻴﺪ‪.‬‬
‫•‬
‫ازﺁﻧﺠﺎ ﮐﻪ ﺗﻤﺮﻳﻦ هﺎ هﺮ هﻔﺘﻪ ﻧﻴﻢ ﺳﺎﻋﺖ ﺑﻌﺪ از ‪ deadline‬در ﮐﻼس ﺣﻞ ﺗﻤﺮﻳﻦ ﺣﻞ ﻣﯽ ﺷﻮﻧﺪ ﺗﻤﺪﻳﺪ ﻣﻬﻠﺖ ﺗﺤﻮﻳﻞ ﻏﻴﺮ ﻣﻤﮑﻦ اﺳﺖ‪.‬‬
‫ﻛﺘﺎب ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﻳﺴﻲ‬
‫ب‬
‫ﺳﻮال ‪-1‬‬
‫ل‬
‫ﺷﺘﻪ ي ‪.Deitel & Deitel‬‬
‫آﺷﻨﺎﻳﻲ ﻛﻠﻲ و اوﻟﻴﻪ ي داﻧﺸﺠﻮﻳﺎن ﺑﺎ ﻛﺘﺎﺎب ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﺑﻪ زﺑﺎن ‪ C++‬ﻧﻮﺷ‬
‫ﻲ‬
‫اﻳﻦ ﺳﻮال ﺻﺮﻓﺎ ﺑﻬﺎﻧﻪ اي اﺳﺖ ﺑﺮاي‬
‫ﺳﻌﻲ ﻛﻨﻴﺪ ﻛﺘﺎب را ﺎﺗﺎ ﺣﺪاﻛﺜﺮ ﺟﺎي ﻣﻤﻤﻜﻦ ﺑﻪ ﺳﻤﺖ ﻟﺒﻪ ي ﻣﻴﺰ ﺟﻠﻮ ﺑﺒﺮﻳﺪ‪ .‬ﻣﺘﻮﺟﻪ ﻣﻲ‬
‫ﻗﺮار دﻫﻴﺪ‪ .‬اﺑﺘﺪا ﻲ‬
‫ﻳﻚ ﻣﻴﺰ ﻣﺴﻄﺢ ر‬
‫اول ﻛﺘﺎب را روي ﻚ‬
‫ﺟﻠﺪ ل‬
‫ﻣﻲ ﺗﻮان از ﻟﺒﻪ ﻣﻴﺰ ﺟﻠﻮﺗﺮ ﺑﺮد ﻗﺒﻞ زاز اﻳﻨﻜﻪ ﺑﻴﺎﻓﺘﺪ‪ .‬ﺳﭙﭙﺲ ﺑﺎ اﺳﺘﻔﺎده از ﺟﻠﺪ دوم‪ ،‬دو‬
‫ﺣﺪ اﻛﺜﺮ ﺑﻪ اﻧﺪازه ي ﻧﺼﻒ ﻃﻮﻟﺶ ﻲ‬
‫ﻛﻪ ﻳﻚ ﻛﺘﺎب را ﺪ‬
‫ﺷﻮﻳﺪ ﻪ‬
‫ﻛﺘﺎب را ﻃﻮري روي ﻟﺒﻪ ي ﻣﻴﺰ ﻗﺮار دﻫﻴﺪ ﺗﺗﺎ ﻓﺎﺻﻠﻪ ي دورﺗﺮﻳﻳﻦ ﻧﻘﻄﻪ ﻛﺘﺎب ﺑﺎﻻﻻﻳﻲ از ﻟﺒﻪ ي ﻣﻴﺰ ﻣﺎﻛﺰﻳﻤﻢ ﺷﻮد و ﻛﻛﺘﺎﺑﻬﺎ روي ﻟﺒﻪ ﺑﻪ ﺗﺗﻌﺎدل ﺑﺮﺳﻨﺪ‪.‬‬
‫ﺷﺎﻳﺪ ﺑﻪ اﻳﻦ ﻧﺘﻴﺠﻪ‬
‫ﺻﻠﻪ ﻣﻤﻜﻦ از‬
‫ﭼﻴﺪ ﻛﻪ ﺑﻴﺸﺘﺮﻳﻦ ﻓﺎﺻ‬
‫ﺑﻪ ﻛﻤﻚ ﻛﺘﺎﺑﻬﺎي ددوﺳﺘﺎﻧﺘﺎن( را ﻣﻴﺘﺘﻮان ﺑﻪ روش اﺳﺘﻘﻘﺮاﻳﻲ ﻃﻮري ﺪ‬
‫ﺑﺮﺳﻴﺪ ﻛﻪ ‪ n‬ﻛﺘﺎب ) ﻪ‬
‫ﺪ‬
‫ﻟﺒﻪ ي ﻣﻴﺰ ﻓﺮاﺗﺮ ﻣﻲ رود‪ ،‬دوﻣﻴﻦ ب‬
‫ﻛﻪ اوﻟﻴﻦ ﻛﺘﺎب ﺑﻪ اﻧﻧﺪازه ي )‪ 1/(n+1‬ﻃﻮﻟﺶ از ﻪ‬
‫ﻟﺒﻪي ﻣﻴﻴﺰ را داﺷﺘﻪ ﺑﺎﺷﻴﻢ‪ ،‬ﺑﻪ اﻳﻦ ﺻﻮرت ﻪ‬
‫ﻛﺘﺎب ﺑﻪ اﻧﺪازه ي‬
‫ﻳﻌﻨﻲ ﺑﺎ ‪ n‬ﻛﺘﺎب‬
‫‪ 1/2‬ﻃﻮﻟﺶ از ﻛﺘﺘﺎب ﻗﺒﻠﻲ اش ﺟﻠﻠﻮﺗﺮ ﻣﻲ رود‪ .‬ﻲ‬
‫ﺟﻠﻮﺗﺮ و ﺑﻪ ﻫﻤﻴﻦ ﺗﺮﺗﻴﻴﺐ ﺗﺎ ﻛﺘﺎب آﺧﺮ ﻛﻛﻪ ﺑﻪ اﻧﺪازه ي ‪2‬‬
‫ﺮ‬
‫‪ 1/n‬زاز ﻛﺘﺎب اول‬
‫ﻣﻴﺘﻮان ﺑﺑﻪ اﻧﺪازه ي زﻳﺮ از ﻟﺒﻪ ي ﻣﻴﺰ ﺟﻠﻮﺗﺮ رﻓﺖ‪:‬‬
‫‪1/(n+1) + 1/n + 1/(n-1) + .. + 1/3 + 1/2‬‬
‫ﺣﺪاﻗﻞ ﺗﻌﺪاد ﻛﺘﺎب‬
‫ﻞ‬
‫ﻃﻮل ﻛﺘﺎب‪،‬‬
‫ﺴﺐ ﺿﺮﻳﺒﻲ از ﻃﻮ‬
‫ﺠﻴﺐ‪ ،‬ﺑﺮﻧﺎﻣﻪ اي ﺑﻨﻮﻮﻳﺴﻴﺪ ﻛﻪ ﺑﺎ ﮔﺮﻓﺘﺘﻦ ﻳﻚ ﻋﺪد ﺑﺮ ﺣﺴ‬
‫ﺑﺎ ﻓﺮض درﺳﺖ ﺑﻮدن اﻳﻦ ﻧﺘﻴﺠﻪ ﮔﻴﺮي ﻋﺠ‬
‫ﻫﺎي ﻻزم ﺑﺮاي ﮔﺬﺷﺘﻦ از اﻳﻦ ﺣﺪ را ﻣﺤﺎﺳﺒﺒﻪ ﻛﻨﺪ‪.‬‬
‫ﺑﻬﺘﺮ اﺳﺖ‬
‫ﺟﺎﻳﻲ ﻛﻪ ﻫﻫﺮ ﭼﻪ ﻛﻤﺘﺘﺮ ﺳﻮال ﺑﭙﺮﺮﺳﻴﺪ ﺮ‬
‫ﺳﻮال ‪ -2‬ﺗﻨﻬﺎ ﺟ‬
‫ل‬
‫ورودي‪ "Yes" :‬ﻳﺎ "‪"No‬‬
‫ﺨﻮاه ﺣﺪاﻛﺜﺮ ‪ 8‬ﺑﺎر‪.‬‬
‫ﺧﺮوﺟﻲ‪ :‬ﺳﻮال ﻫﺎي دﻟﺨ‬
‫ﺟﻲ ﺑﻨﻮﻳﺴﻴﺪ‪.‬‬
‫در اﻧﺘﻬﺎ ﺑﺎﻳﺪ ﻋﺪﺪدي را ﻛﻪ ﺣﺪس زده اﻳﺪ در ﺧﺮوﺟ‬
‫ﻣﺒﺎﻧﯽ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ | ﺗﻤﺮﻳﻨﺎت ﺳﺮﯼ ﺳﻮم‬
‫ﺷﻤﺎ ﻋﺪدي از ‪ 1‬ﺎﺗﺎ ‪ 256‬را در ذﻫﻦ ﺧﻮد در ﻧﻈﺮ ﻣﻲ ﮔﻴﺮد‪ .‬ﺑﺮﻧﺎﻣﻪ ﺷﻤﺎ ﺑﺎﻳﺪ ﺑﺎ ﭘﺮﺳﻴﺪن ﺣ‬
‫ﻓﺮض ﻛﻨﻨﻴﺪ ﻛﺎرﺑﺮ ﺑﺮﻧﺎﻣﻪ ﺷ‬
‫ﺣﺪاﻛﺜﺮ ‪ 8‬ﺳﻮال )ﺑﻪ ﻃﻮري ﻛﻪ‬
‫ﺟﻮاب ﻫﻫﺎ ﺑﻠﻲ‪/‬ﺧﻴﺮ ﺑﺎﺷﻨﺪ( و درﻳﺎﻓﺖ ﺟﻮاب ﻫﺎ از ﻛﺎرﺑﺮ‪،‬‬
‫ﺎ‬
‫ﺣﺘﻤﺎ ﻋﺪد ﻣﻮرد ﻧﻈﺮ ووي را ﺑﻪ دﺳﺖ آوررد‪ .‬ﺷﻤﺎ اﺟﺎزه دارﻳﺪ ﻫﺮ ﺳﻮاﻟﻲ ﻛﻪ دوﺳﺖ دارﻳﺪ‬
‫ﺑﭙﺮﺳﻴﺪ‪.‬‬
‫‪1‬‬
‫ﺳﻮال ‪" Who's Perfec t?" -3‬‬
‫ل‬
‫ﻃﺒﻴﻌﻲ ‪ n‬ﻛﺎﻣﻞ اﺳﺖ اﮔﮔﺮ و ﻓﻘﻂ اﮔﺮ ﻣﺠﻤﻤﻮع ﻣﻘﺴﻮم ﻋﻠﻴﻪ ﻫﻫﺎي ﺳﺮه )ﺑﻪ‬
‫ﻲ‬
‫ﻋﺪد ﻛﺎﻣﻣﻞ )‪ (Perfect Number‬ﺗﻌﺮﻳﻒ ﺳﺎده اي دارد‪ .‬ﻋﺪد‬
‫ﺟﺰ ‪ (n‬آآن ﺑﺮاﺑﺮ ﺧﻮد ﻋﺪد ‪ n‬ﺷﻮد‪ .‬ﻛﻮﭼﻜﺘﺮﻳﻳﻦ ﻋﺪد ﻃﺒﻴﻌﻲ ﻛﺎﺎﻣﻞ ‪ 6‬اﺳﺖ‪:‬‬
‫‪1+2+3=6‬‬
‫ﻛﺎﻣﻞ اﺳﺖ ﻳﺎ ﺧﻴﺮ‪.‬‬
‫ﺑﺮﻧﺎﻣﻪ ي ﺷﻤﺎ ﺑﺎ درﻳﺎﻓﺖ ﻳﻚ ﻋﺪد از ورودي ﻣﺸﺨﺺ ﻣﻲ ﻛﻨﺪ ﻛﻪ اﻳﻦ ﻋﺪد ﻞ‬
‫ورودي‪ :‬ﻳﻚ ﻋﺪد ﻃﺒﻴﻌﻲ‬
‫ﺧﺮوﺟﻲ‪ "Yes" :‬در ﺻﻮﻮرﺗﻲ ﻛﻪ ورودي ﻛﻛﺎﻣﻞ ﺑﺎﺷﺪ وﮔﺮﻧﻪ "‪"No‬‬
‫ﻣﺒﺎﻧﯽ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ | ﺗﻤﺮﻳﻨﺎت ﺳﺮﯼ ﺳﻮم‬
‫‪2‬‬