Assignment4.pdf

‫ﺑﻪ ﻧﺎم ﺧﺪا‬
‫ﻣﺒﺎﻧﻲ ﺑﺮﻧﺎﻣﻪﺳﺎزي )‪(40-153-7)(C/C++‬‬
‫)‪Introduction to Programming (C/C++‬‬
‫ﻣﺪرس‪ :‬ﻓﺎﻃﻤﻪ زﻣﺎﻧﻲ‬
‫داﻧﺸﻜﺪهي ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ‬
‫ﻣﻮﻋﺪ ﺗﺤﻮﻳﻞ‪ :‬ﺳﺎﻋﺖ ‪ ،23:59‬روز دوﺷﻨﺒﻪ ‪1391/9/20‬‬
‫ﺗﻤﺮﻳﻦ ﺷﻤﺎره ‪4‬‬
‫ﻧﺤﻮه ارﺳﺎل‬
‫ﭘﺎﺳﺦ ﺗﻤﺮﻳﻨﺎت ﻏﻴﺮ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﻣﺎﻧﻨﺪ »ﺗﺒﺪﻳﻞ ﻣﺒﻨﺎﻫﺎ« را در ﻳﻚ ﻓﺎﻳﻞ ‪ 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/9/20‬‬
‫ﺗﻤﺮﻳﻦ ﺷﻤﺎره ‪4‬‬
‫ﺗﺬﻛﺮ ﻣﻬﻢ‪:‬رﻋﺎﻳﺖ ﻣﻮارد زﻳﺮ اﻟﺰاﻣﻲ اﺳﺖ‪ .‬در ﺻﻮرت ﻋﺪم رﻋﺎﻳﺖ آنﻫﺎ‪ ،‬ﺣﺘﻲ در ﺻﻮرت درﺳﺖﺑﻮدن ﺑﺮﻧﺎﻣﻪ ﺑﻪ داﻧﺸﺠﻮ ﻧﻤﺮهاي ﺗﻌﻠﻖ ﻧﻤﻲﮔﻴﺮد‪:‬‬
‫•‬
‫اﺳﻢ ﻓﺎﻳﻞ ‪ 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‬ﻋﺪد ﺑﮕﻴﺮد‪ .‬ﻫﺮ ﺑﺎر ﻛﻪ ﻋﺪد ﺟﺪﻳﺪ وارد ﺷﺪ ﺑﺎﻳﺪ ﻛﻞ اﻋﺪاد وارد ﺷﺪه را ﺑﻪ ﺻﻮرت ﻣﺮﺗﺐ ﺷﺪه ﭼﺎپ‬
‫ﻛﻨﺪ‪.‬‬
‫ﺻﻔﺤﻪ ‪2‬‬
‫ﺑﻪ ﻧﺎم ﺧﺪا‬
‫ﻣﺒﺎﻧﻲ ﺑﺮﻧﺎﻣﻪﺳﺎزي )‪(40-153-7)(C/C++‬‬
‫)‪Introduction to Programming (C/C++‬‬
‫ﻣﺪرس‪ :‬ﻓﺎﻃﻤﻪ زﻣﺎﻧﻲ‬
‫داﻧﺸﻜﺪهي ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ‬
‫ﻣﻮﻋﺪ ﺗﺤﻮﻳﻞ‪ :‬ﺳﺎﻋﺖ ‪ ،23:59‬روز دوﺷﻨﺒﻪ ‪1391/9/20‬‬
‫ﺗﻤﺮﻳﻦ ﺷﻤﺎره ‪4‬‬
‫ﺗﻤﺮﻳﻦ دو‪‬م–ﻣﺠﻤﻮع وزن دار ﻣﺜﻠﺜﻲ ) ‪ 20‬ﻧﻤﺮه(‬
‫‪ n‬اﻣﻴﻦ ﻋﺪد ﻣﺜﻠﺜﻲ را ﺑﺎ )‪ T(n‬ﻧﻤﺎﻳﺶ ﻣﻲ دﻫﻴﻢ ﻛﻪ ﺑﺮاﺑﺮ اﺳﺖ ﺑﺎ ﻣﺠﻤﻮع اﻋﺪاد ‪ 1‬ﺗﺎ ‪:n‬‬
‫ ⋯ ‪ 1 2‬‬
‫اﻳﻦ ﻣﺠﻤﻮع‪ ،‬ﺗﻌﺪاد ﻧﻘﺎﻃﻲ را ﻣﺸﺨﺺ ﻣﻲ ﻛﻨﺪ ﻛﻪ ﺑﺎ آن ﻣﻲ ﺗﻮان ﻣﺜﻠﺜﻲ ﺑﻪ ﻃﻮل اﺿﻼع ‪ n‬رﺳﻢ ﻛﺮد )ﺷﻜﻞ ‪ .(2‬ﺑﺮﻧﺎﻣﻪ اي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ‬
‫ﻣﺠﻤﻮع وزن دار اﻋﺪاد ﻣﺜﻠﺜﻲ را ﻣﻄﺎﺑﻖ ﻓﺮﻣﻮل زﻳﺮ ﻣﺤﺎﺳﺒﻪ ﻛﻨﺪ‪:‬‬
‫‪
1. . ; 1‬‬
‫ﺷﻜﻞ‪ -1‬اﻋﺪاد ﻣﺜﻠﺜﻲ)‪(n=4‬‬
‫ورودي‪:‬اوﻟﻴﻦ ﺳﻄﺮ‪ ،‬ﻋﺪد ﺻﺤﻴﺢ ‪ N‬اﺳﺖ ‪1 1000‬ﻛﻪ ﺗﻌﺪاد ﻣﺠﻤﻮﻋﻪ ﻫﺎي ورودي را ﻣﺸﺨﺺ ﻣﻲ ﻛﻨﺪ‪ .‬در ﻫـﺮ ﻳـﻚ از‬
‫‪ N‬ﺳﻄﺮ ﺑﻌﺪي‪ ،‬ﻳﻚ ﻋﺪد ﺻﺤﻴﺢ ‪ n1 300‬وارد ﻣﻲ ﺷﻮد ﻛﻪ ﻣﺸﺨﺺ ﻛﻨﻨﺪه ﻃﻮل ﺿﻠﻊ ﻣﺜﻠﺚ اﺳﺖ‪.‬‬
‫ﺧﺮوﺟﻲ‪:‬ﺑﻪ ازاي ﻫﺮ ورودي‪ ،‬ﺧﺮوﺟﻲ ﺑﺎﻳﺪ ﺑﻪ اﻳﻦ ﺷﺮح ﺑﺎﺷﺪ‪ :‬ﺷﻤﺎره ورودي )ﺑﻴﻦ ‪ 1‬ﺗﺎ ‪ ،(N‬ﻓﺎﺻﻠﻪ‪ ،‬ﻣﻘﺪار ‪ ،n‬ﻓﺎﺻﻠﻪ‪ ،‬ﻣﺠﻤـﻮع وزن دار‬
‫ﻣﺜﻠﺜﻲ )‪W(n‬‬
‫ﻧﻤﻮﻧﻪي ﺧﺮوﺟﻲ ﻣﺘﻨﺎﻇﺮ‬
‫‪45‬‬
‫‪105‬‬
‫‪210‬‬
‫‪2145‬‬
‫ﻧﻤﻮﻧﻪي ورودي‬
‫‪4‬‬
‫‪3‬‬
‫‪4‬‬
‫‪5‬‬
‫‪10‬‬
‫‪1 3‬‬
‫‪2 4‬‬
‫‪3 5‬‬
‫‪4 10‬‬
‫ﺗﻤﺮﻳﻦ ﺳﻮ‪‬م–‪ 20) merge sort‬ﻧﻤﺮه(‬
‫ﺑﺮﻧﺎﻣﻪ اي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺑﺎ اﻟﮕﻮرﻳﺘﻢ ‪ merge sort‬ﻳﻚ آراﻳﻪ را ﻣﺮﺗﺐ ﻛﻨﺪ‪ .‬ﺑﺮاي اﻳﻦ ﻛﺎر اﺑﺘﺪا ﻃﻮل آراﻳﻪ داده ﻣﻲ ﺷﻮد و ﺳﭙﺲ ﻋﻨﺎﺻﺮ‬
‫آراﻳﻪ ‪ ،‬ﭘﺲ از آن آراﻳﻪ ﻣﺮﺗﺐ ﺷﺪه را در ﺧﺮوﺟﻲ ﻧﻤﺎﻳﺶ دﻫﺪ‪) .‬اﻟﮕﻮرﻳﺘﻢ ‪ merge sort‬را ﺑﺎ ‪ search‬در اﻳﻨﺘﺮﻧﺖ ﭘﻴﺪا ﻛﻨﻴﺪ(‬
‫‪Input:‬‬
‫‪5‬‬
‫ﺻﻔﺤﻪ ‪3‬‬
‫ﺑﻪ ﻧﺎم ﺧﺪا‬
‫ﻣﺒﺎﻧﻲ ﺑﺮﻧﺎﻣﻪﺳﺎزي )‪(40-153-7)(C/C++‬‬
‫)‪Introduction to Programming (C/C++‬‬
‫ﻣﺪرس‪ :‬ﻓﺎﻃﻤﻪ زﻣﺎﻧﻲ‬
‫داﻧﺸﻜﺪهي ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ‬
‫ﻣﻮﻋﺪ ﺗﺤﻮﻳﻞ‪ :‬ﺳﺎﻋﺖ ‪ ،23:59‬روز دوﺷﻨﺒﻪ ‪1391/9/20‬‬
‫ﺗﻤﺮﻳﻦ ﺷﻤﺎره ‪4‬‬
‫‪5 4 2 1 3‬‬
‫‪Output:‬‬
‫‪1 2 3 4 5‬‬
‫ﻧﻤﻮﻧﻪي ورودي‬
‫ﻧﻤﻮﻧﻪي ﺧﺮوﺟﻲ ﻣﺘﻨﺎﻇﺮ‬
‫‪5‬‬
‫‪5 4 2 1 3‬‬
‫‪1 2 3 4 5‬‬
‫ﺗﻤﺮﻳﻦ ﭼﻬﺎرم–ﺟﺎﻳﮕﺸﺖ ﺣﺮوف) ‪ 20‬ﻧﻤﺮه(‬
‫ﺑﺮﻧﺎﻣﻪاي ﺷﺎﻣﻞ ﻳﻚ ﺗﺎﺑﻊ ﺑﺎزﮔﺸﺘﻲ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻳﻚ رﺷﺘﻪ را از ورودي اﺳﺘﺎﻧﺪارد )‪ (cin‬ﺑﮕﻴﺮد و ﺗﻤﺎم ﺟﺎﻳﺸﮕﺖﻫﺎي ﺣﺮوف آن را در‬
‫ﺧﺮوﺟﻲ اﺳﺘﺎﻧﺪارد )‪ (cout‬ﭼﺎپ ﻛﻨﺪ‪ .‬ﻓﺮض ﻛﻨﻴﺪ رﺷﺘﻪ ورودي ﻣﻮرد ﻧﻈﺮ ﺷﺎﻣﻞ ﺣﺪاﻗﻞ ‪ 1‬و ﺣﺪاﻛﺜﺮ ‪ 5‬ﻛﺎراﻛﺘﺮ ﻣﺘﻤﺎﻳﺰ اﺳﺖ‪) .‬ﺑﺮاي‬
‫ﻣﺤﺎﺳﺒﻪي ﺟﺎﻳﮕﺸﺖﻫﺎ از ﺗﺎﺑﻌﻲ ﺑﻪ ﻧﺎم ‪ permutation‬اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪(.‬‬
‫ورودي‪ :‬ﻳﻚ رﺷﺘﻪ ﻛﺎراﻛﺘﺮي ) ‪ 0‬ﺗﺎ ‪ 5‬ﻛﺎراﻛﺘﺮ (‬
‫ﺧﺮوﺟﻲ‪ :‬ﺗﻤﺎم ﺟﺎﻳﮕﺸﺖﻫﺎي ﻣﺘﻤﺎﻳﺰ ﻛﺎراﻛﺘﺮﻫﺎ )ﺗﻮﺟﻪ ﻛﻨﻴﺪ ﻛﻪ ﻫﺮ ﺟﺎﻳﮕﺸﺖ ﺑﺎﻳﺪ در ﻳﻚ ﺳﻄﺮ از ﺧﺮوﺟﻲ ﭼﺎپ ﺷﻮد و ﻧﺒﺎﻳﺪ ﺑﻴﻦ‬
‫ﺣﺮوف ﻳﻚ ﺟﺎﻳﮕﺸﺖ‪ space ،‬ﻗﺮار دﻫﻴﺪ(‬
‫ﻧﻤﻮﻧﻪي ﺧﺮوﺟﻲ ﻣﺘﻨﺎﻇﺮ‬
‫ﻧﻤﻮﻧﻪي ورودي‬
‫‪A‬‬
‫‪Tu‬‬
‫‪uT‬‬
‫‪c91‬‬
‫‪c19‬‬
‫‪9c1‬‬
‫‪91c‬‬
‫‪1c9‬‬
‫‪19c‬‬
‫‪a‬‬
‫‪Tu‬‬
‫‪c91‬‬
‫ﺗﻤﺮﻳﻦ ﭘﻨﺠﻢ –ﺳﻮدوﻛﻮ) ‪ 25‬ﻧﻤﺮه(‬
‫ﻓﺮض ﻛﻨﻴﺪ ﻳﻚ ﺟﺪول ﺳﻮدوﻛﻮ در اﺑﻌﺎد ﻛﻮﭼﻚ دارﻳﻢ‪ ،‬ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻳﻚ ﺳﻮدوﻛﻮ ﺑﻪ ﻋﻨﻮان ورودي درﻳﺎﻓﺖ و ﺳﭙﺲ آن را‬
‫ﺻﻔﺤﻪ ‪4‬‬
‫ﺑﻪ ﻧﺎم ﺧﺪا‬
‫ﻣﺒﺎﻧﻲ ﺑﺮﻧﺎﻣﻪﺳﺎزي )‪(40-153-7)(C/C++‬‬
‫)‪Introduction to Programming (C/C++‬‬
‫ﻣﺪرس‪ :‬ﻓﺎﻃﻤﻪ زﻣﺎﻧﻲ‬
‫داﻧﺸﻜﺪهي ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ‬
‫ﻣﻮﻋﺪ ﺗﺤﻮﻳﻞ‪ :‬ﺳﺎﻋﺖ ‪ ،23:59‬روز دوﺷﻨﺒﻪ ‪1391/9/20‬‬
‫ﺗﻤﺮﻳﻦ ﺷﻤﺎره ‪4‬‬
‫ﺣﻞ ﻛﻨﺪ‪.‬‬
‫ﻗﻮاﻧﻴﻦ زﻳﺮ را در ﻧﻈﺮ ﻣﻲﮔﻴﺮﻳﻢ‪:‬‬
‫• ﺳﻮدوﻛﻮ ﻣﻮرد ﻧﻈﺮ ‪ 3*3‬اﺳﺖ‪ ،‬در ﻫﺮ ﺳﻄﺮ و ﺳﺘﻮن آن ‪ ،‬ﺑﺎﻳﺪ اﻋﺪاد ‪ 1،2‬و ‪ 3‬وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﻨﺪ‪.‬‬
‫• ﻋﺪد ﺗﻜﺮاري در ﺳﻄﺮﻫﺎ و ﺳﺘﻮنﻫﺎ ﻧﺒﺎﻳﺪ ﺑﺎﺷﺪ‪.‬‬
‫• ﻣﻲ ﺗﻮاﻧﻴﺪ ﻓﺮض ﻛﻨﻴﺪ ﻛﻪ ورودي دﻗﻴﻘﺎ ﻳﻚ ﺟﻮاب دارد‪.‬‬
‫ورودي‪ 3:‬ﺧﻂ ﻛﻪ در ﻫﺮ ﺧﻂ ‪ 3‬ﻛﺎرﻛﺘﺮ آﻣﺪه اﺳﺖ ﻛﻪ ﻫﺮ ﻛﺎرﻛﺘﺮ ﻳﻜﻲ از ﺣﺎﻟﺖﻫﺎي }‪ {1,2,3,x‬را داراﺳﺖ‪.‬‬
‫اﻳﻦ ‪ 3‬ﺧﻂ ﺗﺸﻜﻴﻞ ﻳﻚ ﺟﺪول ‪ 3*3‬را ﻣﻲدﻫﻨﺪ‪.‬‬
‫ﻛﺎرﻛﺘﺮ ﻫﺎي ‪ x‬ﻣﻘﺪار ﻣﺸﺨﺼﻲ ﻧﺪارﻧﺪ و ﺑﺎﻳﺪ ﭘﺲ از ﺣﻞ ﻛﺮدن ﻣﻘﺪار آنﻫﺎ ﺗﻌﻴﻴﻦ ﮔﺮدد‪.‬‬
‫ﺧﺮوﺟﻲ‪:‬ﺟﺪول ﺣﻞ ﺷﺪه ﺑﻪ ﺻﻮرت ‪ 3‬ﺧﻂ ﺧﺮوﺟﻲ ﻛﻪ در ﻫﺮ ﺧﻂ ﺑﺎﻳﺪ ‪ 3‬ﻛﺎرﻛﺘﺮ وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ ﻛﻪ ﻳﻜﻲ از ﺣﺎﻟﺖﻫﺎي‬
‫}‪ {1,2,3‬ﻣﻲﺗﻮاﻧﺪ ﺑﺎﺷﺪ‪.‬‬
‫ﺗﻮﺟﻪ‪ :‬ﻫﻢ در ورودي و ﻫﻢ در ﺧﺮوﺟﻲ ﻫﺮ ﻛﺎرﻛﺘﺮ ﺑﺎ ﻳﻚ ﻓﺎﺻﻠﻪ از ﻛﺎرﻛﺘﺮ ﺑﻌﺪي ﺟﺪا ﺷﺪه اﺳﺖ‪.‬‬
‫ﻧﻤﻮﻧﻪي ﺧﺮوﺟﻲ ﻣﺘﻨﺎﻇﺮ‬
‫ﻧﻤﻮﻧﻪي ورودي‬
‫‪132‬‬
‫‪213‬‬
‫‪321‬‬
‫‪x32‬‬
‫‪21x‬‬
‫‪x21‬‬
‫»ﻣﻮﻓﻖ ﺑﺎﺷﻴﺪ«‬
‫ﺻﻔﺤﻪ ‪5‬‬