تمرین چهارم مبانی کامپیوتر و برنامه‌نویسی (پاییز 1403)

Document Details

Uploaded by Deleted User

دانشکده مهندسی برق و کامپیوتر دانشگاه تهران

1403

Tags

برنامه‌نویسی C الگوریتم‌ها فلوچارت مبانی کامپیوتر

Summary

این اسناد شامل تمرینات مبانی کامپیوتر و برنامه‌نویسی به زبان C برای دانشجویان مهندسی برق و کامپیوتر دانشگاه تهران در نیمسال اول 1403 است. این تمرینات شامل طراحی الگوریتم‌ها و پیاده‌سازی آنها به زبان C است.

Full Transcript

‫ﺑﻪ ﻧﺎم ﺧﺪا‬ ‫د اﻧﺸ ﮑ ﺪ ه ﻣ ﻬ ﻨ ﺪ ﺳ ﯽ ﺑﺮ ق و ﮐ ﺎﻣ ﭙ ﯿ ﻮ ﺗ ﺮ‬ ‫د اﻧﺸ ﮑ ﺪ ﮔ ﺎ ن ﻓ ﻨ ﯽ د اﻧﺸ ﮕ ﺎه ﺗ ﻬ ﺮ ا ن‬ ‫ﻣ ﺒ ﺎ...

