Assignment2.pdf

‫ﺑﻪ ﻧﺎم ﺧﺪا‬
‫ﻣﺒﺎﻧﻲ ﺑﺮﻧﺎﻣﻪﺳﺎزي )‪(40-153-7)(C/C++‬‬
‫)‪Introduction to Programming (C/C++‬‬
‫ﻣﺪرس‪ :‬ﻓﺎﻃﻤﻪ زﻣﺎﻧﻲ‬
‫داﻧﺸﻜﺪهي ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ‬
‫ﻣﻮﻋﺪ ﺗﺤﻮﻳﻞ‪ :‬ﺳﺎﻋﺖ ‪ ،23:59‬روز دوﺷﻨﺒﻪ‪1391/8/22‬‬
‫ﺗﻤﺮﻳﻦ ﺷﻤﺎره ‪2‬‬
‫ﻧﺤﻮه ارﺳﺎل‬
‫ﭘﺎﺳﺦ ﺗﻤﺮﻳﻨﺎت ﻏﻴﺮ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﻣﺎﻧﻨﺪ »ﺗﺒﺪﻳﻞ ﻣﺒﻨﺎﻫﺎ« را در ﻳﻚ ﻓﺎﻳﻞ ‪ Microsoft Word‬ﻗﺮار داده و آن را ﺑﻪ ﺻﻮرت‬
‫‪)HWxx.doc‬و ﻳﺎ ‪ (HWxx.docx‬ﻧﺎمﮔﺬاري ﻛﻨﻴﺪ؛ ﻛﻪ ‪ xx‬ﺷﻤﺎره ﺳﻮال ﺗﻤﺮﻳﻦ اﺳﺖ؛ ﻣﺜﻞ ‪ .HW01.docx‬در ﻣﻮرد ﭘﺎﺳﺦ‬
‫ﺗﻤﺮﻳﻨﺎت ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﻧﻴﺰ‪ ،‬ﻛﺪ ﻣﺮﺑﻮط ﺑﻪ ﻫﺮ ﺗﻤﺮﻳﻦ را در ﻳﻚ ﻓﺎﻳﻞ ﺑﻪ ﺻﻮرت‪ HWxx.cpp‬ﻗﺮار دﻫﻴﺪ‪ .‬ﺳﭙﺲ ﺗﻤﺎﻣﻲ ﻛﺪﻫﺎي ﺧﻮد‬
‫را ﻛﻨﺎر ﻫﻢ ﻗﺮار داده و آنﻫﺎ را ‪ zip‬ﻧﻤﺎﻳﻴﺪ و ﻧﺎم ﻓﺎﻳﻞ زﻳﭗ را ﺑﻪ ﺻﻮرت ‪ HW01_STDID.zip‬ﻗﺮار دﻫﻴﺪ‪ ،‬و آن را در ﻣﻮﻋﺪ‬
‫ﻣﻘﺮر ﺑﻪ آدرس اﻳﻤﻴﻞ‪ [email protected]‬ارﺳﺎل ﻧﻤﺎﻳﻴﺪ‪.‬‬
‫ﺗﻮﺟﻪ ‪:1‬ﻻزم اﺳﺖ ﺗﻤﺎم ﺗﻤﺮﻳﻦﻫﺎ )اﻋﻢ از ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ و ﻣﺤﺎﺳﺒﺎﺗﻲ( ﻫﻢ از ﻃﺮﻳﻖ اﻳﻤﻴﻞ )در ﻗﺎﻟﺐ ﻣﺸﺨﺺ ﺷﺪه( ارﺳﺎل ﺷﻮﻧﺪ؛ ﻫﻢ‬
‫ﭘﺮﻳﻨﺖ آنﻫﺎ ﺑﻪ ﻫﻤﺮاه ﺗﻮﺿﻴﺤﺎت دﺳﺖﻧﻮﻳﺲ در اوﻟﻴﻦ ﺟﻠﺴﻪي ﺑﻌﺪ از ﻣﻮﻋﺪ ﺗﺤﻮﻳﻞ‪ ،‬اراﺋﻪ ﺷﻮﻧﺪ‪.‬‬
‫ﺑﻪ ﺗﻤﺮﻳﻨﺎﺗﻲ ﻛﻪ ﻓﻘﻂ ﺑﻪ ﺻﻮرت ﻛﺎﻏﺬي ﺗﺤﻮﻳﻞ ﺷﻮﻧﺪ‪ ،‬ﻳﺎ اﺳﻜﻦ ﺷﻮﻧﺪ‪ ،‬ﻧﻤﺮهاي ﺗﻌﻠﻖ ﻧﺨﻮاﻫﺪ ﮔﺮﻓﺖ‪ .‬ﺑﺮﻧﺎﻣﻪﻫﺎﺑﺎﻳﺪ در ﻓﺮﻣﺖ‬
‫ﻓﺎﻳﻞ‪ cpp‬ﻧﻮﺷﺘﻪ ﺷﺪه و ﺑﺎ ﻳﻜﻜﺎﻣﭙﺎﻳﻠﺮ‪C/C++‬ﺗﺴﺖ و اﺟﺮا ﺷﺪه ﺑﺎﺷﻨﺪ‪.‬‬
‫ﺗﻮﺟﻪ ‪ :2‬از ارﺳﺎل ﻓﺎﻳﻼﺟﺮاﻳﻲ )‪ (.exe‬ﺑﻪ ﻫﻤﺮاه ﺳﻮرس‪ ،‬ﺧﻮدداري ﻛﻨﻴﺪ‪ .‬ﺳﻴﺴﺘﻢ‪ gmail‬و اﻛﺜﺮ ﺳﺮوﻳﺲﻫﺎﻳﺎﻳﻤﻴﻞ از‬
‫درﻳﺎﻓﺘﻔﺎﻳﻼﺟﺮاﻳﻲ )ﺣﺘﻲ اﮔﺮ در داﺧﻞ ﻓﺎﻳﻞ‪ .zip‬ﺑﺎﺷﻨﺪ( ﺧﻮدداري ﻣﻲﻛﻨﺪ‪ .‬ﺑﻨﺎﺑﺮاﻳﻨﻤﺴﺌﻮﻟﻴﺘﻨﺮﺳﻴﺪﻧﭽﻨﻴﻨﺎﻳﻤﻴﻞﻫﺎﻳﻲ ﺑﻌﻬﺪه داﻧﺸﺠﻮ‬
‫اﺳﺖ‪.‬‬
‫ﺗﻮﺟﻪ ‪ :3‬از ارﺳﺎل ﺗﻤﺮﻳﻦﻫﺎ ﺑﻪ ﮔﺮوه درس ﺧﻮدداري ﻛﻨﻴﺪ! و ﺣﺘﻤﺎ ﺑﻪ ﻫﻨﮕﺎم وارد ﻧﻤﻮدن آدرس اﻳﻤﻴﻠﮕﻴﺮﻧﺪه )ﺑﻪ ﺧﺼﻮص در‬
‫‪ (gmail‬دﻗﺖ ﻛﻨﻴﺪ‪ ،‬ﺗﺎ اﺷﺘﺒﺎﻫﺎ آدرس ﮔﺮوه ﺑﻪ ﺟﺎي آدرس اﻳﻤﻴﻠﺘﻤﺮﻳﻦﻫﺎ وارد ﻧﺸﺪه ﺑﺎﺷﺪ‪.‬‬
‫روش ارزﻳﺎﺑﻲ‬
‫ارزﻳﺎﺑﻲ‬
‫ﻋﻨﻮان‬
‫در زﻣﺎن ﻣﻘﺮر‬
‫*‬
‫ﺗﺎ ‪ 1‬روز ﭘﺲ از زﻣﺎن ﻣﻘﺮر‬
‫*‬
‫ﺑﻴﺶ از ﻳﻚ روز و ﺗﺎ ‪ 3‬روز ﭘﺲ از زﻣﺎن ﻣﻘﺮر‬
‫*‬
‫ﺑﻴﺶ از ﺳﻪ روز و ﺗﺎ ﻳﻚ ﻫﻔﺘﻪ ﭘﺲ از زﻣﺎن ﻣﻘﺮر‬
‫*‬
‫‪%100‬‬
‫‪%60‬‬
‫‪%30‬‬
‫‪%20‬‬
‫*‬
‫‪%0‬‬
‫ﺑﻴﺶ از ﻳﻚ ﻫﻔﺘﻪ ﭘﺲ از زﻣﺎن ﻣﻘﺮر‬
‫)ﻧﻤﺮه ﻛﺎﻣﻞ ﺗﻤﺮﻳﻦ( ‪-1 x‬‬
‫ﺗﻘﻠﺐ‪ ،‬ﻛﭙﻲ ﺑﺮداري و ﻣﻮاردي از اﻳﻨﻘﺒﻴﻞ‬
‫*درﺻﺪﻫﺎي ﻓﻮق ﻧﺴﺒﺖ ﺑﻪ ﻧﻤﺮه ﻛﺴﺐ ﺷﺪهﻳﺘﻤﺮﻳﻦ ﺗﻮﺳﻂ داﻧﺶﺟﻮﻣﻲﺑﺎﺷﺪ‪.‬‬
‫ﺗﻮﺟﻪ‪ :‬اﻳﻦ ﺗﻤﺮﻳﻦ داراي ‪ 100‬ﻧﻤﺮه ﺑﻮده و ﺷﺎﻣﻞ ‪ 5‬ﺳﺆال اﺳﺖ‪.‬‬
‫ﺻﻔﺤﻪ ‪1‬‬
‫ﺑﻪ ﻧﺎم ﺧﺪا‬
‫ﻣﺒﺎﻧﻲ ﺑﺮﻧﺎﻣﻪﺳﺎزي )‪(40-153-7)(C/C++‬‬
‫)‪Introduction to Programming (C/C++‬‬
‫ﻣﺪرس‪ :‬ﻓﺎﻃﻤﻪ زﻣﺎﻧﻲ‬
‫داﻧﺸﻜﺪهي ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ‬
‫ﻣﻮﻋﺪ ﺗﺤﻮﻳﻞ‪ :‬ﺳﺎﻋﺖ ‪ ،23:59‬روز دوﺷﻨﺒﻪ‪1391/8/22‬‬
‫ﺗﻤﺮﻳﻦ ﺷﻤﺎره ‪2‬‬
‫ﺗﺬﻛﺮ ﻣﻬﻢ‪:‬رﻋﺎﻳﺖ ﻣﻮارد زﻳﺮ اﻟﺰاﻣﻲ اﺳﺖ‪ .‬در ﺻﻮرت ﻋﺪم رﻋﺎﻳﺖ آنﻫﺎ‪ ،‬ﺣﺘﻲ در ﺻﻮرت درﺳﺖﺑﻮدن ﺑﺮﻧﺎﻣﻪ ﺑﻪ داﻧﺸﺠﻮ ﻧﻤﺮهاي ﺗﻌﻠﻖ ﻧﻤﻲﮔﻴﺮد‪:‬‬
‫•‬
‫اﺳﻢ ﻓﺎﻳﻞ ‪ zip‬ﻫﻤﺎﻧﻄﻮر ﻛﻪ در ﺑﺨﺶﻫﺎي ﺑﺎﻻ ﺗﻮﺿﻴﺢ داده ﺷﺪ ﺑﺎﻳﺪ ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ﺑﻪ ﻓﺮﻣـﺖ ‪HW4_91202228.zip‬ﺗﻌﻴـﻴﻦ‬
‫ﺷﻮد‪ .‬ﻫﺮ ﻳﻚ از ﻣﻮارد زﻳﺮ اﺷﺘﺒﺎه اﺳﺖ‪:‬‬
‫‪o‬‬
‫‪o‬‬
‫‪o‬‬
‫‪o‬‬
‫•‬
‫‪hw1_91202228.zip‬‬
‫ﺣﺮوف ﻛﻮﭼﻚ ﺑﺮاي ‪:HW‬‬
‫ﺧﻂ ﺗﻴﺮه ﺑﻪ ﺟﺎي ‪HW1-91202228.zip :underline‬‬
‫‪HW4.zip‬‬
‫‪... 91202228.zip‬‬
‫اﺳﺎﻣﻲ ﻓﺎﻳﻞﻫﺎي ﺗﻤﺮﻳﻦ ﻧﻴﺰ ﺑﺎﻳﺪ ﺑﺎ ﻓﺮﻣﺖ درﺳﺖ وارد ﺷﻮﻧﺪ‪ .‬ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل‪ .HW03.cpp :‬ﻣﻮارد زﻳﺮ ﺗﺼﺤﻴﺢ ﻧﻤﻲﺷﻮﻧﺪ‪:‬‬
‫‪o‬‬
‫‪o‬‬
‫‪o‬‬
‫‪o‬‬
‫‪hw03.cpp‬‬
‫‪HW3.cpp‬‬
‫‪HW03.c‬‬
‫‪HW_03.cpp‬‬
‫‪....‬‬
‫•‬
‫ورودي و ﺧﺮوﺟﻲ ﺑﺮﻧﺎﻣﻪﻫﺎ ﺑﺎﻳﺪ دﻗﻴﻘﺎً ﻫﻤﺎﻧﻄﻮر ﻛﻪ در ﺻﻮرت ﺳﺆال ﺗﻮﺿﻴﺢ داده ﺷﺪ ﺑﺎﺷﻨﺪ‪ .‬ﻫﻴﭻ ﺧﺮوﺟﻲ اﺿﺎﻓﻪاي ﻧﺒﺎﻳﺪ ﭼﺎپ ﺷـﻮد‪ .‬ﺑـﺮاي‬
‫ﺟﺪاﻛﺮدن دو ﻋﺪد ﭘﺸﺖ ﺳـﺮ ﻫـﻢ در ﺧﺮوﺟـﻲ‪ ،‬از ﻳـﻚ ﻓﺎﺻـﻪ )‪ (space‬اﺳـﺘﻔﺎده ﻛﻨﻴـﺪ‪ .‬ﺑـﺮاي ﭼـﺎپ ﺧﺮوﺟـﻲ در ﺳـﻄﺮ ﺟﺪاﮔﺎﻧـﻪ از‬
‫ﻳﻚ‪ endl) newline‬ﻳﺎ ‪ (\n‬اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪ .‬ﭼﺎپ ﻣﻮاردي ﻣﺎﻧﻨـﺪ »‪ «Enter a number:‬ﻳـﺎ ﭼـﺎپ دو ‪ \n‬اﺷـﺘﺒﺎه‬
‫اﺳﺖ‪.‬‬
‫•‬
‫ﭘﺲ از ﭼﺎپ ﺧﺮوﺟﻲ ﻣﻮرد ﻧﻈﺮ ﺑﺮﻧﺎﻣﻪ ﺑﺎﻳﺪ ﺗﻤﺎم ﺷﻮد‪ .‬ﻫﺮ ﻳﻚ از ﻣﻮارد زﻳﺮ ﻣﻮﺟﺐ ﻏﻠﻂﺷﺪن ﺑﺮﻧﺎﻣﻪ ﺧﻮاﻫﺪ ﺷﺪ‪:‬‬
‫‪ o‬اﺳﺘﻔﺎده از ‪ getch‬و ‪ system pause‬و ﻳﺎ ‪ cin‬در اﻧﺘﻬﺎي ﺑﺮﻧﺎﻣﻪ )در ﺻﻮرت اﺳﺘﻔﺎده‪ ،‬ﻗﺒﻞ از ارﺳﺎل ﺑﺮﻧﺎﻣﻪ‬
‫آنﻫﺎ را ﭘﺎك ﻛﻨﻴﺪ و ﻳﺎ ﻛﺎﻣﻨﺖ ﻛﻨﻴﺪ(‬
‫‪ o‬درﻳﺎﻓﺖ ورودي ﺑﻌﺪي ﺑﺮاي اﺟﺮاي ﻣﺠﺪد‬
‫•‬
‫ﻛﺪ ﺑﺎﻳﺪ ﻛﺎﻣﭙﺎﻳﻞ ﺷﻮد و ﺧﻄﺎي ﻧﺤﻮي )‪ (syntax‬ﻧﺪاﺷﺘﻪ ﺑﺎﺷﺪ‪.‬‬
‫•‬
‫از ﻛﺘﺎﺑﺨﺎﻧﻪﻫﺎي ﻏﻴﺮاﺳﺘﺎﻧﺪارد ﻣﺎﻧﻨﺪ ‪ conio.h‬اﺳﺘﻔﺎده ﻧﻜﻨﻴﺪ‪.‬‬
‫•‬
‫در ﺻﻮرت وﺟﻮد دﺳﺘﻮر "‪ #include "stdafx.h‬در اﺑﺘﺪاي ﺑﺮﻧﺎﻣﻪ‪ ،‬آﻧﺮا ﻗﺒﻞ از ارﺳﺎل ﺑﺮﻧﺎﻣﻪ ﺣﺬف و ﻳﺎ ﻛﺎﻣﻨﺖ ﻛﻨﻴﺪ‪.‬‬
‫ﺗﻤﺮﻳﻦ او‪‬ل– ﺧﺮوﺟﻲ ﺗﺮﺳﻴﻤﻲ )‪ 15‬ﻧﻤﺮه(‬
‫ﺑﺮﻧﺎﻣﻪ اي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻋﺪد ‪ n‬را از ورودي ﺧﻮاﻧﺪه و ﻳﻚ ﻟﻮزي ﺑﺎ ﻗﻄﺮﻫﺎي ﺑﺮاﺑﺮ ‪ n‬رﺳﻢ ﻛﻨﺪ‪ .‬ﺑﺮاي ﻧﻤﺎﻳﺶ اﺿﻼع آن از ﻛـﺎراﻛﺘﺮ ‪ #‬و‬
‫ﺑﺮاي داﺧﻞ آن از ﻛﺎراﻛﺘﺮ ‪ +‬اﺳﺘﻔﺎده ﺷﻮد‪).‬در ﻳﻚ ﺳﻄﺮ ﺑﻴﻦ ﻛﺎراﻛﺘﺮﻫﺎ ﻧﺒﺎﻳﺪ ﻓﺎﺻﻠﻪاي وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ(‬
‫ورودي‪ :‬ﻋﺪد ﺻﺤﻴﺢ و ﻓﺮد‪n‬‬
‫ﺻﻔﺤﻪ ‪2‬‬
‫ﺑﻪ ﻧﺎم ﺧﺪا‬
‫ﻣﺒﺎﻧﻲ ﺑﺮﻧﺎﻣﻪﺳﺎزي )‪(40-153-7)(C/C++‬‬
‫)‪Introduction to Programming (C/C++‬‬
‫ﻣﺪرس‪ :‬ﻓﺎﻃﻤﻪ زﻣﺎﻧﻲ‬
‫داﻧﺸﻜﺪهي ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ‬
‫ﻣﻮﻋﺪ ﺗﺤﻮﻳﻞ‪ :‬ﺳﺎﻋﺖ ‪ ،23:59‬روز دوﺷﻨﺒﻪ‪1391/8/22‬‬
‫ﺗﻤﺮﻳﻦ ﺷﻤﺎره ‪2‬‬
‫ﺧﺮوﺟﻲ‪ :‬ﻳﻚ ﻟﻮزي ﺑﺎ ﻗﻄﺮﻫﺎي ﺑﺮاﺑﺮ ﺑﺎ ﻣﻘﺪار ‪ n‬ﻣﺎﻧﻨﺪ ﻣﺜﺎلﻫﺎي زﻳﺮ‪:‬‬
‫ﻧﻤﻮﻧﻪي ﺧﺮوﺟﻲ ﻣﺘﻨﺎﻇﺮ‬
‫ﻧﻤﻮﻧﻪي ورودي‬
‫‪#‬‬
‫‪#‬‬
‫‪#+#‬‬
‫‪#‬‬
‫‪#‬‬
‫‪#+#‬‬
‫‪#+++#‬‬
‫‪#+++++#‬‬
‫‪#+++++++#‬‬
‫‪#+++++#‬‬
‫‪#+++#‬‬
‫‪#+#‬‬
‫‪#‬‬
‫‪1‬‬
‫‪3‬‬
‫‪9‬‬
‫ﺗﻤﺮﻳﻦ دو‪‬م–ﺑﺎزي ﺑﺮداﺷﺘﻦ ﺳﻨﮓ ﻫﺎ )‪ 25‬ﻧﻤﺮه(‬
‫اﺣﺘﻤﺎﻻ ﺑﺎ ﺑﺎزي دوﻧﻔﺮه ﺑﺮداﺷﺘﻦ ﺳﻨﮓ ﻫﺎ آﺷﻨﺎ ﻫﺴﺘﻴﺪ‪ .‬در ﻧﻮﻋﻲ از اﻳﻦ ﺑﺎزي‪ ،‬دو ﺑﺎزﻳﻜﻦ ﺑﻪ ﻧﻮﺑﺖ ‪ 3 ،1‬ﻳﺎ ‪ 4‬ﺳﻨﮓ را از ﺑﻴﻦ ‪ N‬ﺳﻨﮓ‬
‫ﺑﺮﻣﻴﺪارﻧﺪ‪ .‬ﺑﺎزﻳﻜﻨﻲ ﻛﻪ آﺧﺮﻳﻦ ﺳﻨﮓ را ﺑﺮدارد ﺑﺎزﻧﺪه اﺳﺖ‪ .‬اﮔﺮ ﻫﺮ ﺑﺎزﻳﻜﻦ ﺑﻬﺘﺮﻳﻦ ﺣﺮﻛﺖ ﻣﻤﻜﻦ را اﻧﺠﺎم دﻫﺪ‪ ،‬ﺑﺮﻧﺎﻣﻪ اي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ‬
‫اﻋﻼم ﻛﻨﺪ ﻛﺪام ﺑﺎزﻳﻜﻦ ﺑﺮﻧﺪه اﺳﺖ‪.‬‬
‫ورودي‪:‬ﺗﻌﺪاد ﺳﻨﮓ ﻫﺎ )‪(N‬‬
‫ﺧﺮوﺟﻲ‪:‬ﺷﻤﺎره ﺑﺎزﻳﻜﻦ ﺑﺮﻧﺪه )اوﻟﻴﻦ ﺑﺎزﻳﻜﻦ‪ 1 :‬و دوﻣﻴﻦ ﺑﺎزﻳﻜﻦ‪(2 :‬‬
‫ﻧﻤﻮﻧﻪي ﺧﺮوﺟﻲ ﻣﺘﻨﺎﻇﺮ‬
‫ﻧﻤﻮﻧﻪي ورودي‬
‫‪2‬‬
‫‪17‬‬
‫ﺻﻔﺤﻪ ‪3‬‬
‫ﺑﻪ ﻧﺎم ﺧﺪا‬
‫ﻣﺒﺎﻧﻲ ﺑﺮﻧﺎﻣﻪﺳﺎزي )‪(40-153-7)(C/C++‬‬
‫)‪Introduction to Programming (C/C++‬‬
‫ﻣﺪرس‪ :‬ﻓﺎﻃﻤﻪ زﻣﺎﻧﻲ‬
‫داﻧﺸﻜﺪهي ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ‬
‫ﻣﻮﻋﺪ ﺗﺤﻮﻳﻞ‪ :‬ﺳﺎﻋﺖ ‪ ،23:59‬روز دوﺷﻨﺒﻪ‪1391/8/22‬‬
‫ﺗﻤﺮﻳﻦ ﺷﻤﺎره ‪2‬‬
‫ﺗﻤﺮﻳﻦ ﺳﻮ‪‬م – اﻋﺪاد ﻏﻴﺮﺑﺪﻳﻬﻲ)‪20‬ﻧﻤﺮه(‬
‫ﻣﺘﺨﺼﺼﻴﻦ ﺷﺮﻛﺖ ‪ ،SKB Kontur‬اﻟﮕﻮرﻳﺘﻢ رﻣﺰﻧﮕﺎري ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮدي را ﺑﻪ ﻣﻨﻈﻮر ﺣﻔﺎﻇﺖ اﻃﻼﻋﺎت ﻫﻨﮕﺎم ارﺳﺎل داده ﻫﺎ از ﻃﺮﻳﻖ‬
‫اﻳﻨﺘﺮﻧﺖ‪ ،‬ﺳﺎﺧﺘﻪ اﻧﺪ‪ .‬ﻣﺰﻳﺖ اﺻﻠﻲ اﻳﻦ اﻟﮕﻮرﻳﺘﻢ ﻋﺪم ﻟﺰوم اﺳﺘﻔﺎده از اﻋﺪاد ﺑﺰرگ ﺑﺮاي ﻛﻠﻴﺪ اﺳﺖ‪ .‬اﻟﮕﻮرﻳﺘﻢ ﺑﻪ آﺳﺎﻧﻲ ﺑﺎ اﻋﺪاد ﻃﺒﻴﻌـﻲ‬
‫ﻛﻤﺘﺮ از ﻳﻚ ﻣﻴﻠﻴﻮن ﻛﺎر ﻣﻲ ﻛﻨﺪ‪ .‬ﺑﺎ اﻳﻦ ﺣﺎل‪ ،‬ﺑﺮاي اﻓﺰاﻳﺶ ﭘﺎﻳﺪاري ﺳﻴﺴﺘﻢ رﻣﺰﻧﮕﺎري‪ ،‬ﭘﻴﺸﻨﻬﺎد ﻣﻲ ﺷﻮد از اﻋﺪاد ﺧﺎﺻـﻲ اﺳـﺘﻔﺎده‬
‫ﻛﻨﻴﺪ‪.‬‬
‫ﻣﻴﺰان ﺑﺪﻳﻬﻲ ﺑﻮدن‪ 1‬ﻳﻚ ﻋﺪد ﻃﺒﻴﻌﻲ ‪ ،N‬ﺑﺮاﺑﺮ اﺳﺖ ﺑﺎ ﺣﺎﺻﻞ ﺗﻘﺴﻴﻢ ﻣﺠﻤﻮع ﻣﻘﺴﻮم ﻋﻠﻴﻪ ﻫﺎي آن )ﺑﻪ ﺟﺰ ﺧﻮدش( ﺑﺮ ‪ .N‬ﺑﺮاي ﻣﺜﺎل‬
‫ﻣﻴﺰان ﺑﺪﻳﻬﻲ ﺑﻮدن ﻋﺪد ﻃﺒﻴﻌﻲ ‪ 10‬ﺑﺮاﺑﺮ ‪ 0.8‬‬
‫‬
‫‬
‫و ﻣﻴﺰان ﺑﺪﻳﻬﻲ ﺑﻮدن ﻋﺪد ‪ 20‬ﺑﺮاﺑﺮ ﺑﺎ‪ 1.1‬‬
‫
‬
‫‬
‫اﺳﺖ‪.‬‬
‫در ﺳﻴﺴﺘﻢ رﻣﺰﻧﮕﺎري ‪ ،SKB Kontur‬ﭘﻴﺸﻨﻬﺎد ﻣﻲ ﺷﻮد ﺗﺎ ﺣﺪ اﻣﻜﺎن از اﻋﺪاد ﻏﻴﺮﺑﺪﻳﻬﻲ اﺳﺘﻔﺎده ﺷﻮد‪ .‬ﺑﺮﻧﺎﻣﻪ اي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺑﺎزه اي‬
‫ﺑﻴﻦ اﻋﺪاد ‪ 1‬ﺗﺎ ‪ 106‬را ﺑﻪ ﻋﻨﻮان ورودي ﮔﺮﻓﺘﻪ و ﻳﻚ ﻋﺪد ﻃﺒﻴﻌﻲ ﻛﻪ ﻛﻤﺘﺮﻳﻦ ﻣﻴﺰان ﺑﺪﻳﻬﻲ ﺑﻮدن را در اﻳﻦ ﺑـﺎزه دارد‪ ،‬ﭘﻴـﺪا ﻛـﺮده و‬
‫ﭼﺎپ ﻛﻨﺪ‪.‬‬
‫)ورودي ﺑﺎﻳﺪ ﺷﺎﻣﻞ دو ﻋﺪد ﻣﺸﺨﺺ ﻛﻨﻨﺪه اﺑﺘﺪا و اﻧﺘﻬﺎي ﺑﺎزه ﺑﺎﺷﺪ ﻛﻪ ﺑﺎ ﻓﺎﺻﻠﻪ از ﻫﻢ ﺟﺪا ﺷﺪه اﻧﺪ(‬
‫ﻧﻤﻮﻧﻪي ﺧﺮوﺟﻲ ﻣﺘﻨﺎﻇﺮ‬
‫ﻧﻤﻮﻧﻪي ورودي‬
‫‪25‬‬
‫‪24 28‬‬
‫ﺗﻤﺮﻳﻦ ﭼﻬﺎرم – ﻣﺤﺎﺳﺒﻪ ﺗﻮان )‪ 20‬ﻧﻤﺮه(‬
‫ﻣﻲ داﻧﻴﻢ ﻛﻪ ﺗﻮان در ﺣﻘﻴﻘﺖ ﻳﻚ ﺳﺮي ﻋﻤﻠﻴﺎت ﺿﺮب ﻣﺘﻮاﻟﻲ و ﺿﺮب ﻧﻴﺰ ﻳﻚ ﺳﺮي ﻋﻤﻠﻴﺎت ﺟﻤﻊ ﻣﺘـﻮاﻟﻲ اﺳـﺖ؛ ﻳﻌﻨـﻲ ﺑﺮاﺑـﺮ‬
‫اﺳﺖ ﺑﺎ ‪ n‬ﺑﺎر ﺿﺮب ‪ a‬در ﺧﻮدش و ﻧﻴﺰ ﺑﺮاﺑﺮ اﺳﺖ ﺑﺎ ‪ b‬ﺑﺎر ﺟﻤﻊ ‪ a‬ﺑﺎ ﺧﻮدش‪.‬‬
‫ﺑﺮﻧﺎﻣﻪ اي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺣﺎﺻﻞ را ﺗﻨﻬﺎ ﺑﺎ اﺳﺘﻔﺎده از ﻋﻤﻠﮕﺮ ﺟﻤﻊ ﻣﺤﺎﺳﺒﻪ ﻛﻨﺪ‪.‬‬
‫ورودي‪ a:‬و ‪.n‬‬
‫ﺧﺮوﺟﻲ‪:‬ﺣﺎﺻﻞ ﻋﺒﺎرت ‬
‫‪triviality‬‬
‫ﺻﻔﺤﻪ ‪4‬‬
‫‪1‬‬
‫ﺑﻪ ﻧﺎم ﺧﺪا‬
‫ﻣﺒﺎﻧﻲ ﺑﺮﻧﺎﻣﻪﺳﺎزي )‪(40-153-7)(C/C++‬‬
‫)‪Introduction to Programming (C/C++‬‬
‫ﻣﺪرس‪ :‬ﻓﺎﻃﻤﻪ زﻣﺎﻧﻲ‬
‫داﻧﺸﻜﺪهي ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ‬
‫ﻣﻮﻋﺪ ﺗﺤﻮﻳﻞ‪ :‬ﺳﺎﻋﺖ ‪ ،23:59‬روز دوﺷﻨﺒﻪ‪1391/8/22‬‬
‫ﺗﻤﺮﻳﻦ ﺷﻤﺎره ‪2‬‬
‫ﺗﻤﺮﻳﻦ ﭘﻨﺠﻢ –رﻣﺰﻧﮕﺎري )‪ 20‬ﻧﻤﺮه(‬
‫درﻫﻨﮕﺎم ﺗﻬﻴﻪ ﻣﺠﻤﻮﻋﻪ ﻣﺴﺎﺋﻞ ﻳﻚ ﻣﺴﺎﺑﻘﻪ‪ ،‬ﻫﻴﺌﺖ داوري ﺑﺎ ﻣﺸﻜﻠﻲ روﺑﻪ رو ﺷﺪ‪ :‬ﻣﺘﻦ ﺳﻮاﻻت ﺑﺎﻳﺪ ﺗﻮﺳﻂ اﻳﻤﻴﻞ ارﺳﺎل ﻣـﻲ ﺷـﺪ‪ .‬از‬
‫آﻧﺠﺎ ﻛﻪ در اﻳﻤﻴﻞ‪ ،‬ﻋﻤﻠﻴﺎت رﻣﺰﻧﮕﺎري ﺑﺮ روي ﻣﺘﻦ اﻧﺠﺎم ﻧﻤﻲ ﺷﻮد‪ ،‬ﺑﺪﻳﻬﻲ اﺳﺖ اﺳﺘﻔﺎده از اﻳﻦ روش ﻣﻲ ﺗﻮاﻧﺪ ﺧﻄﺮ ﻟﻮ رﻓﺘﻦ ﺳﻮاﻻت‬
‫را ﺑﻪ دﻧﺒﺎل داﺷﺘﻪ ﺑﺎﺷﺪ‪ .‬ﺑﻨﺎﺑﺮاﻳﻦ اﻋﻀﺎي ﻛﻤﻴﺘﻪ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﺗﺼﻤﻴﻢ ﻣﻲ ﮔﻴﺮﻧﺪ از رﻣﺰﻧﮕﺎري اﺳﺘﻔﺎده ﻛﻨﻨﺪ زﻳﺮا ﻧﻤـﻲ ﺧﻮاﻫﻨـﺪ ﻫـﻴﭻ‬
‫ﻳﻚ از ﺷﺮﻛﺖ ﻛﻨﻨﺪﮔﺎن‪ ،‬ﻗﺒﻞ از ﺷﺮوع ﻣﺴﺎﺑﻘﻪ ﺑﻪ ﻣﺘﻦ ﺳﻮاﻻت دﺳﺘﺮﺳﻲ ﭘﻴﺪا ﻛﻨﻨﺪ‪ .‬اﻋﻀﺎي ﮔﺮوه روي ﻳـﻚ روش ﺟﺪﻳـﺪ رﻣﺰﻧﮕـﺎري‬
‫ﻣﺘﻦ ﻛﺎر ﻛﺮدﻧﺪ ﻛﻪ ﺗﺎﻛﻨﻮن اﺑﺪاع ﻧﺸﺪه و ﺑﻨﺎﺑﺮاﻳﻦ روش اﻣﻨﻲ اﺳﺖ‪ .‬راز ﭘﻨﻬﺎن در اﻳﻦ رﻣﺰﻧﮕﺎري را ﺑﺮاي ﺷـﻤﺎ ﻓـﺎش ﻣـﻲ ﻛﻨـﻴﻢ‪ :‬اﻳـﻦ‬
‫اﻟﮕﻮرﻳﺘﻢ ﺑﺮﭘﺎﻳﻪ ﻛﺎر ﺑﺎ اﻋﺪاد اول و در ﻧﮕﺎه ﺟﺰﺋﻲ ﺗﺮ‪ ،‬ﻣﺤﺎﺳﺒﻪ ‪–n‬اﻣﻴﻦ ﻋﺪد اول ﺳﺎﺧﺘﻪ ﺷﺪه اﺳﺖ‪.‬‬
‫ﭼﻨﺪﻳﻦ ﻋﻀﻮ اﻳﻦ ﻛﻤﻴﺘﻪ ﺑﻪ ﻃﻮر ﻣﺴﺘﻘﻞ روي ﻧﻮﺷﺘﻦ ﺑﺮﻧﺎﻣﻪ ﻫﺎﻳﻲ ﺑﺮاي ﻣﺤﺎﺳﺒﻪ اﻳﻦ ﻋﺪد ﻛﺎر ﻛﺮدﻧﺪ اﻣﺎ ﻣﺘﺎﺳﻔﺎﻧﻪ ﺧﺮوﺟﻲ اﻳﻦ ﺑﺮﻧﺎﻣـﻪ‬
‫ﻫﺎ ﺑﺎ ﻫﻢ ﻳﻜﺴﺎن ﻧﻴﺴﺖ‪ .‬ﻫﺮﻳﻚ از ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﺎن اﻃﻤﻴﻨﺎن دارﻧﺪ ﺑﺮﻧﺎﻣﻪ ﺧﻮدﺷﺎن درﺳﺖ ﻛﺎر ﻣﻲ ﻛﻨﺪ‪ .‬ﺑﻪ ﻫﻤﻴﻦ دﻟﻴﻞ ﻛﺎر ﮔﺮوه ﺑﻪ ﺑـﻦ‬
‫ﺑﺴﺖ رﺳﻴﺪه و ﻣﺴﺎﺑﻘﻪ در آﺳﺘﺎﻧﻪ ﻟﻐﻮ ﺷﺪن اﺳﺖ‪.‬‬
‫ﺷﻤﺎ ﻣﻲ ﺗﻮاﻧﻴﺪ ﺑﻪ ﻫﻴﺌﺖ داوران ﻛﻤﻚ ﻛﻨﻴﺪ ﺗﺎ ﻣﺴﺎﺑﻘﻪ ﺑﺮﮔﺰار ﺷﻮد‪ .‬ﺑﺮﻧﺎﻣﻪ اي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ‪-n‬اﻣﻴﻦ ﻋـﺪد اول را ﻣﺤﺎﺳـﺒﻪ ﻛﻨـﺪ‪ .‬ﻣﻬـﻢ‬
‫ﺗﺮﻳﻦ ﻣﻮﺿﻮع اﻳﻦ اﺳﺖ ﻛﻪ ﺑﺮﻧﺎﻣﻪ ﺷﻤﺎ درﺳﺖ ﻛﺎر ﻛﻨﺪ‪.‬‬
‫اوﻟﻴﻦ ورودي ﻋﺪد ﺻﺤﻴﺢ ﻣﺜﺒﺖ ‪ k‬اﺳﺖ ﻛﻪ ﺑﻪ دﻧﺒﺎل آن ‪ k‬ﻋﺪد ﺻﺤﻴﺢ ﻣﺜﺒﺖ ﻛﻤﺘﺮ از ‪15000‬وارد ﺷﺪه و ﺑﺮاي ﻫﺮ ﻋﺪد ‪ n‬وارد ﺷﺪه‪،‬‬
‫‪-n‬اﻣﻴﻦ ﻋﺪد اول ﻣﺤﺎﺳﺒﻪ ﻣﻲ ﺷﻮد‪.‬‬
‫ﻧﻤﻮﻧﻪي ﺧﺮوﺟﻲ ﻣﺘﻨﺎﻇﺮ‬
‫ﻧﻤﻮﻧﻪي ورودي‬
‫‪5‬‬
‫‪3‬‬
‫‪11‬‬
‫‪17‬‬
‫‪4‬‬
‫‪3‬‬
‫‪2‬‬
‫‪5‬‬
‫‪7‬‬
‫ﺻﻔﺤﻪ ‪5‬‬
‫ﺑﻪ ﻧﺎم ﺧﺪا‬
‫ﻣﺒﺎﻧﻲ ﺑﺮﻧﺎﻣﻪﺳﺎزي )‪(40-153-7)(C/C++‬‬
‫)‪Introduction to Programming (C/C++‬‬
‫ﻣﺪرس‪ :‬ﻓﺎﻃﻤﻪ زﻣﺎﻧﻲ‬
‫داﻧﺸﻜﺪهي ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ‬
‫ﻣﻮﻋﺪ ﺗﺤﻮﻳﻞ‪ :‬ﺳﺎﻋﺖ ‪ ،23:59‬روز دوﺷﻨﺒﻪ‪1391/8/22‬‬
‫ﺗﻤﺮﻳﻦ ﺷﻤﺎره ‪2‬‬
‫ﺗﻤﺮﻳﻦ ﺗﺸﻮﻳﻘﻲ– ﭘﻴﺪا ﻛﺮدن ﻣﻀﺮب )‪ 25‬ﻧﻤﺮه(‬
‫ﺑﺮﻧﺎﻣﻪ اي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ‪ N‬ﻋﺪد ﺻﺤﻴﺢ ﻣﺜﺒﺖ )‪ (N ≤ 10000‬را درﻳﺎﻓﺖ ﻛﻨﺪ‪ .‬اﻋـﺪاد وارد ﺷـﺪه ﻧﻤـﻲ ﺗﻮاﻧﻨـﺪ ﺑـﺰرگ ﺗـﺮ از‬
‫‪ 15000‬ﺑﺎﺷﻨﺪ‪) .‬ﺗﻜﺮار ﻣﺠﺎز اﺳﺖ ﺑﻨﺎﺑﺮاﻳﻦ ﻣﻤﻜﻦ اﺳﺖ ﭼﻨﺪﻳﻦ ﻋﺪد در ﻟﻴﺴﺖ ورودي ﺑﺎ ﻫﻢ ﻣﺴـﺎوي ﺑﺎﺷـﻨﺪ(‪ .‬ﺑﺮﻧﺎﻣـﻪ‬
‫ﺷﻤﺎ ﺑﺎﻳﺪ ﻣﺠﻤﻮﻋﻪ ﻫﺎﻳﻲ از اﻳﻦ اﻋﺪاد را ﺑﻴﺎﺑﺪ ﻛﻪ ﻣﺠﻤﻮع اﻋﻀﺎي آﻧﻬﺎ ﻣﻀﺮﺑﻲ از ‪ N‬ﺑﺎﺷﺪ )ﻳﻌﻨﻲ ﻣﺠﻤﻮع اﻋـﺪاد اﻧﺘﺨـﺎب‬
‫ﺷﺪه=‪ .(kN‬اﻳﻦ ﻣﺠﻤﻮﻋﻪ ﻫﺎ ﻣﻲ ﺗﻮاﻧﻨﺪ اﻋﻀﺎي ﺗﻜﺮاري داﺷﺘﻪ ﺑﺎﺷﻨﺪ‪.‬‬
‫ورودي‪:‬اوﻟﻴﻦ ﻋﺪد وارد ﺷﺪه ﻫﻤﺎن ‪ N‬اﺳﺖ‪ N .‬ﺧﻂ ﺑﻌﺪي ورودي ﺷﺎﻣﻞ اﻋﺪاد ﻣﺠﻤﻮﻋﻪ ورودي اﺳﺖ‪.‬‬
‫ﺧﺮوﺟﻲ‪:‬درﺻﻮرﺗﻲ ﻛﻪ ﺑﺮﻧﺎﻣﻪ ﻫﻴﭻ ﻣﺠﻤﻮﻋﻪ اي را ﺑﻪ ﻋﻨﻮان ﭘﺎﺳﺦ ﻣﺴﺌﻠﻪ ﭘﻴﺪا ﻧﻜﻨﺪ‪ ،‬ﺑﺎﻳﺪ ﭘﻴﻐﺎم ﻣﻨﺎﺳﺒﻲ در ﺧﺮوﺟﻲ ﭼﺎپ ﻛﻨﺪ‪ .‬درﻏﻴﺮ‬
‫اﻳﻦ ﺻﻮرت ﺧﺮوﺟﻲ ﺑﺎﻳﺪ ﺑﻪ ﺻﻮرت زﻳﺮ ﺑﺎﺷﺪ‪:‬‬
‫ﺧﻂ اول‪ :‬ﺗﻌﺪاد اﻋﻀﺎي ﻣﺠﻤﻮﻋﻪ‪ ،‬ﺧﻄﻮط ﺑﻌﺪي‪ :‬اﻋﻀﺎي ﻣﺠﻤﻮﻋﻪ‪ ،‬ﻣﺠﻤﻮﻋﻪ ﻫﺎي دﻳﮕﺮ )درﺻﻮرت وﺟﻮد(‪ :‬ﺑﻪ ﺗﺮﺗﻴﺐ ذﻛﺮ ﺷﺪه در اداﻣﻪ‬
‫اﻃﻼﻋﺎت ﻗﺒﻠﻲ ﭼﺎپ ﻣﻲ ﺷﻮﻧﺪ‪.‬‬
‫ﻧﻤﻮﻧﻪي ﺧﺮوﺟﻲ ﻣﺘﻨﺎﻇﺮ‬
‫ﻧﻤﻮﻧﻪي ورودي‬
‫‪2‬‬
‫‪2‬‬
‫‪3‬‬
‫‪2‬‬
‫‪1‬‬
‫‪4‬‬
‫‪3‬‬
‫‪1‬‬
‫‪3‬‬
‫‪1‬‬
‫‪4‬‬
‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫‪4‬‬
‫‪5‬‬
‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫‪4‬‬
‫‪1‬‬
‫»ﻣﻮﻓﻖ ﺑﺎﺷﻴﺪ«‬
‫ﺻﻔﺤﻪ ‪6‬‬