Introduction to Programming Assignment 3 Due: 11:59 pm, Sunday, November 14, 2010 (23/8/1389) Instructor: Ebrahim Barzegary Email: [email protected] 1 Fall 2010 Sharif University of Technology ﺗﻮﺿﻴﺤﺎت ﻗﺒﻞ از ﻧﻮﺷﺘﻦ ﺑﺮﻧﺎﻣﻪﻫﺎ و ارﺳﺎل آﻧﻬﺎ ﺑﻪ ﻣﻮارد زﻳﺮ ﺗﻮﺟﻪ ﻧﻤﺎﺋﻴﺪ .ﻋﺪم رﻋﺎﻳﺖ ﻫﺮ ﻳﻚ از ﻣﻮارد زﻳﺮ ﻣﻨﺠﺮ ﺑﻪ از دﺳﺖ دادن ﻛﻞ ﻧﻤﺮهي اﻳﻦ ﺗﻤﺮﻳﻦ ﺧﻮاﻫﺪ ﺷﺪ. در داﺧﻞ ﻫﺮ ﻛﺪام از ﺑﺮﻧﺎﻣﻪﻫﺎ ،ﺷﻤﺎرهي داﻧﺸﺠﻮﻳﻲ ﺧﻮد را ﺑﻪ ﺻﻮرت زﻳﺮ )(comment ﺑﻨﻮﻳﺴﻴﺪ: //ID: your student ID ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل: //ID:89654321 ﺑﻌﺪ از ﻧﻮﺷﺘﻦ ﻫﻤﻪي ﺑﺮﻧﺎﻣﻪﻫﺎ ،ﻓﺎﻳﻞ .cppﻣﺮﺑﻮط ﺑﻪ ﻫﻤﻪي آنﻫﺎ را در ﻳﻚ ﭘﻮﺷﻪ ﺑﻪ ﻧﺎم assignment#3_stdIDﻗﺮار دﻫﻴﺪ )ﻛﻪ در آن stdIDﺷﻤﺎرهي داﻧﺸﺠﻮﻳﻲ ﺷﻤﺎﺳﺖ(؛ ﻣﺜﻼً .assignment#3_89654321ﺳﭙﺲ اﻳﻦ ﭘﻮﺷﻪ را ﻓﺸﺮده ﻛﻨﻴﺪ .ﻓﺎﻳﻞ ﻓﺸﺮده ﺷﺪه را ﺑﻪ آدرس [email protected]ارﺳﺎل ﻧﻤﺎﻳﻴﺪ. 2 ﺗﻮﺿﻴﺤﺎت )اداﻣﻪ( ﻋﻨﻮان اﻳﻤﻴﻞ ﺑﺎﻳﺪ ﺑﻪ ﺻﻮرت assignment#3_stdIDﺑﺎﺷﺪ ،ﻛﻪ در آن stdIDﺷﻤﺎرهي داﻧﺸﺠﻮﻳﻲ ﺷﻤﺎﺳﺖ. ﻧﺤﻮهي ورودي ﮔﺮﻓﺘﻦ و ﺧﺮوﺟﻲ دادن ﺑﺮﻧﺎﻣﻪي ﺷﻤﺎ ﺑﺎﻳﺪ دﻗﻴﻘﺎً ﺑﻪ ﺻﻮرت ﮔﻔﺘﻪ ﺷﺪه در ﻣﺴﺄﻟﻪ ﺑﺎﺷﺪ. )ﻣﺜﻼً ﺑﻪ ﻓﺎﺻﻠﻪﻫﺎ و ﺑﺰرگ و ﻛﻮﭼﻚ ﺑﻮدن ﺣﺮوف دﻗﺖ ﻛﻨﻴﺪ(. ﺑﻪ ﻫﺮ ﻳﻚ از ﺑﺮﻧﺎﻣﻪﻫﺎي ﺷﻤﺎ ،ﺗﻌﺪادي دادهي ﻧﻤﻮﻧﻪ ﺟﻬﺖ آزﻣﺎﻳﺶ ﺑﺮﻧﺎﻣﻪ ،داده ﺧﻮاﻫﺪ ﺷﺪ ،ﺑﻨﺎﺑﺮاﻳﻦ ﺗﻮﺻﻴﻪ ﻣﻲﺷﻮد ﻛﻪ ﺣﺘﻤﺎً ﻳﻚ ﺑﺎر ﺗﺴﺖﻫﺎي ﻧﻤﻮﻧﻪ را ﺑﻪ ﺑﺮﻧﺎﻣﻪﻫﺎﻳﺘﺎن ﺑﺪﻫﻴﺪ. ﺗﺬﻛﺮ :1ﺑﻪ ﺑﺮﻧﺎﻣﻪﻫﺎي ﻣﺸﺎﺑﻪ ﻧﻤﺮهي ﻣﻨﻔﻲ ﺗﻌﻠﻖ ﺧﻮاﻫﺪ ﮔﺮﻓﺖ .ﺑﻨﺎﺑﺮاﻳﻦ اﻛﻴﺪاً ﺗﻮﺻﻴﻪ ﻣﻲﺷﻮد ﻛﻪ ﻫﺮ داﻧﺸﺠﻮ ﺑﺮﻧﺎﻣﻪي ﺧﻮد را ﺑﻪ ﺗﻨﻬﺎﻳﻲ ﻧﻮﺷﺘﻪ و ﺣﺘﻲاﻻﻣﻜﺎن داراي اﻟﮕﻮرﻳﺘﻢ ،ﻛﺪ و ﻧﺤﻮهي ﭘﻴﺎدهﺳﺎزي ﻣﺘﻔﺎوﺗﻲ ﺑﺎﺷﺪ. ﺗﺬﻛﺮ :2ﻫﻤﺎﻧﮕﻮﻧﻪ ﻛﻪ در ﺻﻔﺤﻪ اول ذﻛﺮ ﺷﺪه اﺳﺖ ،ﻣﻬﻠﺖ ارﺳﺎل ﺑﺮﻧﺎﻣﻪﻫﺎ ﺑﻪ اﻳﻤﻴﻞ ﻣﺸﺨﺺ ﺷﺪه، ﺳﺎﻋﺖ 23:59ﻳﻜﺸﻨﺒﻪ ) (89/8/23ﻣﻲﺑﺎﺷﺪ .ﺑﻪ ﺗﻤﺮﻳﻦﻫﺎﻳﻲ ﻛﻪ ﭘﺲ از اﻳﻦ ﺳﺎﻋﺖ ﺑﻪ آدرسِ ﻣﺸﺨﺺ ﺷﺪه ارﺳﺎل ﮔﺮدﻧﺪ ،ﻧﻤﺮه ﺻﻔﺮ ﺗﻌﻠﻖ ﺧﻮاﻫﺪ ﮔﺮﻓﺖ . ﺗﺬﻛﺮ :3ﺑﺮﻧﺎﻣﻪ ﻫﺎي ﺷﻤﺎ ﺑﻪ ﺻﻮرت ﺣﻀﻮري ﺗﺤﻮﻳﻞ ﮔﺮﻓﺘﻪ ﺧﻮاﻫﺪ ﺷﺪ ﺑﻨﺎﺑﺮاﻳﻦ ﺷﻤﺎ ﺑﺎﻳﺪ ﻗﺎدر ﺑﻪ ﺗﻮﺿﻴﺢ دادن روش ﻛﺎرﻛﺮد ﺑﺮﻧﺎﻣﻪ ﺧﻮد و در ﺻﻮرت ﻟﺰوم ﺗﻐﻴﻴﺮ در آن ﺑﺎﺷﻴﺪ . 3 ﻣﺴﺄﻟﻪي اول ،ﻋﺪد ﮔﻢ ﺷﺪه !!! )ﻧﺎم ﻓﺎﻳﻞ ﺑﺮﻧﺎﻣﻪ(lostNum.cpp : ﻳﻚ ﺟﺎﻳﮕﺸﺖ از اﻋﺪاد 1ﺗﺎ nدارﻳﻢ ﻛﻪ ﻳﻜﻲ از اﻋﺪاد آن ﮔﻢ ﺷﺪه اﺳﺖ !!! ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻋﺪد ﮔﻢ ﺷﺪه را ﭘﻴﺪا ﻛﻨﺪ. در ﺧﻂ اول ورودي ﺑﻪ ﺷﻤﺎ ﻋﺪد nداده ﻣﻲﺷﻮد ،ﺳﭙﺲ در ﺧﻂ ﺑﻌﺪ n-1 ﻋﺪد داده ﻣﻲﺷﻮد ﻛﻪ ﺑﺎ ﻓﺎﺻﻠﻪ از ﻫﻢ ﺟﺪا ﺷﺪهاﻧﺪ .ﺑﺮﻧﺎﻣﻪي ﺷﻤﺎ ﺑﺎﻳﺪ در ﺧﺮوﺟﻲ ،ﻋﺪد ﮔﻢ ﺷﺪه را ﺑﻨﻮﻳﺴﺪ . ﻧﻜﺘﻪ :ﺷﻤﺎ در ﺑﺮﻧﺎﻣﻪي ﺧﻮد ﻣﺠﺎز ﺑﻪ اﺳﺘﻔﺎده از آراﻳﻪ ﻳﺎ ﻫﻴﭻ داده ﺳﺎﺧﺘﺎر دﻳﮕﺮي ﻧﻴﺴﺘﻴﺪ و ﻓﻘﻂ ﻣﻲﺗﻮاﻧﻴﺪ از ﺗﻚ ﻣﺘﻐﻴﺮﻫﺎﻳﻲ از ﻧﻮع intاﺳﺘﻔﺎده ﻛﻨﻴﺪ. Sample Output : 4 Sample Input : 8 3512768 4 ﻣﺴﺄﻟﻪي دوم ،ﻣﺤﺎﺳﺒﻪي ﻋﺪد ∏ )ﻧﺎم ﻓﺎﻳﻞ ﺑﺮﻧﺎﻣﻪ(pi.cpp : ﻣﻲﺧﻮاﻫﻴﻢ ﻋﺪد ﭘﻲ را ﺑﺎ اﺳﺘﻔﺎده از روش ﻣﻮﻧﺖ ﻛﺎرﻟﻮ ﻣﺤﺎﺳﺒﻪ ﻛﻨﻴﻢ .اﻳﻦ روش ﺑﻪ اﻳﻦ ﺻﻮرت اﺳﺖ ﻛﻪ nﺑﺎر ﻳﻚ ﻧﻘﻄﻪ ﺑﻪ ﻃﻮر ﺗﺼﺎدﻓﻲ ) (Randomرا اﻧﺘﺨﺎب ﻣﻲﻛﻨﻴﻢ ﺑﻪ ﻃﻮري ﻛﻪ− 1 ≤ x, y ≤ 1 : ﭼﻮن اﻳﻦ اﻧﺘﺨﺎب ﺷﻤﺎ ﺑﺮ اﺳﺎس ﺗﺼﺎدف ﺑﻮده اﺣﺘﻤﺎل اﻳﻨﻜﻪ اﻳﻦ ﻧﻘﻄﻪ در درون داﻳﺮه ﺑﻪ ﻣﺮﻛﺰ ) (0,0و ﺑﻪ ﺷﻌﺎع 1ﻗﺮار ﺑﮕﻴﺮد ﺑﺮاﺑﺮ اﺳﺖ ﺑﺎ . ∏/4 ﺑﺮاي اﻳﻨﻜﻪ ﻋﺪد ﭘﻲ را ﺣﺴﺎب ﻛﻨﻴﺪ ﺗﻌﺪاد 1000000ﻧﻘﻄﻪ ﺑﻪ ﻃﻮر ﺗﺼﺎدﻓﻲ اﻧﺘﺨﺎب ﻛﻨﻴﺪ و ﺑﺎ اﺳﺘﻔﺎده از ﻧﺴﺒﺖ ﺗﻌﺪاد ﻧﻘﺎط درون داﻳﺮه ﺑﻪ ﺗﻌﺪاد ﻛﻞ ﻧﻘﺎط ﻛﻪ ﺗﻘﺮﻳﺒﺎ ∏/4 اﺳﺖ ﻣﻘﺪار ﻋﺪد ﭘﻲ را ﺣﺴﺎب ﻛﻨﻴﺪ . 5 ﻣﺴﺄﻟﻪي دوم )اداﻣﻪ( ﺑﺮﻧﺎﻣﻪ ﺷﻤﺎ ورودي ﻧﺪارد و ﺧﺮوﺟﻲ آن ﻳﻚ ﻋﺪد اﺳﺖ ﻛﻪ ﻫﻤﺎن ﻋﺪد ﭘﻲ اﺳﺖ. ﺗﻮﺟﻪ :ﺑﺮﻧﺎﻣﻪ ﺷﻤﺎ ﺑﺎﻳﺪ داراي ﺗﺎﺑﻌﻲ ﺑﺎﺷﺪ ﻛﻪ ﻳﻚ ﻋﺪد ﺗﺼﺎدﻓﻲ ﺗﻮﻟﻴﺪ ﻛﻨﺪ ،اﮔﺮ در داﻳﺮه ﻗﺮار داﺷﺖ ﻣﻘﺪار 1را ﺑﺮﮔﺮداﻧﺪ و اﮔﺮ وﺟﻮد ﻧﺪاﺷﺖ ﻣﻘﺪار 0و ﺳﭙﺲ ﻧﺴﺒﺖ ﺗﻌﺪاد ﺑﺎرﻫﺎﻳﻲ ﻛﻪ ﺗﺎﺑﻊ ﻋﺪد 1را ﺑﺮﮔﺮداﻧﺪه ﺑﻪ ﺗﻌﺪاد ﻛﻞ آزﻣﺎﻳﺶﻫﺎ را ﺣﺴﺎب ﻛﻨﻴﺪ. 6 ﻣﺴﺄﻟﻪي ﺳﻮم ،ﺗﻐﻴﻴﺮ ﻣﺒﻨﺎ )ﻧﺎم ﻓﺎﻳﻞ ﺑﺮﻧﺎﻣﻪ(radixChanging.cpp : ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻳﻚ ﻋﺪد را در ﻣﺒﻨﺎﻳﻲ ﻏﻴﺮ از ﻣﺒﻨﺎي 10ﮔﺮﻓﺘﻪ و آن ﻋﺪد را در ﻣﺒﻨﺎي 10ﻧﻤﺎﻳﺶ دﻫﺪ .ﺑﺮﻧﺎﻣﻪ ﺑﻪ اﻳﻦ ﺻﻮرت ﻋﻤﻞ ﻣﻲﻛﻨﺪ ﻛﻪ در ورودي ،اﺑﺘﺪا ﻋﺪد ﻣﻮرد ﻧﻈﺮ و ﺑﻌﺪ از آن ﺑﺎ ﻳﻚ ﻓﺎﺻﻠﻪ ﻣﺒﻨﺎي آن ﻋﺪد داده ﻣﻲﺷﻮد .در ﺧﺮوﺟﻲ ﺑﺎﻳﺪ ﻣﺒﻨﺎي 10ﻣﺮﺑﻮط ﺑﻪ آن ﻋﺪد ﭼﺎپ ﺷﻮد. )ﺗﻮﺟﻪ :ﺑﺮﻧﺎﻣﻪي ﺷﻤﺎ ﺑﺎﻳﺪ داراي ﺗﺎﺑﻌﻲ ﺑﺎﺷﺪ ﻛﻪ دو ﻋﺪد ﺑﻪ ﻋﻨﻮان ورودي ﺑﮕﻴﺮد ﻛﻪ ﻳﻜﻲ ﻋﺪد و دﻳﮕﺮي ﻣﺒﻨﺎي آن اﺳﺖ و ﺑﻪ ﻋﻨﻮان ﺧﺮوﺟﻲ ﻣﻘﺪار آن ﻋﺪد در ﻣﺒﻨﺎي 10را ﺑﺪﻫﺪ(. Sample Output : 153 Sample Input : 231 8 7 ﻣﺴﺄﻟﻪي ﭼﻬﺎرم ،ﺟﻨﺎس ﻗﻠﺐ! )ﻧﺎم ﻓﺎﻳﻞ ﺑﺮﻧﺎﻣﻪ(heart.cpp : ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻳﻚ ﻋﺪد از ورودي ﺑﺨﻮاﻧﺪ و ﺗﻌﻴﻴﻦ ﻛﻨﺪ ﻛﻪ ﺟﻨﺎس ﻗﻠﺐ دارد ﻳﺎ ﻧﻪ .ﻋﺪدي ﺟﻨﺎس ﻗﻠﺐ دارد ﻛﻪ از ﻫﺮ دو ﺟﻬﺖ ﻳﻜﺴﺎن ﺧﻮاﻧﺪه ﺷﻮد .در ﺻﻮرﺗﻲ ﻛﻪ ﺟﻨﺎس ﻗﻠﺐ اﺳﺖ در ﺧﺮوﺟﻲ YESو اﮔﺮ ﻧﻴﺴﺖ NO ﭼﺎپ ﻛﻨﺪ. ﻧﻜﺘﻪ :ﺷﻤﺎ در ﺑﺮﻧﺎﻣﻪي ﺧﻮد ﻣﺠﺎز ﺑﻪ اﺳﺘﻔﺎده از آراﻳﻪ ﻳﺎ ﻫﻴﭻ داده ﺳﺎﺧﺘﺎر دﻳﮕﺮي ﻧﻴﺴﺘﻴﺪ و ﻓﻘﻂ ﻣﻲﺗﻮاﻧﻴﺪ از ﺗﻚ ﻣﺘﻐﻴﺮﻫﺎﻳﻲ از ﻧﻮع intاﺳﺘﻔﺎده ﻛﻨﻴﺪ. Sample Output : NO Sample Input : 1234 Sample Output: YES Sample Input : 1467641 8
© Copyright 2025 Paperzz