Assignment4.pdf

Introduction to Programming
Assignment 4
Due: 11:59 pm, Sunday, December 5, 2010 (14/9/1389).
By: Sahar Harati
BoshraTaheri
1
Fall 2010
Sharif University of Technology
‫ﺗﻮﺿﻴﺤﺎت‬
‫ﻗﺒﻞ از ﺷﺮوع‪ ،‬ﻣﻮارد زﻳﺮ را ﺑﻪ دﻗﺖ ﺑﺨﻮاﻧﻴﺪ‪:‬‬
‫ در ﻫﺮ ﻳﻚ از ﺑﺮﻧﺎﻣﻪﻫﺎ ﺷﻤﺎرهي داﻧﺸﺠﻮﻳﻲ ﺧﻮد را ﺑﻪ ﺻﻮرت زﻳﺮ ﺑﻨﻮﻳﺴﻴﺪ‪:‬‬
‫‪//ID: your student ID‬‬
‫ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل‪:‬‬
‫‪//ID:89654321‬‬
‫ ﺑﻌﺪ از ﻧﻮﺷﺘﻦ ﻫﻤﻪي ﺑﺮﻧﺎﻣﻪﻫﺎ‪ ،‬ﻓﺎﻳﻞ ‪ .cpp‬ﻫﻤﻪي آنﻫﺎ را در ﻳﻚ ﭘﻮﺷﻪ ﺑﺎ‬
‫ﻧﺎم ‪ assignment#4_stdID‬ﻗﺮار دﻫﻴﺪ )ﻛﻪ در آن ‪ stdID‬ﺷﻤﺎرهي‬
‫داﻧﺸﺠﻮﻳﻲ ﺷﻤﺎﺳﺖ(؛ ﻣﺜﻼ ‪ .assignment#4_89654321‬ﺳﭙﺲ اﻳﻦ‬
‫ﭘﻮﺷﻪ را ﻓﺸﺮده ﻛﻨﻴﺪ‪ .‬ﻓﺎﻳﻞ ﻓﺸﺮده ﺷﺪه را ﺑﻪ آدرس‬
‫‪ [email protected]‬ارﺳﺎل‬
‫ﻧﻤﺎﻳﻴﺪ‪.‬‬
‫‪Sharif University of Technology‬‬
‫‪Fall 2010‬‬
‫‪2‬‬
‫ﺗﻮﺿﻴﺤﺎت )اداﻣﻪ(‬
‫‬
‫‬
‫‬
‫‬
‫‬
‫ﻋﻨﻮان اﻳﻤﻴﻞ ﺑﺎﻳﺪ ﺑﻪ ﺻﻮرت ‪ assignment#4_stdID‬ﺑﺎﺷﺪ‪ ،‬ﻛﻪ در آن ‪ stdID‬ﺷﻤﺎرهي‬
‫داﻧﺸﺠﻮﻳﻲ ﺷﻤﺎﺳﺖ‪.‬‬
‫ﻧﺤﻮهي ورودي ﮔﺮﻓﺘﻦ و ﺧﺮوﺟﻲ دادن ﺑﺮﻧﺎﻣﻪي ﺷﻤﺎ ﺑﺎﻳﺪ دﻗﻴﻘﺎ ﺑﻪ ﺻﻮرت ﮔﻔﺘﻪ ﺷﺪه در‬
‫ﻣﺴﺄﻟﻪ ﺑﺎﺷﺪ‪) .‬ﻣﺜﻼ ﺑﻪ ﻓﺎﺻﻠﻪﻫﺎ و ﺑﺰرگ و ﻛﻮﭼﻚ ﺑﻮدن ﺣﺮوف دﻗﺖ ﻛﻨﻴﺪ‪(.‬‬
‫ﺑﻪ ﻫﺮ ﻳﻚ از ﺑﺮﻧﺎﻣﻪﻫﺎي ﺷﻤﺎ ﺗﻌﺪادي دادهي ﻧﻤﻮﻧﻪ ﺟﻬﺖ آزﻣﺎﻳﺶ ﺑﺮﻧﺎﻣﻪ‪ ،‬داده ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬
‫ﺑﻨﺎﺑﺮاﻳﻦ ﺗﻮﺻﻴﻪ ﻣﻲﺷﻮد ﻛﻪ ﺣﺘﻤﺎ ﻳﻚ ﺑﺎر ﺗﺴﺖﻫﺎي ﻧﻤﻮﻧﻪ را ﺑﻪ ﺑﺮﻧﺎﻣﻪﻫﺎﻳﺘﺎن ﺑﺪﻫﻴﺪ‪.‬‬
‫ﺗﺬﻛﺮ ‪ :1‬ﺑﻪ ﺑﺮﻧﺎﻣﻪﻫﺎي ﻣﺸﺎﺑﻪ ﻧﻤﺮهي ﻣﻨﻔﻲ ﺗﻌﻠﻖ ﺧﻮاﻫﺪ ﮔﺮﻓﺖ‪ .‬ﺑﻨﺎﺑﺮاﻳﻦ اﻛﻴﺪا ﺗﻮﺻﻴﻪ‬
‫ﻣﻲﺷﻮد ﻛﻪ ﻫﺮ داﻧﺸﺠﻮ ﺑﺮﻧﺎﻣﻪي ﺧﻮد را ﺑﻪ ﺗﻨﻬﺎﻳﻲ ﻧﻮﺷﺘﻪ و ﺣﺘﻲاﻻﻣﻜﺎن داراي اﻟﮕﻮرﻳﺘﻢ‪،‬‬
‫ﻛﺪ و ﻧﺤﻮهي ﭘﻴﺎدهﺳﺎزي ﻣﺘﻔﺎوﺗﻲ ﺑﺎﺷﺪ‪.‬‬
‫ﺗﺬﻛﺮ ‪ :2‬ﻫﻤﺎﻧﮕﻮﻧﻪ ﻛﻪ در ﺻﻔﺤﻪي اول ذﻛﺮ ﺷﺪه اﺳﺖ‪ ،‬ﻣﻬﻠﺖ ارﺳﺎل ﺑﺮﻧﺎﻣﻪ ﻫﺎﺑﻪ اﻳﻤﻴﻞ‬
‫ﻣﺸﺨﺺﺷﺪه‪ ،‬ﺳﺎﻋﺖ ‪ 23:59‬ﻳﻜﺸﻨﺒﻪ )‪ (89/9/14‬ﻣﻲﺑﺎﺷﺪ‪ .‬ﺑﻪ ﺗﻤﺮﻳﻦﻫﺎﻳﻲ ﻛﻪ ﭘﺲ از اﻳﻦ‬
‫ﺳﺎﻋﺖ ﺑﻪ آدرس ﻣﺸﺨﺺﺷﺪه ارﺳﺎل ﮔﺮدﻧﺪ‪ ،‬ﻧﻤﺮهي ﺻﻔﺮ ﺗﻌﻠﻖ ﺧﻮاﻫﺪ ﮔﺮﻓﺖ‪.‬‬
‫ﻣﻮﻓﻖ ﺑﺎﺷﻴﺪ‪.‬‬
‫‪Sharif University of Technology‬‬
‫‪Fall 2010‬‬
‫‪3‬‬
‫ﻣﺴﺄﻟﻪي اول )ﻧﺎم ﻓﺎﻳﻞ ﺑﺮﻧﺎﻣﻪ‪(Variance.cpp :‬‬
‫ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ‪ 15‬ﻋﺪد ﺻﺤﻴﺢ از ورودي ﺑﺨﻮاﻧﺪ و وارﻳﺎﻧﺲ آﻧﻬﺎ را‬
‫درﺧﺮوﺟﻲ ﭼﺎپ ﻛﻨﺪ‪.‬‬
‫ﺑﺮاي ﻣﺤﺎﺳﺒﻪي وارﻳﺎﻧﺲ ﻣﻲﺗﻮاﻧﻴﺪ از ﻓﺮﻣﻮل زﻳﺮ اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪:‬‬
‫ﻛﻪ در آن‪ ،‬ﻣﻴﺎﻧﮕﻴﻦ و ‪ n‬ﺗﻌﺪاد اﻋﺪاد )در اﻳﻨﺠﺎ ‪ (15‬اﺳﺖ‪.‬‬
‫ﺑﺮﻧﺎﻣﻪي ﺷﻤﺎ ﺑﺎﻳﺪ ﺷﺎﻣﻞ ﺗﺎﺑﻊ زﻳﺮ ﺑﺎﺷﺪ‪:‬‬
‫;)][‪double Var(int x‬‬
‫‪Sharif University of Technology‬‬
‫‪Fall 2010‬‬
‫‪4‬‬
‫ﻣﺴﺄﻟﻪي دوم )ﻧﺎم ﻓﺎﻳﻞ ﺑﺮﻧﺎﻣﻪ‪(JollyJumper.cpp :‬‬
‫ﻳﻚ ﺗﺮﺗﻴﺐ از ‪ n‬ﻋﺪد ‪ Jolly Jumper‬ﻧﺎﻣﻴﺪه ﻣﻲﺷﻮد اﮔﺮ ﻗﺪرﻣﻄﻠﻖﻫﺎي ﺗﻔﺎﺿﻞ‬
‫دو ﻋﺪد ﻣﺘﻮاﻟﻲ آن‪ ،‬ﻫﻤﻪي اﻋﺪاد ‪ 1‬ﺗﺎ )‪ (n-1‬را ﺗﻮﻟﻴﺪ ﻛﻨﺪ‪ .‬ﻣﺜﻼً ‪1،4،2،3‬‬
‫‪ Jolly Jumper‬اﺳﺖ؛ زﻳﺮا ﻗﺪرﻣﻄﻠﻖ ﺗﻔﺎﺿﻞ ﻫﺮ دو ﻋﺪد ﻣﺘﻮاﻟﻲ آن ﺑﻪ ﺗﺮﺗﻴﺐ‬
‫‪ 3،2،1‬اﺳﺖ‪.‬‬
‫ﻃﺒﻖ ﺗﻌﺮﻳﻒ‪ ،‬ﻳﻚ ﻋﺪد ﺑﻪ ﺗﻨﻬﺎﻳﻲ ‪ Jolly Jumper‬اﺳﺖ‪.‬‬
‫ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻳﻚ ‪ n>3000‬و ﺑﻪ دﻧﺒﺎل آن ‪ n‬ﻋﺪد از ورودي ﺑﺨﻮاﻧﺪ و‬
‫ﻣﺸﺨﺺ ﻛﻨﺪ ‪ Jolly Jumper‬اﺳﺖ ﻳﺎ ﺧﻴﺮ‪.‬‬
‫ورودي‬
‫ﺧﺮوﺟﻲ‬
‫‪Jolly‬‬
‫‪Jolly‬‬
‫‪Not Jolly‬‬
‫‪Sharif University of Technology‬‬
‫‪41423‬‬
‫‪16‬‬
‫‪5 1 4 2 -16‬‬
‫‪Fall 2010‬‬
‫‪5‬‬
‫ﻣﺴﺄﻟﻪي ﺳﻮم )ﻧﺎم ﻓﺎﻳﻞ ﺑﺮﻧﺎﻣﻪ‪(Matrix.cpp :‬‬
‫ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ دراﻳﻪﻫﺎي دو ﻣﺎﺗﺮﻳﺲ را از ورودي ﺑﺨﻮاﻧﺪ و ﻣﺎﺗﺮﻳﺲ‬
‫ﺣﺎﺻﻞﺿﺮب ﻣﺎﺗﺮﻳﺲ اول در ﻣﺎﺗﺮﻳﺲ دوم را در ﺧﺮوﺟﻲ ﭼﺎپ ﻛﻨﺪ‪.‬‬
‫ورودي‪ :‬در ﺧﻂ اول اﺑﻌﺎد ﻣﺎﺗﺮﻳﺲ اول )‪ (m×n‬و در ‪ m‬ﺧﻂ ﺑﻌﺪي دراﻳﻪﻫﺎي‬
‫ﻣﺎﺗﺮﻳﺲ اول‪ ،‬در ﺧﻂ )‪(m+2‬ام اﺑﻌﺎد ﻣﺎﺗﺮﻳﺲ دوم )‪ (t×l‬و در ‪ t‬ﺧﻂ ﺑﻌﺪي‬
‫دراﻳﻪﻫﺎي ﻣﺎﺗﺮﻳﺲ دوم را از ورودي ﺑﺨﻮاﻧﻴﺪ‪.‬‬
‫ﺧﺮوﺟﻲ‪ :‬دراﻳﻪﻫﺎي ﻣﺎﺗﺮﻳﺲ ﺣﺎﺻﻞﺿﺮب را ﭼﺎپ ﻛﻨﻴﺪ‪ .‬اﮔﺮ ﺿﺮب دو ﻣﺎﺗﺮﻳﺲ‬
‫اﻣﻜﺎنﭘﺬﻳﺮ ﻧﺒﻮد‪ ،‬ﻋﻼﻣﺖ ؟ را ﭼﺎپ ﻛﻨﻴﺪ‪.‬‬
‫‪Sharif University of Technology‬‬
‫‪Fall 2010‬‬
‫‪6‬‬
‫ﻣﺴﺄﻟﻪي ﭼﻬﺎرم )ﻧﺎم ﻓﺎﻳﻞ ﺑﺮﻧﺎﻣﻪ‪(Polynomial.cpp :‬‬
‫ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ آراﻳﻪي ﺿﺮاﻳﺐ ﻳﻚ ﭼﻨﺪﺟﻤﻠﻪاي را از ورودي ﺑﺨﻮاﻧﺪ و‬
‫آراﻳﻪي ﺿﺮاﻳﺐ ﻣﺸﺘﻖ و اﻧﺘﮕﺮال آن ﭼﻨﺪﺟﻤﻠﻪاي را در ﺧﺮوﺟﻲ ﭼﺎپ ﻛﻨﺪ‪.‬‬
‫ورودي‪ :‬در ﺧﻂ اول درﺟﻪي ﭼﻨﺪﺟﻤﻠﻪاي و در ﺧﻂ ﺑﻌﺪ ﺿﺮاﻳﺐ را ﺑﺨﻮاﻧﻴﺪ‪.‬‬
‫ﺧﺮوﺟﻲ‪ :‬در ﺧﻂ اول ﺿﺮاﻳﺐ ﻣﺸﺘﻖ و در ﺧﻂ ﺑﻌﺪي ﺿﺮاﻳﺐ اﻧﺘﮕﺮال را ﭼﺎپ‬
‫ﻛﻨﻴﺪ‪.‬‬
‫ﺧﺮوﺟﻲ‬
‫‪20 3 6 0‬‬
‫‪1 0.25 1 0 1 0‬‬
‫ورودي‬
‫‪4‬‬
‫‪51301‬‬
‫)ﻓﺮض ﻛﻨﻴﺪ ﺿﺮﻳﺐ ﺛﺎﺑﺘﻲ ﻛﻪ در اﺛﺮ اﻧﺘﮕﺮالﮔﻴﺮي ﺑﻪ دﺳﺖ ﻣﻲآﻳﺪ ﻫﻤﻴﺸﻪ ﺻﻔﺮ اﺳﺖ‪(.‬‬
‫‪Sharif University of Technology‬‬
‫‪Fall 2010‬‬
‫‪7‬‬
(‫ﻣﺴﺄﻟﻪي ﭼﻬﺎرم )اداﻣﻪ‬
:‫ﺑﺮﻧﺎﻣﻪي ﺷﻤﺎ ﺑﺎﻳﺪ ﺷﺎﻣﻞ ﺗﻮاﺑﻊ زﻳﺮ ﺑﺎﺷﺪ‬
double[] differentiate(double c[]);
double[] integral(double c[]);
8
Fall 2010
Sharif University of Technology
‫ﻣﺴﺄﻟﻪي ﭘﻨﺠﻢ )ﻧﺎم ﻓﺎﻳﻞ ﺑﺮﻧﺎﻣﻪ‪(Determinant.cpp :‬‬
‫)ﻧﻤﺮهي اﺿﺎﻓﻲ(‬
‫ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ دراﻳﻪﻫﺎي ﻳﻚ ﻣﺎﺗﺮﻳﺲ ‪ 2‬ﺑﻌﺪي ‪ n*n‬را از ورودي‬
‫درﻳﺎﻓﺖ ﻛﻨﺪ و دﺗﺮﻣﻴﻨﺎن آنرا ﻣﺤﺎﺳﺒﻪ ﻛﺮده و در ﺧﺮوﺟﻲ ﭼﺎپ ﻛﻨﺪ‪.‬‬
‫دﺗﺮﻣﻴﻨﺎن را ﺑﻪ ﺻﻮرت ﺗﺎﺑﻊ ﺑﺎزﮔﺸﺘﻲ ﭘﻴﺎدهﺳﺎزي ﻛﻨﻴﺪ‪.‬‬
‫ﻣﻲداﻧﻴﻢ ﻛﻪ‪:‬‬
‫ﻛﻪ در آن‪ M ،‬ﻣﺎﺗﺮﻳﺲ ﻛﻬﺎد ‪ A‬ﺑﻪ ازاء ﺳﻄﺮ ‪ i‬و ﺳﺘﻮن ‪ j‬اﺳﺖ‪.‬‬
‫ﺑﻪ ﻋﻨﻮان ورودي در ﺧﻂ اول ﻋﺪد ‪ n‬و در ﻫﺮ ﻳﻚ از ‪ n‬ﺳﻄﺮ ﺑﻌﺪ‪ n ،‬ﻋﺪد‬
‫اﻋﺸﺎري ﺑﺨﻮاﻧﻴﺪ و در ﺧﺮوﺟﻲ دﺗﺮﻣﻴﻨﺎن را ﭼﺎپ ﻛﻨﻴﺪ‪.‬‬
‫‪Sharif University of Technology‬‬
‫‪Fall 2010‬‬
‫‪9‬‬
(‫ﻣﺴﺄﻟﻪي ﭘﻨﺠﻢ )اداﻣﻪ‬
‫ورودي‬
3
0.0 1.0 2.0
3.0 2.0 3.0
2.0 3.0 4.0
10
Fall 2010
‫ﺧﺮوﺟﻲ‬
4.0
Sharif University of Technology