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‬از ارﺳﺎل ﻓﺎﻳﻞ اﺟﺮاﻳﻲ )‪ (.exe‬ﺑﻪ ﻫﻤﺮاه ﺳﻮرس‪ ،‬ﺧﻮدداري ﻛﻨﻴﺪ‪ .‬ﺳﻴﺴﺘﻢ ‪ gmail‬و اﻛﺜﺮ ﺳﺮوﻳﺲﻫﺎي اﻳﻤﻴﻞ از درﻳﺎﻓﺖ ﻓﺎﻳﻞ‬
‫اﺟﺮاﻳﻲ )ﺣﺘﻲ اﮔﺮ در داﺧﻞ ﻓﺎﻳﻞ ‪ .zip‬ﺑﺎﺷﻨﺪ( ﺧﻮدداري ﻣﻲﻛﻨﺪ‪ .‬ﺑﻨﺎﺑﺮاﻳﻦ ﻣﺴﺌﻮﻟﻴﺖ ﻧﺮﺳﻴﺪن ﭼﻨﻴﻦ اﻳﻤﻴﻞﻫﺎﻳﻲ ﺑﻌﻬﺪه داﻧﺸﺠﻮ اﺳﺖ‪.‬‬
‫ﺗﻮﺟﻪ ‪ :3‬از ارﺳﺎل ﺗﻤﺮﻳﻦﻫﺎ ﺑﻪ ﮔﺮوه درس ﺧﻮدداري ﻛﻨﻴﺪ! و ﺣﺘﻤﺎ ﺑﻪ ﻫﻨﮕﺎم وارد ﻧﻤﻮدن آدرس اﻳﻤﻴﻞ ﮔﻴﺮﻧﺪه )ﺑﺨﺼﻮص در ‪(gmail‬‬
‫دﻗﺖ ﻛﻨﻴﺪ‪ ،‬ﺗﺎ اﺷﺘﺒﺎﻫﺎ آدرس ﮔﺮوه ﺑﻪ ﺟﺎي آدرس اﻳﻤﻴﻞ ﺗﻤﺮﻳﻦﻫﺎ وارد ﻧﺸﺪه ﺑﺎﺷﺪ‪.‬‬
‫روش ارزﻳﺎ*)‬
‫ارزﻳﺎﺑﻲ‬
‫ﻋﻨﻮان‬
‫*‬
‫در زﻣﺎن ﻣﻘﺮر‬
‫‪%100‬‬
‫ﺗﺎ ‪ 1‬روز ﭘﺲ از زﻣﺎن ﻣﻘﺮر‬
‫*‬
‫ﺑﻴﺶ از ﻳﻚ روز و ﺗﺎ ‪ 3‬روز ﭘﺲ از زﻣﺎن ﻣﻘﺮر‬
‫*‪%30‬‬
‫ﺑﻴﺶ از ﺳﻪ روز و ﺗﺎ ﻳﻚ ﻫﻔﺘﻪ ﭘﺲ از زﻣﺎن ﻣﻘﺮر‬
‫*‬
‫‪%60‬‬
‫‪%20‬‬
‫*‬
‫ﺑﻴﺶ از ﻳﻚ ﻫﻔﺘﻪ ﭘﺲ از زﻣﺎن ﻣﻘﺮر‬
‫ﺗﻘﻠﺐ‪ ،‬ﻛﭙﻲ ﺑﺮداري و ﻣﻮاردي از اﻳﻦ ﻗﺒﻴﻞ‬
‫‪%0‬‬
‫)ﻧﻤﺮه ﻛﺎﻣﻞ ﺗﻤﺮﻳﻦ( * ‪-1‬‬
‫*درﺻﺪﻫﺎي ﻓﻮق ﻧﺴﺒﺖ ﺑﻪ ﻧﻤﺮه ﻛﺴﺐ ﺷﺪهي ﺗﻤﺮﻳﻦ ﺗﻮﺳﻂ داﻧﺶﺟﻮ ﻣﻲﺑﺎﺷﺪ‪.‬‬
‫ﺗﻮﺟﻪ‪ :‬اﻳﻦ ﺗﻤﺮﻳﻦ داراي ‪ 100‬ﻧﻤﺮه ﺑﻮده و ﺷﺎﻣﻞ ‪ 4‬ﺳﺆال اﺳﺖ‪.‬‬
‫ﺗﻮﺟﻪ‪ :‬از ﺑﻴﻦ ﺳﺆالﻫﺎي ‪ 6 ،5‬و ‪ ،7‬دوﺗﺎ را ﺑﻪ دﻟﺨﻮاه اﻧﺘﺨﺎب و ﺣﻞ ﻧﻤﺎﻳﻴﺪ‪ .‬ﺣﻞ ﺗﻤﺎﻣﻲ ﺳﺆالﻫﺎ ﻧﻤﺮهي اﺿﺎﻓﻲ ﻧﺪارد‪.‬‬
‫ﻫﻤﭽﻨﻴﻦ در اﺳﻢﮔﺬاري ﻓﺎﻳﻞﻫﺎي ﺑﺮﻧﺎﻣﻪ‪ ،‬ﺷﻤﺎرهي درﺳﺖ ﺳﺆال را )ﻫﻤﺎﻧﻄﻮر ﻛﻪ در ﺑﺎﻻ ﺗﻮﺿﻴﺢ داده ﺷﺪ( وارد ﻛﻨﻴﺪ‪.‬‬
‫)‪(١‬‬
‫ ‬
‫ﻣﺒﺎﻧﯽ ﺑﺮﻧﺎﻣﻪﺳﺎزی )‪(۴۰-۱۵۳) (C/C++‬‬
‫)‪Introduction to Programming (C/C++‬‬
‫ﻣﺪرس‪ :‬ﺷﺮوﻳﻦ داﻧﺶﭘﮋوه‬
‫داﻧﺸﮑﺪهی ﻣﻬﻨﺪﺳﯽ ﮐﺎﻣﭙﻴﻮﺗﺮ‬
‫ﻣﻮﻋﺪ ﻮﻳﻞ‪ :‬ﺳﺎﻋﺖ‪ ،۱۵:۳۰‬روز ﻳﮑﺸﻨﺒﻪ ‪۱۳۹۰/۹/۲۷‬‬
‫‪$%‬ﺮﻳﻦ ! ﺎره ‪٣‬‬
‫ﺗﺬﻛﺮ ﻣﻬﻢ‪ :‬در ﺗﻤﺮﻳﻦﻫﺎي ﻗﺒﻠﻲ ﺗﻌﺪادي از داﻧﺸﺠﻮﻫﺎ ﻓﺮﻣﺖ درﺳﺖ ارﺳﺎل ﺑﺮﻧﺎﻣﻪﻫﺎ را رﻋﺎﻳﺖ ﻧﻜﺮده ﺑﻮدﻧﺪ ﻛﻪ ﺑـﻪ دﻻﻳﻠـﻲ ﻫﻤﭽـﻮن‬
‫ﻧﺎآﺷﻨﺎﺑﻮدن آﻧﻬﺎ ﺑﺎ ﻣﺤﻴﻂﻫﺎي ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ از آن ﻣﻮارد ﭼﺸﻢﭘﻮﺷﻲ ﺷﺪه و ﺑﻪ ﺻﻮرت دﺳﺘﻲ ﺗﺼﺤﻴﺢ ﺷﺪﻧﺪ! اﻣﺎ ﺑﺎ ﺗﻮﺟـﻪ ﺑـﻪ ﺑـﺎﻻﺑﻮدن‬
‫ﺗﻌﺪاد ﺑﺮﻧﺎﻣﻪﻫﺎ ﺑﺮاي ﺗﺼﺤﻴﺢ‪ ،‬از اﻳﻦ ﭘﺲ در ﺻﻮرت ﻋﺪم رﻋﺎﻳﺖ ﻣﻮارد زﻳﺮ‪ ،‬ﺣﺘﻲ در ﺻﻮرت درﺳﺖﺑﻮدن ﺑﺮﻧﺎﻣـﻪ ﺑـﻪ داﻧﺸـﺠﻮ ﻧﻤـﺮهاي‬
‫ﺗﻌﻠﻖ ﻧﻤﻲﮔﻴﺮد‪:‬‬
‫•‬
‫اﺳﻢ ﻓﺎﻳﻞ ‪ zip‬ﻫﻤﺎﻧﻄﻮر ﻛﻪ در ﺑﺎﻻ ﺗﻮﺿﻴﺢ داده ﺷﺪ ﺑﺎﻳﺪ ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ﺑﻪ ﻓﺮﻣﺖ ‪ HW3_86202228.zip‬ﺗﻌﻴـﻴﻦ ﺷـﻮد‪ .‬ﻫـﺮ‬
‫ﻳﻚ از ﻣﻮارد زﻳﺮ اﺷﺘﺒﺎه اﺳﺖ‪:‬‬
‫‪hw3_86202228.zip‬‬
‫‪ o‬ﺣﺮوف ﻛﻮﭼﻚ ﺑﺮاي ‪:HW‬‬
‫‪ o‬ﺧﻂ ﺗﻴﺮه ﺑﻪ ﺟﺎي ‪HW3-86202228.zip :underline‬‬
‫‪HW3.zip o‬‬
‫‪... 86202228.zip o‬‬
‫•‬
‫اﺳﺎﻣﻲ ﻓﺎﻳﻞﻫﺎي ﺗﻤﺮﻳﻦ ﻧﻴﺰ ﺑﺎﻳﺪ ﺑﺎ ﻓﺮﻣﺖ درﺳﺖ وارد ﺷﻮﻧﺪ‪ .‬ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل‪ . PROG03.cpp :‬ﻣﻮارد زﻳﺮ ﺗﺼﺤﻴﺢ ﻧﻤﻲﺷﻮﻧﺪ‪:‬‬
‫‪prog03.cpp o‬‬
‫‪PROG3.cpp o‬‬
‫‪PROG03.c o‬‬
‫‪PROG_03.cpp o‬‬
‫‪....‬‬
‫‪HW_03.cpp o‬‬
‫•‬
‫ورودي و ﺧﺮوﺟﻲ ﺑﺮﻧﺎﻣﻪﻫﺎ ﺑﺎﻳﺪ دﻗﻴﻘﺎً ﻫﻤﺎﻧﻄﻮر ﻛﻪ در ﺻﻮرت ﺳﺆال ﺗﻮﺿﻴﺢ داده ﺷﺪ ﺑﺎﺷﻨﺪ‪ .‬ﻫﻴﭻ ﺧﺮوﺟﻲ اﺿـﺎﻓﻪاي ﻧﺒﺎﻳـﺪ ﭼـﺎپ‬
‫ﺷﻮد‪ .‬ﺑﺮاي ﺟﺪاﻛﺮدن دو ﻋﺪد ﭘﺸﺖ ﺳﺮ ﻫﻢ در ﺧﺮوﺟﻲ‪ ،‬از ﻳﻚ ﻓﺎﺻﻪ )‪ (space‬اﺳﺘﻔﺎده ﻛﻨﻴـﺪ‪ .‬ﺑـﺮاي ﭼـﺎپ ﺧﺮوﺟـﻲ در ﺳـﻄﺮ‬
‫ﺟﺪاﮔﺎﻧﻪ از ﻳﻚ ‪ endl‬ﻳﺎ ‪ \n‬اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪ .‬ﭼﺎپ ﻣﻮاردي ﻣﺎﻧﻨﺪ »‪ «Enter a number:‬ﻳﺎ ﭼﺎپ دو ‪ \n‬اﺷﺘﺒﺎه اﺳﺖ‪.‬‬
‫•‬
‫ﭘﺲ از ﭼﺎپ ﺧﺮوﺟﻲ ﻣﻮرد ﻧﻈﺮ ﺑﺮﻧﺎﻣﻪ ﺑﺎﻳﺪ ﺗﻤﺎم ﺷﻮد‪ .‬ﻫﺮ ﻳﻚ از ﻣﻮارد زﻳﺮ ﻣﻮﺟﺐ ﻏﻠﻂﺷﺪن ﺑﺮﻧﺎﻣﻪ ﺧﻮاﻫﺪ ﺷﺪ‪:‬‬
‫‪ o‬اﺳﺘﻔﺎده از ‪ getch‬و ‪ system pause‬و ﻳﺎ ‪ cin‬در اﻧﺘﻬﺎي ﺑﺮﻧﺎﻣﻪ )در ﺻﻮرت اﺳﺘﻔﺎده‪ ،‬ﻗﺒﻞ از ارﺳﺎل ﺑﺮﻧﺎﻣﻪ آﻧﻬﺎ‬
‫را ﭘﺎك ﻛﻨﻴﺪ و ﻳﺎ ﻛﺎﻣﻨﺖ ﻛﻨﻴﺪ‪(.‬‬
‫‪ o‬درﻳﺎﻓﺖ ورودي ﺑﻌﺪي ﺑﺮاي اﺟﺮاي ﻣﺠﺪد‬
‫•‬
‫ﻛﺪ ﺑﺎﻳﺪ ﻛﺎﻣﭙﺎﻳﻞ ﺷﻮد و ﺧﻄﺎي ﻧﺤﻮي )‪ (syntax‬ﻧﺪاﺷﺘﻪ ﺑﺎﺷﺪ‪.‬‬
‫•‬
‫از ﻛﺘﺎﺑﺨﺎﻧﻪﻫﺎي ﻏﻴﺮاﺳﺘﺎﻧﺪارد ﻣﺎﻧﻨﺪ ‪ conio.h‬اﺳﺘﻔﺎده ﻧﻜﻨﻴﺪ‪.‬‬
‫)‪(٢‬‬
‫ ‬
‫ﻣﺒﺎﻧﯽ ﺑﺮﻧﺎﻣﻪﺳﺎزی )‪(۴۰-۱۵۳) (C/C++‬‬
‫)‪Introduction to Programming (C/C++‬‬
‫ﻣﺪرس‪ :‬ﺷﺮوﻳﻦ داﻧﺶﭘﮋوه‬
‫داﻧﺸﮑﺪهی ﻣﻬﻨﺪﺳﯽ ﮐﺎﻣﭙﻴﻮﺗﺮ‬
‫ﻣﻮﻋﺪ ﻮﻳﻞ‪ :‬ﺳﺎﻋﺖ‪ ،۱۵:۳۰‬روز ﻳﮑﺸﻨﺒﻪ ‪۱۳۹۰/۹/۲۷‬‬
‫‪$%‬ﺮﻳﻦ ! ﺎره ‪٣‬‬
‫‪$%‬ﺮﯾﻦ اوّل ‪ -‬ا(ﺮاف ﻣﻌﯿﺎر )‪$4 ۱۵‬ﺮه(‪:‬‬
‫ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ اﺑﺘﺪا ﻋﺪد ﺻﺤﻴﺢ ‪ N‬را از ورودي درﻳﺎﻓﺖ ﻛﺮده )‪ (1 ≤ N ≤ 1000‬و ﺳﭙﺲ ﺑﺎ درﻳﺎﻓﺖ ‪ N‬ﻋﺪد ﺣﻘﻴﻘﻲ از ﻛﺎرﺑﺮ‪،‬‬
‫اﻧﺤﺮاف ﻣﻌﻴﺎر آﻧﻬﺎ را ﻣﺤﺎﺳﺒﻪ و ﺗﺎ ‪ 5‬رﻗﻢ اﻋﺸﺎر در ﺧﺮوﺟﻲ ﭼﺎپ ﻛﻨﺪ‪.‬‬
‫ﺗﺬﻛﺮ‪ :‬اﻧﺤﺮاف ﻣﻌﻴﺎر ‪ N‬ﻋﺪد ‪ (i = 1 .. N) xi‬از راﺑﻄﻪي زﻳﺮ ﺑﻪ دﺳﺖ ﻣﻲآﻳﺪ‪:‬‬
‫‪૚‬‬
‫‪࣌ ൌ ඩ ෍ሺ࢞࢏ െ ࣆሻ૛‬‬
‫ࡺ‬
‫ࡺ‬
‫‪࢏ୀ૚‬‬
‫ﻛﻪ در آن ‪ ،µ‬ﻣﻴﺎﻧﮕﻴﻦ ‪ N‬ﻋﺪد اﺳﺖ‪:‬‬
‫‪૚‬‬
‫࢏࢞ ‪ࣆ ൌ ෍‬‬
‫ࡺ‬
‫ࡺ‬
‫‪࢏ୀ૚‬‬
‫ﺑﺮاي ﻣﺤﺎﺳﺒﻪ ﺟﺬر ﻣﻲﺗﻮاﻧﻴﺪ از ﺗﻮاﺑﻊ ﻛﺘﺎﺑﺨﺎﻧﻪاي اﺳﺘﻔﺎده ﻧﻤﺎﻳﻴﺪ‪.‬‬
‫ﻣﺜﺎل ﺧﺮوﺟﻲ‬
‫ﻣﺜﺎل ورودي‬
‫‪1.81945‬‬
‫‪5‬‬
‫‪5.3 2 3 0 1‬‬
‫‪$%‬ﺮﯾﻦ دوم ‪ -‬ﻣﻌﮑﻮس دﻧﺒﺎﻟﻪ)‪$4 ۱۵‬ﺮه(‪:‬‬
‫ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺗﻌﺪاد اﻋﺪاد ﻳﻚ دﻧﺒﺎﻟﻪ )‪ (n‬و ﺗﻤﺎم اﻋﺪاد آن را از ورودي ﺧﻮاﻧﺪه‪ ،‬ﺑﻴﻦ ﻫﺮ دو ﻋﻨﺼﺮ دﻧﺒﺎﻟﻪ ﻣﻴﺎﻧﮕﻴﻦ آن دو ﻋﻨﺼﺮ‬
‫را ﺑﻪ دﻧﺒﺎﻟﻪ اﺿﺎﻓﻪ ﻛﻨﺪ‪ .‬ﺳﭙﺲ ﺗﺮﺗﻴﺐ اﻋﺪاد دﻧﺒﺎﻟﻪ را ﻣﻌﻜﻮس ﻛﺮده و در ﻧﻬﺎﻳﺖ ﺧﺮوﺟﻲ ﭼﺎپ ﻛﻨﺪ‪.‬‬
‫ﻫﻤﻪي اﻋﺪاد ورودي ﺻﺤﻴﺢ ﻫﺴﺘﻨﺪ و ‪1 ൑ ݊ ൑ 10000‬‬
‫ﻣﺜﺎل ﺧﺮوﺟﻲ‬
‫ﻣﺜﺎل ورودي‬
‫‪5‬‬
‫‪3 0 2 5 1‬‬
‫ﻣﺜﺎل ورودي‬
‫‪1 3 5 3.5 2 1 0 1.5 3‬‬
‫ﻣﺜﺎل ﺧﺮوﺟﻲ‬
‫‪4‬‬
‫‪2 2 2 2‬‬
‫)‪(٣‬‬
‫‪2 2 2 2 2 2 2‬‬
‫ ‬
‫ﻣﺒﺎﻧﯽ ﺑﺮﻧﺎﻣﻪﺳﺎزی )‪(۴۰-۱۵۳) (C/C++‬‬
‫)‪Introduction to Programming (C/C++‬‬
‫ﻣﺪرس‪ :‬ﺷﺮوﻳﻦ داﻧﺶﭘﮋوه‬
‫داﻧﺸﮑﺪهی ﻣﻬﻨﺪﺳﯽ ﮐﺎﻣﭙﻴﻮﺗﺮ‬
‫ﻣﻮﻋﺪ ﻮﻳﻞ‪ :‬ﺳﺎﻋﺖ‪ ،۱۵:۳۰‬روز ﻳﮑﺸﻨﺒﻪ ‪۱۳۹۰/۹/۲۷‬‬
‫‪$%‬ﺮﻳﻦ ! ﺎره ‪٣‬‬
‫‪$%‬ﺮﯾﻦ ﺳﻮم ‪ -‬ﺿﺮب ﻣﺎﺗﺮﯾﺲﻫﺎ )‪$4 ۱۵‬ﺮه(‪:‬‬
‫ﻣﺎﺗﺮﻳﺲ ‪ ݉ ൈ ݊ ،A‬و ﻣﺎﺗﺮﻳﺲ ‪ ݊ ൈ ݇ ،B‬اﺳﺖ( را از ورودي درﻳﺎﻓﺖ ﻛﻨﺪ‪ .‬ﺳﭙﺲ ﺣﺎﺻﻞﺿﺮب اﻳﻦ دو ﻣﺎﺗﺮﻳﺲ )ﻛﻪ ݇ ‪݉ ൈ‬‬
‫ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ اﺑﺘﺪا ‪ 3‬ﻋﺪد ﺻﺤﻴﺢ ‪ ،n ،m‬و ‪ p‬را از ورودي درﻳﺎﻓﺖ ﻛﺮده و ﺳﭙﺲ ﻣﻘﺎدﻳﺮ »ﺻﺤﻴﺢ« دو ﻣﺎﺗﺮﻳﺲ ‪ A‬و ‪) B‬ﻛﻪ‬
‫ﻣﻲﺷﻮد( را در ﺧﺮوﺟﻲ ﭼﺎپ ﻧﻤﺎﻳﺪ ﺑﻪ ﻃﻮري ﻛﻪ ﻫﺮ ﺳﻄﺮ ﻣﺎﺗﺮﻳﺲ در ﻳﻚ ﺧﻂ ﺟﺪاﮔﺎﻧﻪ ﭼﺎپ ﺷﻮد‪.‬‬
‫ﻣﺜﺎل ﺧﺮوﺟﻲ‬
‫ﻣﺜﺎل ورودي‬
‫‪4 2‬‬
‫‪6 2 3‬‬
‫‪3 4 1‬‬
‫‪3‬‬
‫‪6‬‬
‫‪3‬‬
‫‪2‬‬
‫‪23 51‬‬
‫‪8 32‬‬
‫‪2‬‬
‫‪1‬‬
‫‪0‬‬
‫‪2‬‬
‫‪1‬‬
‫‪0‬‬
‫‪5‬‬
‫‪$%‬ﺮﯾﻦ ﭼﻬﺎرم ‪ -‬ﻣﺎﺗﺮﯾﺲ ﭼﺮﺧﺎن )‪$4 ۱۵‬ﺮه(‪:‬‬
‫ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ اﺑﺘﺪا دو ﻋﺪد ݊ و ݉ را از ورودي ﺑﺨﻮاﻧﺪ‪ ،‬ﺳﭙﺲ ﻳﻚ ﻣﺎﺗﺮﻳﺲ ݉ ‪ ݊ ൈ‬ﺑﻪ ﻧﺎم ܣ را در اداﻣﻪ ورودي ﺑﮕﻴﺮد‪ .‬ﭘﺲ‬
‫از ﺧﻮاﻧﺪن ورودي‪ ،‬ﺑﺮﻧﺎﻣﻪ ﺷﻤﺎ ﺑﺎﻳﺪ ﻣﺎﺗﺮﻳﺲ ﺟﺪﻳﺪي ﺑﻪ ﻧﺎم ܤ ﻛﻪ اﻧﺪازهي݉ ‪ ݊ ൈ‬را از روي ﻣﺎﺗﺮﻳﺲ ܣ ﺑﺴﺎزد‪ .‬ﻫﺮ ﺳﻄﺮ ﻣﺎﺗﺮﻳﺲ ‪B‬‬
‫ﺷﺎﻣﻞ ﻫﻤﺎن اﻋﺪاد ﻣﺎﺗﺮﻳﺲ ‪ A‬ﺑﺎ اﻳﻦ ﺗﻔﺎوت ﻛﻪ ﺑﻪ اﻧﺪازهي ﺷﻤﺎرهي ﺳﻄﺮ ﺟﺎﺑﺠﺎ ﺷﺪه اﺳﺖ‪ .‬ﻳﻌﻨﻲ ﺳﻄﺮ ﺳﻮم ﻣﺎﺗﺮﻳﺲ‪ ،‬ﺳﻪ ﻋﺪد ﺟﺎﺑﺠﺎ‬
‫ﺳﻮم ﻗﺮار ﮔﺮﻓﺘﻪ‪ .‬در اﻧﺘﻬﺎ ﺑﺮﻧﺎﻣﻪ ﺷﻤﺎ ﺑﺎﻳﺪ ﻣﺎﺗﺮﻳﺲ ܤ را در ﺧﺮوﺟﻲ ﺑﻨﻮﻳﺴﺪ‪ .‬ﻓﺮض ﻛﻨﻴﺪ ﻣﺎﺗﺮﻳﺲ ورودي ﺣﺪاﻛﺜﺮ ‪ 100×100‬اﺳﺖ‪.‬‬
‫ﺷﺪه اﺳﺖ‪ .‬ﻳﻌﻨﻲ ﻋﺪد ﺳﺘﻮن اول اﻳﻦ ﺳﻄﺮ در ﻣﺎﺗﺮﻳﺲ ‪ B‬در ﺳﺘﻮن ﭼﻬﺎرم ﻗﺮار ﮔﺮﻓﺘﻪ و ﻋﺪد آﺧﺮ اﻳﻦ ﺳﻄﺮ در ﻣﺎﺗﺮﻳﺲ ‪ B‬در ﺳﺘﻮن‬
‫ﻣﺜﺎل ﺧﺮوﺟﻲ‬
‫ﻣﺜﺎل ورودي‬
‫‪4‬‬
‫‪6 2 0‬‬
‫‪3 4 5‬‬
‫‪2 1 0‬‬
‫‪3‬‬
‫‪1‬‬
‫‪0‬‬
‫‪9‬‬
‫‪0 1 6 2‬‬
‫‪4 5 0 3‬‬
‫‪2 1 0 9‬‬
‫‪$%‬ﺮﯾﻦ ﭘﻨﺠﻢ ‪ -‬ﻣﺜﻠﺚ ﺧﯿﺎم‪-‬ﭘﺎﺳﮑﺎل )‪$4 ۲۰‬ﺮه(‪:‬‬
‫ﺑﺮﻧﺎﻣﻪ اي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ اﺑﺘﺪا ﻋﺪد ‪ n‬را از ورودي ﺑﺨﻮاﻧﺪ )‪ (1 ≤ n ≤ 10‬و ﺳﭙﺲ ‪ n+1‬ﺳﻄﺮ از ﻣﺜﻠﺚ ﺧﻴﺎم‪-‬ﭘﺎﺳﻜﺎل را در ﺧﺮوﺟﻲ‬
‫ﭼﺎپ ﻛﻨﺪ‪.‬‬
‫راﻫﻨﻤﺎﻳﻲ‪ :‬ﺑﺮاي اﻳﻨﻜﺎر از ﻳﻚ آراﻳﻪ اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪ .‬ﺑﺎ ﻓﺮض ‪ ،n = 4‬ﻣﺮاﺣﻞ ﻛﺎر ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ‪:‬‬
‫)‪(٤‬‬
‫ ‬
‫ﻣﺒﺎﻧﯽ ﺑﺮﻧﺎﻣﻪﺳﺎزی )‪(۴۰-۱۵۳) (C/C++‬‬
‫)‪Introduction to Programming (C/C++‬‬
‫ﻣﺪرس‪ :‬ﺷﺮوﻳﻦ داﻧﺶﭘﮋوه‬
‫داﻧﺸﮑﺪهی ﻣﻬﻨﺪﺳﯽ ﮐﺎﻣﭙﻴﻮﺗﺮ‬
‫ﻣﻮﻋﺪ ﻮﻳﻞ‪ :‬ﺳﺎﻋﺖ‪ ،۱۵:۳۰‬روز ﻳﮑﺸﻨﺒﻪ ‪۱۳۹۰/۹/۲۷‬‬
‫‪$%‬ﺮﻳﻦ ! ﺎره ‪٣‬‬
‫وﺿﻌﻴﺖ اﺑﺘﺪاﻳﻲ آراﻳﻪ‪:‬‬
‫‪1‬‬
‫وﺿﻌﻴﺖ آراﻳﻪ ﭘﺲ از ﻣﺮﺣﻠﻪي اول‪:‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪2‬‬
‫‪1‬‬
‫‪1‬‬
‫‪3‬‬
‫‪3‬‬
‫‪1‬‬
‫‪4‬‬
‫‪6‬‬
‫‪4‬‬
‫‪1‬‬
‫وﺿﻌﻴﺖ آراﻳﻪ ﭘﺲ از ﻣﺮﺣﻠﻪي دوم‪:‬‬
‫وﺿﻌﻴﺖ آراﻳﻪ ﭘﺲ از ﻣﺮﺣﻠﻪي ﺳﻮم‪:‬‬
‫وﺿﻌﻴﺖ آراﻳﻪ ﭘﺲ از ﻣﺮﺣﻠﻪي ﭼﻬﺎرم‪:‬‬
‫‪1‬‬
‫ﻣﺜﺎل ﺧﺮوﺟﻲ‬
‫ﻣﺜﺎل ورودي‬
‫‪5‬‬
‫‪1‬‬
‫‪3 1‬‬
‫‪6 4 1‬‬
‫‪10 10 5 1‬‬
‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫‪4‬‬
‫‪5‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪1‬‬
‫‪$%‬ﺮﯾﻦ ﺷﺸﻢ ‪ -‬ﺣﺬف ﮔﺎوﺳﯽ )‪$4 ۲۰‬ﺮه(‪:‬‬
‫ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ اﺑﺘﺪا ﻋﺪد ‪ n‬را از ورودي ﺑﺨﻮاﻧﺪ و ﺳﭙﺲ ﺑﺎ درﻳﺎﻓﺖ ﺿﺮاﻳﺐ دﺳﺘﮕﺎه ‪ n‬ﻣﻌﺎدﻟﻪي ‪ n‬ﻣﺠﻬﻮﻟﻲ‪ ،‬آن دﺳﺘﮕﺎه را ﺑﻪ‬
‫روش »ﺣﺬف ﮔﺎوﺳﻲ«‪ 1‬ﺣﻞ ﻧﻤﺎﻳﺪ و ﭘﺎﺳﺦ دﺳﺘﮕﺎه را ﺑﺎ دﻗﺖ ﺳﻪ رﻗﻢ اﻋﺸﺎر در ﺧﺮوﺟﻲ ﭼﺎپ ﻧﻤﺎﻳﺪ‪.‬‬
‫ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل در ﺻﻮرﺗﻲ ﻛﻪ دﺳﺘﮕﺎه ﺑﻪ ﺻﻮرت زﻳﺮ ﺑﺎﺷﺪ‪:‬‬
‫آﻧﮕﺎه ﻣﺎﺗﺮﻳﺲ ﻣﻌﺎدل آن در روش ﺣﺬف ﮔﺎوﺳﻲ ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ‪:‬‬
‫ﻛﻪ ﭘﺲ از ﺣﻞ ﺑﻪ ﺷﻜﻞ ﻧﻬﺎﻳﻲ زﻳﺮ در ﻣﻲآﻳﺪ‪:‬‬
‫‪http://en.wikipedia.org/wiki/Gaussian_elimination‬‬
‫)‪(٥‬‬
‫‪1‬‬
‫ ‬
‫ﻣﺒﺎﻧﯽ ﺑﺮﻧﺎﻣﻪﺳﺎزی )‪(۴۰-۱۵۳) (C/C++‬‬
‫)‪Introduction to Programming (C/C++‬‬
‫ﻣﺪرس‪ :‬ﺷﺮوﻳﻦ داﻧﺶﭘﮋوه‬
‫داﻧﺸﮑﺪهی ﻣﻬﻨﺪﺳﯽ ﮐﺎﻣﭙﻴﻮﺗﺮ‬
‫ﻣﻮﻋﺪ ﻮﻳﻞ‪ :‬ﺳﺎﻋﺖ‪ ،۱۵:۳۰‬روز ﻳﮑﺸﻨﺒﻪ ‪۱۳۹۰/۹/۲۷‬‬
‫‪$%‬ﺮﻳﻦ ! ﺎره ‪٣‬‬
‫و در ﻧﻬﺎﻳﺖ ﻣﻘﺎدﻳﺮ ‪ ،y ،x‬و ‪ ، z‬ﻳﻌﻨﻲ ‪ ،3 ،2‬و ‪ -1‬از روي ﻣﺎﺗﺮﻳﺲ آﺧﺮ ﻣﺤﺎﺳﺒﻪ و ﭼﺎپ ﻣﻲﺷﻮد‪.‬‬
‫ﺗﺬﻛﺮ‪ :‬ﻓﺮض ﻛﻨﻴﺪ دﺳﺘﮕﺎه داراي ﻳﻚ ﭘﺎﺳﺦ ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮد اﺳﺖ و ﻫﻤﭽﻨﻴﻦ ﺿﺮاﻳﺐ ﻗﻄﺮ اﺻﻠﻲ ﺻﻔﺮ ﻧﻴﺴﺘﻨﺪ‪) .‬ﺑﻨﺎﺑﺮاﻳﻦ ﻧﻴﺎزي ﺑﻪ‬
‫ﺟﺎﺑﺠﺎﻳﻲ ﺳﻄﺮﻫﺎ ﻧﺪارﻳﺪ‪(.‬‬
‫ﻣﺜﺎل ﺧﺮوﺟﻲ‬
‫ﻣﺜﺎل ورودي‬
‫‪2.000 3.000 -1.000‬‬
‫‪3‬‬
‫‪2 1 -1 8‬‬
‫‪-3 -1 -2 -11‬‬
‫‪-2 1 2 -3‬‬
‫‪$%‬ﺮﯾﻦ ﻫﻔﺘﻢ ‪ -‬ﺿﺮب دو ﻋﺪد ﺻﺤﯿﺢ ﺧﯿﻠﯽ ﺑﺰرگ )‪$4 ۲۰‬ﺮه(‪:‬‬
‫ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ دو ﻋﺪد ﺻﺤﻴﺢ و ﻣﺜﺒﺖ ﺧﻴﻠﻲ ﺑﺰرگ )ﺣﺪاﻛﺜﺮ ‪ 100‬رﻗﻤﻲ( را از ورودي ﺑﺨﻮاﻧﺪ و ﺣﺎﺻﻞﺿﺮب دو ﻋﺪد را در‬
‫ﺧﺮوﺟﻲ ﭼﺎپ ﻛﻨﺪ! ﻫﺮ ﻋﺪد ورودي در ﻳﻚ ﺳﻄﺮ ﻧﻮﺷﺘﻪ ﺷﺪه و ﺑﻴﻦ ارﻗﺎم ﻓﺎﺻﻠﻪاي وﺟﻮد ﻧﺪارد‪ .‬ﻋﺪد ﺧﺮوﺟﻲ را ﻧﻴﺰ ﺑﺪون ﻓﺎﺻﻠﻪ ﺑﻴﻦ‬
‫ارﻗﺎم ﺑﻨﻮﻳﺴﻴﺪ‪.‬‬
‫راﻫﻨﻤﺎﻳﻲ‪ :‬ﻧﻮع ﻋﺪدي ‪ int‬ﺣﺪاﻛﺜﺮ اﻋﺪاد ‪ 10‬رﻗﻤﻲ را ﻧﮕﻪ ﻣﻲدارﻧﺪ‪ .‬ﺑﺮاي اﻳﻦ ﻣﺴﺌﻠﻪ ﺑﺎﻳﺪ ﺳﻌﻲ ﻛﻨﻴﺪ اﻋﺪاد ﺧﻴﻠﻲ ﺑﺰرگ را در آراﻳﻪ‬
‫ﻧﮕﻪ داﺷﺘﻪ و ﺿﺮب ﻛﻨﻴﺪ‪.‬‬
‫ﻣﺜﺎل ﺧﺮوﺟﻲ‬
‫ﻣﺜﺎل ورودي‬
‫‪1234567890‬‬
‫‪9876543210‬‬
‫ﻣﺜﺎل ورودي‬
‫‪12193263111263526900‬‬
‫ﻣﺜﺎل ﺧﺮوﺟﻲ‬
‫‪984812647821649‬‬
‫‪782548261481274‬‬
‫‪770663425437601585370105300826‬‬
‫»ﻣﻮﻓﻖ ﺑﺎﺷﻴﺪ!«‬
‫)‪(٦‬‬