HW3.pdf

‫ ‬
‫ﻣﺒﺎﻧﯽ ﺑﺮﻧﺎﻣﻪﺳﺎزی )‪(۴۰-۱۵۳) (C/C++‬‬
‫)‪Introduction to Programming (C/C++‬‬
‫ﻣﺪرس‪ :‬ﺷﺮوﻳﻦ داﻧﺶﭘﮋوه‬
‫داﻧﺸﮑﺪهی ﻣﻬﻨﺪﺳﯽ ﮐﺎﻣﭙﻴﻮﺗﺮ‬
‫ﻣﻮﻋﺪ ﻮﻳﻞ‪ :‬ﺳﺎﻋﺖ‪ ،۱۵:۳۰‬روز ﺷﻨﺒﻪ ‪۱۳۹۰/۲/۱۰‬‬
‫‪"#‬ﺮﻳﻦ ﺎره ‪٣‬‬
‫&ﻮه ارﺳﺎل‬
‫ﻛﺪ ﻣﺮﺑﻮط ﺑﻪ ﻫﺮ ﺗﻤﺮﻳﻦ را در ﻳﻚ ﻓﺎﻳﻞ ﺑﻪ ﺻﻮرت ‪ HWxx.cpp‬ﻗﺮار دﻫﻴﺪ ﻛﻪ ‪ xx‬ﺷﻤﺎره آن ﺗﻤﺮﻳﻦ ﻣﻲ ﺑﺎﺷﺪ‪ .‬ﻣﺜﻼ ﻛﺪ ﺗﻤﺮﻳﻦ اول‬
‫در ﻓﺎﻳﻠﻲ ﺑﻪ ﻧﺎم ‪ HW01.cpp‬ﻗﺮار ﻣﻲ ﮔﻴﺮد ‪،‬ﺳﭙﺲ ﺗﻤﺎﻣﻲ ﻛﺪ ﻫﺎي ﺧﻮد را ﻛﻨﺎر ﻫﻢ ﻗﺮار داده و آن ﻫﺎ را ‪ zip‬ﻧﻤﺎﻳﻴﺪ و اﺳﻢ ﻓﺎﻳﻞ‬
‫زﻳﭗ را ﺑﻪ ﺻﻮرت ‪ HW3_STDID.zip‬ﻗﺮار دﻫﻴﺪ‪ ،‬ﻛﻪ ‪ STDID‬ﺷﻤﺎره داﻧﺸﺠﻮﻳﻲ ﺷﻤﺎﺳﺖ ﻣﺜﻞ ‪ HW3_8912345.zip‬و آنرا‬
‫در ﻣﻮﻋﺪ ﻣﻘﺮر ﺑﻪ آدرس اﻳﻤﻴﻞ ‪ [email protected]‬ارﺳﺎل ﻧﻤﺎﻳﻴﺪ‪.‬‬
‫ﺗﻮﺟﻪ ‪ :1‬ﺑﻪ ﺗﻤﺮﻳﻨﺎﺗﻲ ﻛﻪ ﺑﻪ ﺻﻮرت ﻛﺎﻏﺬي ﺗﺤﻮﻳﻞ ﺷﻮﻧﺪ‪ ،‬ﻳﺎ اﺳﻜﻦ ﺷﻮﻧﺪ‪ ،‬ﻧﻤﺮهاي ﺗﻌﻠﻖ ﻧﺨﻮاﻫﺪ ﮔﺮﻓﺖ‪ .‬ﺑﺮﻧﺎﻣﻪﻫﺎ ﺑﺎﻳﺪ در ﻓﺮﻣﺖ ﻓﺎﻳﻞ‬
‫‪ cpp‬ﻧﻮﺷﺘﻪ ﺷﺪه و ﺑﺎ ﻳﻚ ﻛﺎﻣﭙﺎﻳﻠﺮ ‪ C/C++‬ﺗﺴﺖ و اﺟﺮا ﺷﺪه ﺑﺎﺷﻨﺪ‪.‬‬
‫ﺗﻮﺟﻪ ‪ :2‬از ارﺳﺎل ﻓﺎﻳﻞ اﺟﺮاﻳﻲ ﺑﻪ ﻫﻤﺮاه ﺳﻮرس‪ ،‬ﺧﻮدداري ﻛﻨﻴﺪ‪ .‬ﺳﻴﺴﺘﻢ ‪ gmail‬و اﻛﺜﺮ ﺳﺮوﻳﺲﻫﺎي اﻳﻤﻴﻞ از درﻳﺎﻓﺖ ﻓﺎﻳﻞ اﺟﺮاﻳﻲ‬
‫)ﺣﺘﻲ اﮔﺮ در داﺧﻞ ﻓﺎﻳﻞ ‪ zip‬ﺑﺎﺷﻨﺪ( ﺧﻮدداري ﻣﻲﻛﻨﺪ‪ .‬ﺑﻨﺎﺑﺮاﻳﻦ ﻣﺴﺌﻮﻟﻴﺖ ﻧﺮﺳﻴﺪن ﭼﻨﻴﻦ اﻳﻤﻴﻞﻫﺎﻳﻲ ﺑﻌﻬﺪه داﻧﺸﺠﻮ اﺳﺖ‪.‬‬
‫ﺗﻮﺟﻪ ‪ :3‬از ارﺳﺎل ﺗﻤﺮﻳﻦﻫﺎ ﺑﻪ ﮔﺮوه درس ﺧﻮدداري ﻛﻨﻴﺪ! و ﺣﺘﻤﺎ ﺑﻪ ﻫﻨﮕﺎم وارد ﻧﻤﻮدن آدرس اﻳﻤﻴﻞ ﮔﻴﺮﻧﺪه )ﺑﺨﺼﻮص در ‪(gmail‬‬
‫دﻗﺖ ﻛﻨﻴﺪ‪ ،‬ﺗﺎ اﺷﺘﺒﺎﻫﺎ آدرس ﮔﺮوه ﺑﻪ ﺟﺎي آدرس اﻳﻤﻴﻞ ﺗﻤﺮﻳﻦﻫﺎ وارد ﻧﺸﺪه ﺑﺎﺷﺪ‪.‬‬
‫روش ارزﻳﺎ('‬
‫ارزﻳﺎﺑﻲ‬
‫ﻋﻨﻮان‬
‫*‪%100‬‬
‫در زﻣﺎن ﻣﻘﺮر‬
‫ﺗﺎ ‪ 1‬روز ﭘﺲ از زﻣﺎن ﻣﻘﺮر‬
‫*‬
‫ﺑﻴﺶ از ﻳﻚ روز و ﺗﺎ ‪ 3‬روز ﭘﺲ از زﻣﺎن ﻣﻘﺮر‬
‫*‬
‫ﺑﻴﺶ از ﺳﻪ روز و ﺗﺎ ﻳﻚ ﻫﻔﺘﻪ ﭘﺲ از زﻣﺎن ﻣﻘﺮر‬
‫*‪%20‬‬
‫‪%60‬‬
‫‪%30‬‬
‫*‬
‫ﺑﻴﺶ از ﻳﻚ ﻫﻔﺘﻪ ﭘﺲ از زﻣﺎن ﻣﻘﺮر‬
‫ﺗﻘﻠﺐ‪ ،‬ﻛﭙﻲ ﺑﺮداري و ﻣﻮاردي از اﻳﻦ ﻗﺒﻴﻞ‬
‫‪%0‬‬
‫)ﻧﻤﺮه ﻛﺎﻣﻞ ﺗﻤﺮﻳﻦ( * ‪-1‬‬
‫*درﺻﺪﻫﺎي ﻓﻮق ﻧﺴﺒﺖ ﺑﻪ ﻧﻤﺮه ﻛﺴﺐ ﺷﺪهي ﺗﻤﺮﻳﻦ ﺗﻮﺳﻂ داﻧﺶﺟﻮ ﻣﻲﺑﺎﺷﺪ‪.‬‬
‫ﺗﻮﺟﻪ‪ :‬اﻳﻦ ﺗﻤﺮﻳﻦ داراي ‪ 100‬ﻧﻤﺮه ﺑﻮده و ﺷﺎﻣﻞ ‪ 4‬ﺳﺆال اﺳﺖ‪.‬‬
‫)‪(١‬‬
‫ ‬
‫ﻣﺒﺎﻧﯽ ﺑﺮﻧﺎﻣﻪﺳﺎزی )‪(۴۰-۱۵۳) (C/C++‬‬
‫)‪Introduction to Programming (C/C++‬‬
‫ﻣﺪرس‪ :‬ﺷﺮوﻳﻦ داﻧﺶﭘﮋوه‬
‫داﻧﺸﮑﺪهی ﻣﻬﻨﺪﺳﯽ ﮐﺎﻣﭙﻴﻮﺗﺮ‬
‫ﻣﻮﻋﺪ ﻮﻳﻞ‪ :‬ﺳﺎﻋﺖ‪ ،۱۵:۳۰‬روز ﺷﻨﺒﻪ ‪۱۳۹۰/۲/۱۰‬‬
‫‪"#‬ﺮﻳﻦ ﺎره ‪٣‬‬
‫‪"#‬ﺮﯾﻦ اوّل ‪ -‬ﻣﺸﺘﻖ ﮔ‪/0‬ی )‪"6 ۲۰‬ﺮه(‪:‬‬
‫ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ درﺟﻪ و ﺿﺮاﻳﺐ ﻳﻚ ﭼﻨﺪ ﺟﻤﻠﻪاي را از ورودي ﺧﻮاﻧﺪه‪ ،‬ﻣﺸﺘﻖ آن را ﻣﺤﺎﺳﺒﻪ ﻛﺮده و ﺿﺮاﻳﺐ ﻣﺸﺘﻖ آن را در‬
‫ﺧﺮوﺟﻲ ﺑﻨﻮﻳﺴﺪ‪.‬‬
‫ﺑﺮاي ﻣﺜﺎل ﺿﺮاﻳﺐ ﭼﻨﺪﺟﻤﻠﻪاي درﺟﻪ ﭼﻬﺎر ‪ = 34 + 22 + 5 + 1‬ﺑﺮاﺑﺮ ﺑﺎ ‪ 3 0 2 5 1‬اﺳﺖ )ﺿﺮﻳﺐ ﺟﻤﻠﻪي ‪3‬‬
‫در آن ﺻﻔﺮ اﺳﺖ( و ﻣﺸﺘﻖ اﻳﻦ ﭼﻨﺪﺟﻤﻠﻪاي ﺑﺮاﺑﺮ ﺑﺎ ‪ = 123 + 4 + 5‬اﺳﺖ ﻛﻪ ﺿﺮاﻳﺐ آن ‪ 12 0 4 5‬ﻣﻲﺑﺎﺷﺪ‪.‬‬
‫ﻣﻲﺗﻮاﻧﻴﺪ ﻓﺮض ﻛﻨﻴﺪ ﺣﺪاﻛﺜﺮ درﺟﻪي ﭼﻨﺪ ﺟﻤﻠﻪاي ورودي ‪ 1000‬اﺳﺖ‪.‬‬
‫ﻣﺜﺎل ﺧﺮوﺟﻲ‬
‫ﻣﺜﺎل ورودي‬
‫‪4‬‬
‫‪3 0 2 5 1‬‬
‫ﻣﺜﺎل ورودي‬
‫‪12 0 4 5‬‬
‫ﻣﺜﺎل ﺧﺮوﺟﻲ‬
‫‪6 4 2‬‬
‫‪3‬‬
‫‪2 2 2 2‬‬
‫‪"#‬ﺮﯾﻦ دوم ‪BC -‬ﻊ دو ﻋﺪد ﺧﯿﻠﯽ ﺑﺰرگ )‪"6 ۲۰‬ﺮه(‪:‬‬
‫ﺑﺮﻧﺎﻣﻪ اي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ دو ﻋﺪد ﺻﺤﻴﺢ و ﻣﺜﺒﺖ ﺧﻴﻠﻲ ﺑﺰرگ )ﺣﺪاﻛﺜﺮ ‪ 1000‬رﻗﻤﻲ( را از ورودي ﺑﺨﻮاﻧﺪ و ﺣﺎﺻﻞ ﺟﻤﻊ دو ﻋﺪد را در‬
‫ﺧﺮوﺟﻲ ﭼﺎپ ﻛﻨﺪ! ﻫﺮ ﻋﺪد ورودي در ﻳﻚ ﺳﻄﺮ ﺑﻪﺻﻮرت رﻗﻢ ﺑﻪ رﻗﻢ ﻧﻮﺷﺘﻪ ﺷﺪه و ﺑﻴﻦ ارﻗﺎم آن ﻳﻚ ﻓﺎﺻﻠﻪ ﺧﺎﻟﻲ اﺳﺖ‪ .‬ﻋﺪد‬
‫ﺧﺮوﺟﻲ را ﺑﺪون ﻓﺎﺻﻠﻪ ﺑﻴﻦ ارﻗﺎم ﺑﻨﻮﻳﺴﻴﺪ‪.‬‬
‫راﻫﻨﻤﺎﻳﻲ‪ :‬ﺗﺎﻳﭗ ﻋﺪدي ‪ int‬ﺣﺪاﻛﺜﺮ اﻋﺪاد ‪ 10‬رﻗﻤﻲ را ﻧﮕﻪ ﻣﻲدارﻧﺪ‪ .‬ﺑﺮاي اﻳﻦ ﻣﺴﺌﻠﻪ ﺑﺎﻳﺪ ﺳﻌﻲ ﻛﻨﻴﺪ اﻋﺪاد ﺧﻴﻠﻲ ﺑﺰرگ را در آراﻳﻪ‬
‫ﻧﮕﻪ داﺷﺘﻪ و ﺟﻤﻊ ﻛﻨﻴﺪ‪.‬‬
‫ﻣﺜﺎل ﺧﺮوﺟﻲ‬
‫ﻣﺜﺎل ورودي‬
‫‪9 9 9 9‬‬
‫‪1 2‬‬
‫ﻣﺜﺎل ورودي‬
‫‪10011‬‬
‫ﻣﺜﺎل ﺧﺮوﺟﻲ‬
‫‪1 2 3 4 5 6 7 8 9 0 1 2 3 4 5‬‬
‫‪2 4 6 8 2 4 6 8 1 3 5 7 1 3 5 7 9‬‬
‫)‪(٢‬‬
‫‪24805924924725924‬‬
‫ ‬
‫ﻣﺒﺎﻧﯽ ﺑﺮﻧﺎﻣﻪﺳﺎزی )‪(۴۰-۱۵۳) (C/C++‬‬
‫)‪Introduction to Programming (C/C++‬‬
‫ﻣﺪرس‪ :‬ﺷﺮوﻳﻦ داﻧﺶﭘﮋوه‬
‫داﻧﺸﮑﺪهی ﻣﻬﻨﺪﺳﯽ ﮐﺎﻣﭙﻴﻮﺗﺮ‬
‫ﻣﻮﻋﺪ ﻮﻳﻞ‪ :‬ﺳﺎﻋﺖ‪ ،۱۵:۳۰‬روز ﺷﻨﺒﻪ ‪۱۳۹۰/۲/۱۰‬‬
‫‪"#‬ﺮﻳﻦ ﺎره ‪٣‬‬
‫‪"#‬ﺮﯾﻦ ﺳﻮم ‪ -‬اﺗﻞ ﻣﺘﻞ ﺗﻮﺗﻮﻟﻪ )‪"6 ۳۰‬ﺮه(‪:‬‬
‫ﻣﻲﺧﻮاﻫﻴﻢ ﺑﺎزي اﺗﻞ ﻣﺘﻞ ﺗﻮﺗﻮﻟﻪ را ﺑﻪﺻﻮرت ﻣﻬﻨﺪﺳﻲوار ﺑﺎ اﻳﻦ ﻗﻮاﻧﻴﻦ ﺑﺎزي ﻛﻨﻴﻢ! ﻓﺮض ﻛﻨﻴﺪ در اﺑﺘﺪا ﺗﺎ ﭘﺎ روي زﻣﻴﻦ دراز اﺳﺖ‪.‬‬
‫در ﻫﺮ ﻣﺮﺣﻠﻪ ﺷﻌﺮي ﺑﺎ ﺳﻴﻼب ﺧﻮاﻧﺪه ﻣﻲﺷﻮد و در اوﻟﻴﻦ ﻣﺮﺣﻠﻪ ﺑﺎ ﺷﺮوع از ﭘﺎي ﺷﻤﺎره از ‪ 1‬ﺗﺎ ﺷﻤﺎرده ﻣﻲﺷﻮد و اُﻣﻴﻦ ﭘﺎ‬
‫ورﭼﻴﺪه ﻣﻲﺷﻮد! ﺳﭙﺲ ﺑﺎ ﺷﺮوع از اوﻟﻴﻦ ﭘﺎي ﻣﻮﺟﻮد در اداﻣﻪي آﺧﺮﻳﻦ ﭘﺎي ورﭼﻴﺪهﺷﺪه‪ ،‬دوﺑﺎره ﺳﻴﻼب روي ﭘﺎﻫﺎي ورﻧﭽﻴﺪه‬
‫ﺷﺪه ﺷﻤﺎرده ﻣﻲﺷﻮد و ﭘﺎﻳﻲ ﻛﻪ آﺧﺮﻳﻦ ﺳﻴﻼب ﺑﻪ آن ﻣﻲرﺳﺪ ﺣﺬف ﻣﻲﺷﻮد‪ .‬اﻳﻦ ﻛﺎر ﺗﺎ ﺑﺎﻗﻲ ﻣﺎﻧﺪن ﺗﻨﻬﺎ ﻳﻚ ﭘﺎ اداﻣﻪ ﭘﻴﺪا ﻣﻲﻛﻨﺪ و‬
‫ﺷﻤﺎرهي آﺧﺮﻳﻦ ﭘﺎي ﺑﺎﻗﻲﻣﺎﻧﺪه ﺑﻪ ﻋﻨﻮان ﺑﺮﻧﺪه اﻋﻼم ﻣﻲﺷﻮد‪.‬‬
‫ﺑﺮﻧﺎﻣﻪ ﺷﻤﺎ ﺑﺎﻳﺪ از ورودي اﺑﺘﺪا و ﺳﭙﺲ را درﻳﺎﻓﺖ ﻛﻨﺪ‪ .‬ﺳﭙﺲ ﺑﺎ ﺷﺒﻴﻪﺳﺎزي ﺑﺎزي در درون ﺑﺮﻧﺎﻣﻪ‪ ،‬در ﺧﺮوﺟﻲ ﺗﻨﻬﺎ اﻧﺪﻳﺲ ﭘﺎي‬
‫ﺑﺮﻧﺪه را ﺑﻨﻮﻳﺴﺪ‪ .‬ﺑﺮاي ﻣﺜﺎل اﮔﺮ ‪ = 4‬و ‪ = 7‬ﺑﺎﺷﺪ‪ ،‬ﺑﺎ ﺧﻮاﻧﺪن ﺷﻌﺮ روي دﻧﺒﺎﻟﻪي ‪ 1234123‬اﺑﺘﺪا ﭘﺎي ﺷﻤﺎره ‪ 3‬ورﭼﻴﺪه‬
‫ﻣﻲﺷﻮد‪ .‬ﺳﭙﺲ ﺑﺎ ﺷﺮوع از اوﻟﻴﻦ ﭘﺎي ورﻧﭽﻴﺪه ﺷﺪه ﺑﻌﺪ از ‪ 3‬ﻳﻌﻨﻲ ‪ ،4‬دﻧﺒﺎﻟﻪي ‪ 4124124‬ﻣﻮرد ﻋﻨﺎﻳﺖ ﻗﺮار ﮔﺮﻓﺘﻪ و ﭘﺎي اﻧﺪﻳﺲ‬
‫‪ 4‬ﻧﻴﺰ ﺣﺬف ﻣﻲﺷﻮد‪ .‬در ﮔﺎم آﺧﺮ ﻧﻴﺰ ﺑﺎ ﺷﺮوع از اوﻟﻴﻦ ﭘﺎي ﻣﻮﺟﻮد ﺑﻌﺪ از ‪ 4‬ﻳﻌﻨﻲ ‪ ،1‬دﻧﺒﺎﻟﻪي ‪ 1212121‬ﺧﻮاﻧﺪه ﻣﻲﺷﻮد ﺗﺎ ﭘﺎي‬
‫ﺷﻤﺎره ‪ 1‬ﻧﻴﺰ ﺣﺬف ﺷﻮد و ﭘﺎي ﺷﻤﺎره ‪ 2‬ﺑﻪ ﻋﻨﻮان ﺑﺮﻧﺪه اﻋﻼم ﺷﻮد! ﻓﺮض ﻛﻨﻴﺪ ‪ 1 ≤ , ≤ 1000‬اﺳﺖ‪.‬‬
‫ﻣﺜﺎل ﺧﺮوﺟﻲ‬
‫ﻣﺜﺎل ورودي‬
‫‪2‬‬
‫‪4 7‬‬
‫‪"#‬ﺮﯾﻦ ﭼﻬﺎرم ‪ -‬ﻣﺎﺗﺮﯾﺲ ﺣﺎﺻﻞ ‪BC‬ﻊ )‪"6 ۳۰‬ﺮه(‪:‬‬
‫ﺑﺮﻧﺎﻣﻪ اي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ اﺑﺘﺪا دو ﻋﺪد و را از ورودي ﺑﺨﻮاﻧﺪ‪ ،‬ﺳﭙﺲ ﻳﻚ ﻣﺎﺗﺮﻳﺲ × ﺑﻪ ﻧﺎم را در اداﻣﻪ ورودي ﺑﮕﻴﺮد‪.‬‬
‫ﭘﺲ از ﺧﻮاﻧﺪن ورودي‪ ،‬ﺑﺮﻧﺎﻣﻪ ﺷﻤﺎ ﺑﺎﻳﺪ ﻣﺎﺗﺮﻳﺲ ﺟﺪﻳﺪي ﺑﻪ ﻧﺎم ﻛﻪ اﻧﺪازهي آن ﻧﻴﺰ × را از روي ﻣﺎﺗﺮﻳﺲ ﺑﺴﺎزد ﻛﻪ ﻫﺮ‬
‫دراﻳﻪي ‪ ,‬از ﻣﺎﺗﺮﻳﺲ ﺣﺎﺻﻞ ﺟﻤﻊ ﺧﻮد ﻋﻨﺼﺮ ﻣﺘﻨﺎﻇﺮ آن )ﻳﻌﻨﻲ ‪ (,‬ﺑﻪ ﻋﻼوه ﺗﻤﺎم دراﻳﻪﻫﺎي ﻣﺠﺎور آن در ﻣﺎﺗﺮﻳﺲ اﺳﺖ‪.‬‬
‫دو دراﻳﻪ را ﻣﺠﺎور ﻣﻲﮔﻮﻳﻴﻢ اﮔﺮ دﻗﻴﻘﺎً ﻛﻨﺎر ﻫﻢ ﻳﺎ دﻗﻴﻘﺎً زﻳﺮ ﻫﻢ ﺑﺎﺷﻨﺪ‪ .‬ﺑﺎ اﻳﻦ ﺗﻌﺮﻳﻒ ﻫﺮ دراﻳﻪ ﺣﺪاﻗﻞ ‪ 2‬و ﺣﺪاﻛﺜﺮ ‪ 4‬دراﻳﻪ ﻣﺠﺎور‬
‫دارد‪ .‬در اﻧﺘﻬﺎ ﺑﺮﻧﺎﻣﻪ ﺷﻤﺎ ﺑﺎﻳﺪ ﻣﺎﺗﺮﻳﺲ را در ﺧﺮوﺟﻲ ﺑﻨﻮﻳﺴﺪ‪ .‬ﻓﺮض ﻛﻨﻴﺪ ﻣﺎﺗﺮﻳﺲ ورودي ﺣﺪاﻛﺜﺮ ‪ 100×100‬اﺳﺖ‪.‬‬
‫ﻣﺜﺎل ﺧﺮوﺟﻲ‬
‫ﻣﺜﺎل ورودي‬
‫‪4‬‬
‫‪0 2 0‬‬
‫‪3 4 5‬‬
‫‪0 1 0‬‬
‫‪3‬‬
‫‪1‬‬
‫‪0‬‬
‫‪9‬‬
‫‪1 6 6 7‬‬
‫‪13 7 15 9‬‬
‫‪9 13 5 6‬‬
‫»ﻣﻮﻓﻖ ﺑﺎﺷﻴﺪ!«‬
‫)‪(٣‬‬