‫ﺑﻪ ﻧﺎم ﺧﺪا‬ ‫د اﻧﺸ ﮑ ﺪ ه ﻣ ﻬ ﻨ ﺪ ﺳ ﯽ ﺑﺮ ق و ﮐ ﺎﻣ ﭙ ﯿ ﻮ ﺗ ﺮ‬ ‫د اﻧﺸ ﮑ ﺪ ﮔ ﺎ ن ﻓ ﻨ ﯽ د اﻧﺸ ﮕ ﺎه ﺗ ﻬ ﺮ ا ن‬ ‫ﻣ ﺒ ﺎﻧﯽ ﮐ ﺎﻣ ﭙ ﯿ ﻮ ﺗ ﺮ و ﺑﺮ ﻧﺎﻣ ﻪ ﺳ ﺎ ز ي‬ ‫اﺳ ﺘ ﺎد ‪ :‬د ﮐ ﺘ ﺮ ﻫ ﺎ ﺷ ﻤ ﯽ و‬ ‫د ﮐ ﺘ ﺮ ﻣ ﺮ اد ي‬ ‫ﺗﻤ ﺮ ﯾﻦ ﭼ ﻬ ﺎرم‬ ‫ﻧﯿﻤﺴﺎل اول ‪04-03‬‬ ‫‪ 7 ).1‬ﻧ ﻤ ﺮ ه (‬ ‫ا ﻟ ﻒ ‪ 4 ) -‬ﻧﻤ ﺮ ه ( اﻟﮕ ﻮ ر ﯾﺘ ﻤ ﯽ ر ا ﺑﺎ اﺳ ﺘ ﻔ ﺎد ه از ﻓﻠﻮ ﭼ ﺎر ت ﻧﻤ ﺎ ﯾﺶ د ﻫ ﯿ ﺪ ﮐ ﻪ ﺗﻌ ﺪ اد ار ﻗ ﺎم ﯾﮏ ﻋ ﺪ د ﺻ ﺤ ﯿ ﺢ ﻏ ﯿ ﺮ ﻣ ﻨ ﻔ ﯽ‬ ‫ر ا ﺷ ﻤ ﺮ د ه و ر و ي ﺻ ﻔ ﺤ ﻪ ﭼ ﺎ پ ﻧﻤ ﺎ ﯾ ﺪ ‪.‬‬ ‫ب ‪ 3 ) -‬ﻧ ﻤ ﺮ ه ( ﺑ ﺎ ا ﺳ ﺘ ﻔ ﺎ د ه ا ز ا ﻟ ﮕ ﻮ ر ﯾ ﺘ ﻢ ﺑ ﻨ ﺪ ا ﻟ ﻒ ‪ ،‬ﺗ ﺎ ﺑ ﻊ ز ﯾ ﺮ ر ا ﺑ ﻪ ز ﺑ ﺎ ن ‪ C‬ﻃ ﻮ ر ي ﺑ ﻨ ﻮ ﯾ ﺴ ﯿ ﺪ ﮐ ﻪ ﺗ ﻌ ﺪ اد ا ر ﻗ ﺎ م ﻋ ﺪ د ﺻ ﺤ ﯿ ﺢ‬ ‫ﻏ ﯿ ﺮ ﻣ ﻨ ﻔ ﯽ ‪ n‬ر ا‪ ،‬ﮐ ﻪ ﺑﻪ ﻋ ﻨ ﻮ ان آ ر ﮔ ﻮ ﻣ ﺎ ن و ر و د ي د ر ﯾ ﺎ ﻓ ﺖ ﻣ ﯽ ﮐ ﻨ ﺪ ‪ ،‬ﺷ ﻤ ﺎر ش ﻧﻤ ﻮ د ه و ﻧﺘ ﯿ ﺠ ﻪ ر ا د ر ﻗ ﺎ ﻟﺐ ﻣ ﻘ ﺪ ار‬ ‫ﺑﺮﮔﺸﺘﯽ ﺑﺎزﮔﺮداﻧﺪ‪.‬‬ ‫{)‪int NumofDigits(int n‬‬ ‫}‬ ‫‪ 6 ).2‬ﻧ ﻤ ﺮ ه (‬ ‫ا ﻟ ﻒ ‪ 4 ) -‬ﻧﻤ ﺮ ه ( اﻟﮕ ﻮ ر ﯾﺘ ﻤ ﯽ ر ا ﺑﺎ اﺳ ﺘ ﻔ ﺎد ه از ﻓﻠﻮ ﭼ ﺎر ت ﻧﻤ ﺎ ﯾﺶ د ﻫ ﯿ ﺪ ﮐ ﻪ د و ﻋ ﺪ د ر ا از ﮐ ﺎرﺑﺮ د ر ﯾ ﺎ ﻓﺖ ﻧﻤ ﻮ د ه و ﻋ ﺪ د‬ ‫او ل ر ا ﺑﻪ ﺗ ﻮ ان ﻋ ﺪ د د و م ﺑﺮ ﺳ ﺎﻧ ﺪ ‪.‬د ر اﯾ ﻦ اﻟﮕ ﻮ ر ﯾﺘ ﻢ ﺑ ﺎ ﯾ ﺪ ﺗ ﻮ ان ر ا ﭘﯿ ﺎ د هﺳ ﺎ ز ي ﮐ ﻨ ﯿ ﻢ ‪.‬‬ ‫ب‪ 3)-‬ﻧﻤﺮه( ﺑﺮ ﻣﺒﻨﺎي اﻟﮕﻮرﯾﺘﻢ ﺑﻨﺪ اﻟﻒ‪ ،‬ﺗﺎﺑﻊ زﯾﺮ را ﺑﻪ زﺑﺎن ‪ C‬ﻃﻮري ﺑﻨﻮﯾﺴﯿﺪ ﮐﻪ دو آرﮔﻮﻣﺎن ورودي ‪base‬‬ ‫و ‪ exp‬را درﯾﺎﻓﺖ ﮐﺮده و آرﮔﻮﻣﺎن اول را ﺑﻪ ﺗﻮان آرﮔﻮﻣﺎن دوم ﺑﺮﺳﺎﻧﺪ و ﺣﺎﺻﻞ را در ﻗﺎﺑﻞ ﻣﻘﺪار ﺑﺎزﮔﺸﺘﯽ‬ ‫ﺑﺮﮔﺮداﻧﺪ‪.‬در ﻧﻮﺷﺘﻦ اﯾﻦ ﺗﺎﺑﻊ ﻧﻤﯽﺗﻮاﻧﯿﻢ از ﺗﺎﺑﻊ ﮐﺘﺎﺑﺨﺎﻧﻪاي )(‪ pow‬ﺑﺮاي ﺗﻮان اﺳﺘﻔﺎده ﮐﻨﯿﻢ و ﺑﺎﯾﺪ ﻣﺸﺎﺑﻪ ﺑﻨﺪ‬ ‫اﻟﻒ ﺗﻮ ان ر ا ﺑﺎ ﯾﮏ ﺣ ﻘ ﻪ ﭘﯿ ﺎد ه ﺳ ﺎ ز ي ﮐ ﻨ ﯿ ﻢ ‪.‬‬ ‫{)‪int PowerCalculator(int base,int exp‬‬ ‫}‬ ‫‪ 13).3‬ﻧﻤﺮه(‬ ‫اﻟﻒ‪ 3) -‬ﻧﻤﺮه( در ﺳﻮال ‪ 6‬ﺗﻤﺮﯾﻦ دوم ﺑﺎ اﻟﮕﻮرﯾﺘﻢ اﻋﺪاد ‪ Armstrong‬آﺷﻨﺎ ﺷﺪﯾﺪ‪.‬اﯾﻦ اﻟﮕﻮرﯾﺘﻢ را ﺑﺎ اﺳﺘﻔﺎده‬ ‫از د و ﺗ ﺎﺑﻊ ﺳ ﻮ ال ﻫ ﺎ ي ‪ 1‬و ‪ 2‬اﯾﻦ ﺗ ﻤ ﺮ ﯾﻦ د ر ﻗ ﺎ ﻟ ﺐ ﯾ ﮏ ﻓ ﻠ ﻮ ﭼ ﺎ ر ت ﺑ ﺎ ز ﻧ ﻮ ﯾ ﺴ ﯽ ﮐ ﻨ ﯿ ﺪ ‪.‬‬ ‫ب‪ 10)-‬ﻧﻤﺮه( ﺑﺎ اﺳﺘﻔﺎده از ﺗﻮاﺑﻊ ﺳﻮال ‪ 1‬و ‪ 2‬ﺗﺎﺑﻊ زﯾﺮ را در زﺑﺎن ‪ C‬ﻃﻮري ﮐﺎﻣﻞ ﮐﻨﯿﺪ ﮐﻪ ﻣﺸﺨﺺ ﮐﻨﺪ ﻋﺪد‬ ‫‪ n‬ﮐﻪ ﺑﻪ ﻋﻨﻮان آرﮔﻮﻣﺎن درﯾﺎﻓﺖ ﻣﯽﮐﻨﺪ ‪ Armstrong‬اﺳﺖ ﯾﺎ ﺧﯿﺮ‪.‬در ﺻﻮرﺗﯽ ﮐﻪ ﻋﺪد ‪Armstrong‬‬ ‫ا ﺳ ﺖ ﻣ ﻘ ﺪ ا ر ﯾ ﮏ و د ر ﻏ ﯿ ﺮ ا ﯾ ﻦ ﺻ ﻮ ر ت ﻣ ﻘ ﺪ ا ر ﺻ ﻔ ﺮ ر ا ﺑ ﺮ ﮔ ﺮ د اﻧ ﺪ ‪.‬‬ ‫{)‪int isArmstrong(int n‬‬ ‫}‬ ‫‪|Page1‬‬ ‫(ﺎﯾ ‪1403 +- ,‬‬ ‫‪ 2).4‬ﻧﻤﺮه( دو ﻣﻮرد از اﺷﮑﺎﻻت اﺳﺘﻔﺎده از ‪ void function‬را ﺗﻮﺿﯿﺢ دﻫﯿﺪ‪.‬‬ ‫‪.5‬ﺳﻮال اﻣﺘﯿﺎزي ** )‪ 15‬ﻧﻤﺮه(‬ ‫ﻗﺼﺪ دارﯾﻢ ﺑﺎ رد ﺷﺪن از ﭼﻨﺪ ﻣﺎﻧﻊ از ﻧﻘﻄﻪ ‪ a‬ﺑﻪ ‪ b‬ﺑﺮوﯾﻢ‪.‬اﯾﻨﮑﻪ ﺑﺎ ﭼﻨﺪ ﻣﺎﻧﻊ روﺑﺮو ﻫﺴﺘﯿﻢ را ﮐﺎرﺑﺮ‬ ‫ﻣﺸﺨﺺ ﻣﯽﮐﻨﺪ‪.‬اﮔﺮ ﻓﺮض ﮐﻨﯿﻢ ﺗﻨﻬﺎ ﻣﯽﺗﻮاﻧﯿﻢ ﺑﺎ ﻫﺮ ﭘﺮش ‪ 1‬ﯾﺎ ﺣﺪاﮐﺜﺮ دو ﻣﺎﻧﻊ را ﭘﺸﺖ ﺳﺮ ﺑﮕﺬارﯾﻢ‪،‬‬ ‫ﻣﯽﺧﻮاﻫﯿﻢ ﺑﺒﯿﻨﯿﻢ ﺑﻪ ﭼﻨﺪ ﻃﺮﯾﻖ ﻣﯿﺘﻮاﻧﯿﻢ از ‪ a‬ﺑﻪ ‪ b‬ﺑﺮﺳﯿﻢ‪.‬‬ ‫اﮔﺮ ﮐﺎرﺑﺮ ﻋﺪد ﺻﻔﺮ را اﻧﺘﺨﺎب ﻧﻤﻮد ﯾﮏ راه ﺑﺮاي رﺳﯿﺪن ﺑﻪ ﻣﻘﺼﺪ دارﯾﻢ‪.‬‬ ‫ﻣ ﺜ ﺎ ل ‪ :‬ﺗ ﻌ ﺪ اد ﻣ ﻮ اﻧ ﻊ = ‪3‬‬ ‫ﺣ ﺎ ﻟﺖ او ل ‪ :‬ﺑ ﺎ ﺳ ﻪ ﭘ ﺮ ش ﮐ ﻪ د ر ﻫ ﺮ ﭘ ﺮ ش ا ز ﯾ ﮏ ﻣ ﺎ ﻧ ﻊ ﻋ ﺒ ﻮ ر ﻣ ﯽ ﮐ ﻨ ﯿ ﻢ ﺑ ﻪ ﻣ ﻘ ﺼ ﺪ ﺑ ﺮ ﺳ ﯿ ﻢ ‪.‬‬ ‫ﺣ ﺎ ﻟﺖ د و م ‪ :‬ﭘ ﺮ ش او ل ا ز ﯾ ﮏ ﻣ ﺎ ﻧ ﻊ و ﭘ ﺮ ش د و م ا ز د و ﻣ ﺎ ﻧ ﻊ ﻋ ﺒ ﻮ ر ﮐ ﻨ ﯿ ﻢ ‪.‬‬ ‫ﺣ ﺎ ﻟﺖ ﺳ ﻮ م ‪ :‬ﭘ ﺮ ش او ل ا ز د و ﻣ ﺎ ﻧ ﻊ و ﭘ ﺮ ش د و م ا ز د و ﻣ ﺎ ﻧ ﻊ ﻋ ﺒ ﻮ ر ﮐ ﻨ ﯿ ﻢ ‪.‬‬ ‫ﭘﺲ ﺑﻪ ازاي ‪ n=3‬ﺑﻪ ﺳﻪ ﻃﺮﯾﻖ ﻣﯿﺘﻮان ﺑﻪ ﻣﻘﺼﺪ رﺳﯿﺪ‪.‬‬ ‫ا ﻟ ﻒ ( ) ‪ 9‬ﻧﻤ ﺮ ه ( ﻓ ﻠ ﻮ ﭼ ﺎ ر ت اﯾﻦ ﻣ ﺴ ﺎ ﻟﻪ ر ا ﭘﯿ ﺎد ه ﮐ ﻨ ﯿ ﺪ ‪.‬‬ ‫ب ( ) ‪ 6‬ﻧﻤ ﺮ ه ( اﻟﮕ ﻮ ر ﯾﺘ ﻢ ﻗ ﺴ ﻤ ﺖ اﻟﻒ ر ا د ر زﺑﺎن ‪ c‬ﭘﯿ ﺎد ه ﺳ ﺎز ي ﮐ ﻨ ﯿ ﺪ ‪.‬‬ ‫{ )‪int NumberofWays(int‬‬ ‫}‬ ‫‪|Page2‬‬ ‫(ﺎﯾ ‪1403 +- ,‬‬ ‫" د ر ﺗ ﺤ ﻮ ﯾ ﻞ ﺗ ﻤ ﺮ ﯾ ﻦ ‪ ،‬ﺣ ﺘ ﻤ ﺎ ﺑ ﻪ ﻧﮑ ﺎ ت ز ﯾ ﺮ ﺗ ﻮ ﺟ ﻪ ﻧ ﻤ ﺎ ﯾ ﯿ ﺪ ‪:‬‬ ‫‪$‬‬ ‫‪#‬‬ ‫‪ v‬ﻫ ﯿ ﭻ ﮔ ﻮ ﻧ ﻪ ﺷ ﺒ ﺎ ﻫ ﺘ ﯽ د ر اﻧ ﺠ ﺎ م ﺗ ﻤ ﺮ ﯾ ﻦ ﺑﯿ ﻦ ا ﻓ ﺮ ا د ﻣ ﺨ ﺘ ﻠ ﻒ ﭘ ﺬ ﯾ ﺮ ﻓ ﺘ ﻪ ﻧ ﻤ ﯽ ﺷ ﻮ د ‪.‬د ر ﺻ ﻮ ر ت ﮐ ﺸ ﻒ ﻫ ﺮ ﮔ ﻮ ﻧ ﻪ ﺗ ﻘ ﻠ ﺐ‬ ‫ﻣ ﻄ ﺎﺑﻖ ﻗ ﻮ اﻧﯿ ﻦ د ر س ﺑ ﺎ اﻓ ﺮ اد ﺧ ﺎ ﻃ ﯽ ﺑﺮ ﺧ ﻮ ر د ﺧ ﻮ اﻫ ﺪ ﺷ ﺪ ‪.‬‬ ‫‪ o‬ﭘﯿﺸﻨﻬﺎد ﻣﯽ ﺷﻮد از اﻣﮑﺎن رﻓﻊ اﺷﮑﺎل ﺧﺼﻮﺻﯽ‪ ،‬ﺣﺪاﮐﺜﺮ اﺳﺘﻔﺎده را ﻧﻤﺎﯾﯿﺪ!‬ ‫‪ v‬ﭘﺎﺳﺦ ﻫﺮ ﭘﺮﺳﺸﯽ ﮐﻪ اﻣﮑﺎن آﭘﻠﻮد ﺑﺮاي آﻧﻬﺎ ﻓﺮاﻫﻢ ﺷﺪه اﺳﺖ را ﺑﻪ ﺻﻮرت ﯾﮏ ﻓﺎﯾﻞ ‪.pdf‬و ﺑﺎ ﻧﺎم ‪ StdID‬آﭘﻠﻮد ﻧﻤﺎﯾﯿﺪ‪).‬ﮐﻪ ‪ StdID‬ﺷﻤﺎره داﻧﺸﺠﻮﯾﯽ ﺷﻤﺎﺳﺖ‪.‬ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل اﮔﺮ ﺷﻤﺎره داﻧﺸﺠﻮﯾﯽ ﮐﺴﯽ‬ ‫‪ 810101517‬ﺑﺎﺷﺪ‪ ،‬ﻓﺎﯾﻞ ﺑﺎرﮔﺬاري ﺷﺪه او ﺑﺎﯾﺪ ﺑﻪ ﻧﺎم ‪ HW4_810101517‬ﺑﺎﺷﺪ(‬ ‫‪ v‬ﻣﻬﻠﺖ ﺗﺤﻮﯾﻞ ﺗﻤﺮﯾﻦ ﺗﺎ ‪ 1403/9/6‬ﻣﯽ ﺑﺎﺷﺪ‪.‬‬ ‫‪ o‬ﺗﻤﺮﯾﻦ ﺗﻨﻬﺎ در ﺳﺎﻣﺎﻧﻪ ‪ Elearn‬درﯾﺎﻓﺖ ﺧﻮاﻫﺪ ﺷﺪ و از اﯾﻤﯿﻞ آن ﺧﻮدداري ﻧﻤﺎﯾﯿﺪ‪.‬‬ ‫‪ o‬ﻣ ﻬ ﻠ ﺖ ﺗ ﺤ ﻮ ﯾ ﻞ ﺗ ﻤ ﺮ ﯾ ﻦ ‪ ،‬ﺗ ﻤ ﺪ ﯾ ﺪ ﻧ ﺨ ﻮ اﻫ ﺪ ﺷ ﺪ ؛ د ر ﻣ ﻨ ﻈ ﻢ ﺑ ﻮ د ن ﺗ ﺤ ﻮ ﯾ ﻞ ‪ ،‬ﮐ ﻮ ﺷ ﺎ ﺑ ﺎ ﺷ ﯿ ﺪ ‪.‬‬ ‫‪ v‬ﭘﺲ از ﻣﻄﺎﻟﻌﻪ ﮐﺎﻣﻞ ﺗﻤﺮﯾﻦ‪ ،‬در ﺻﻮرت ﻫﺮﮔﻮﻧﻪ اﺑﻬﺎم از ﻃﺮﯾﻖ اﯾﻤﯿﻞ ‪ [email protected]‬ﺑﺎ ﻣﺎ در‬ ‫ار ﺗﺒ ﺎط ﺑ ﺎ ﺷ ﯿ ﺪ ‪.‬‬ ‫‪ o‬ﻣ ﻮ ﺿ ﻮ ع ا ﯾ ﻤ ﯿ ﻞ ر ا ﺑ ﻪ ﺻ ﻮ ر ت ﺗ ﻤ ﺮ ﯾ ﻦ ﺷ ﻤ ﺎ ر ه ‪ - 4‬ﺳ ﻮ ا ل د ر ﺑ ﺎ ر ه ﺗ ﻤ ﺮ ﯾ ﻦ ﺑﻨ ﻮ ﯾ ﺴ ﯿ ﺪ ‪.‬‬ ‫‪|Page3‬‬ ‫(ﺎﯾ ‪1403 +- ,‬‬

Use Quizgecko on...
Browser
Browser