MidterAnswers.pdf

‫ﺑﺎ ﻪ ﻌﺎ ﯽ‬
‫دا ه‬
‫ﯽ ﺮ ﻒ ‪ -‬دا‬
‫ا ﺤﺎن ﯿﺎن م س‬
‫ر ‪١٣٣٩٠/٨/٢٩ :‬‬
‫وه‪ :‬ا ﺘﺎد ر ﻦ ا ﺪ ﯽ ‬
‫ه ﻨﺪ ﯽ ﮐﺎ‬
‫ﻮ ﯽ ﭘﺎ ﮑﺎل‬
‫دون ‬
‫ا ﺘﺎد ج ن‬
‫ﻤﺎم وه‬
‫ا ﺘﺎد ا ﺪا ﯽ ‬
‫و‬
‫‪ ١ :‬ﺳﺎ ﺖ و ‪ ۴۵‬د ﻪ‬
‫ﺼﺎص دارد‪ .‬ﻮ ﻖ و ﺮﺑ ﻨﺪ ﺑﺎ ﯿﺪ‪.‬‬
‫ﻣﺸﺨﺺ ﻛﻨﻴﺪ‪ .‬ﻫﺮ ﺑﺑﺮﮔﻪ ﻓﻘﻂ ﺑﻪ ﻳﻳﻚ ﺳﺆال اﺧﺘﺼ‬
‫ﺺ‬
‫ﺻﻨﺪﻟﻲ ﺧﻮد را‬
‫ﻲ‬
‫ﻄﻔﺎً در ﺑﺎﻻي ﺗﺗﻤﺎم ﺑﺮﮔﻪﻫﺎ‪ ،‬ﺷﻤﺎره‬
‫ﻟﻄ‬
‫………‬
‫ﺷﻤﺎرره ﺻﻨﺪﻟﻲ‪… :‬‬
‫……‬
‫……………‬
‫ﺠﻮﻳﻲ‪…… :‬‬
‫ﺷﻤﺎره داﻧﺸﺠ‬
‫ﺷ‬
‫‪ 2‬ﻧﻤﺮه‬
‫ﺳﺆال ‪1‬‬
‫ﺳ‬
‫ﺑﺮﻧﺎﻣﻪ ﺗﻐﻴﻴﺮ ﻧﻜﻨﺪ )ﺗﻤﺎم ﺑﺨﺶﻫﺎﻳﻲ را ﻛﻪ ﻧﻘﺸﺸﻲ در ﺗﻮﻟﻴﺪ‬
‫ﻪ‬
‫ﺑﺮﺮﻧﺎﻣﻪ زﻳﺮ را ﺗﺎ ﺣﺪ اﻣﻜﺎن ﺳﺎده ﻧﻤﺎﻳﻴﺪ ﻃﻃﻮري ﻛﻪ ﺧﺮﺮوﺟﻲ‬
‫در ﭘﺸﺖ ﺑﺮﮔﻪ ﺑﺑﻨﻮﻳﺴﻴﺪ‪.‬‬
‫ﻧﺪارﻧﺪ ﺣﺬف ﻛﻨﻴﺪﺪ(‪ .‬ﺑﺮﻧﺎﻣﻪ ﺳﺎدده ﺷﺪه را ر‬
‫ﺧﺧﺮوﺟﻲ ﻧﺪ‬
‫ﻋﺒﺎرتﻫﺎي ﻗﺮﻣﺰ رﻧﮓ ﺑﺎﻳﺪ ﺣﺬف ﺷﻮد‪ .‬ﻫﺮ ﻣﻮرد ‪ 0.25‬ﻧﻤﺮه دارد‪ .‬‬
‫}}‪{0.25‬‬
‫}}‪{0.25‬‬
‫}}‪{0.25‬‬
‫}}‪{0.25‬‬
‫}}‪{0.25‬‬
‫}}‪{0.25‬‬
‫}}‪{0.25‬‬
‫}}‪{0.25‬‬
‫‪Var‬‬
‫; ‪X :Real‬‬
‫;‪N , I : inteeger‬‬
‫‪Beggin‬‬
‫;‪X := 4‬‬
‫‪For I := n dow‬‬
‫‪wnto n doo‬‬
‫; )‪Reeadln (x‬‬
‫‪If x > 0 then‬‬
‫)‪writteln(2*x‬‬
‫‪else‬‬
‫;;)‪writteln(2*x‬‬
‫=‪for I :‬‬
‫‪= 10 to 1 do‬‬
‫‪d‬‬
‫;))‪wriiteln(3*x‬‬
‫‪while 2=3‬‬
‫‪2 do‬‬
‫‪w‬‬
‫*‪writeln(4‬‬
‫;)‪*x‬‬
‫‪repeatt‬‬
‫‪w‬‬
‫‪writeln(5*x‬‬
‫;)‪x‬‬
‫;‪until True‬‬
‫‪T‬‬
‫;‪X := 8‬‬
‫‪8‬‬
‫‪End.‬‬
‫ﺷﻤﺎره ﺻﻨﺪﻟﻲ‪……… :‬‬
‫ﺷﻤﺎره داﻧﺸﺠﻮﻳﻲ‪………………… :‬‬
‫‪ 2/5‬ﻧﻤﺮه‬
‫ﺳﺆال ‪2‬‬
‫ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻋﺪد ﺻﺤﻴﺢ و ﻣﺜﺒﺖ ‪ N‬را درﻳﺎﻓﺖ ﻛﻨﺪ و ﺗﻤﺎم اﻋﺪاد ﺑﻪ ﺷﻜﻞ !‪ m‬ﻛﻪ ﻛﻮﭼﻜﺘﺮ از ‪ N‬ﻫﺴﺘﻨﺪ را‬
‫ﭼﺎپ ﻛﻨﺪ‪ .‬ﻣﺜﻼ ﺑﻪ ازاي ‪ N=720‬اﻋﺪاد ‪ 1,2,6,24,120‬را ﭼﺎپ ﻛﻨﺪ‪.‬‬
‫‪Var‬‬
‫} ‪ Word‬ﻳﺎ ‪{Integer‬‬
‫;‪m, n, p : LongInt‬‬
‫‪Begin‬‬
‫;)‪Readln (n‬‬
‫;‪p := 1‬‬
‫;‪m := 1‬‬
‫}‪{0.5‬‬
‫‪While p < n do‬‬
‫‪begin‬‬
‫;)‪Writeln (p‬‬
‫}‪{0.5‬‬
‫;‪m := m + 1‬‬
‫}‪{0.5‬‬
‫;‪p := p * m‬‬
‫;‪end‬‬
‫‪End.‬‬
‫ﻣﻘﺪاردﻫﻲ اوﻟﻴﻪ ‪ 0.5‬ﻧﻤﺮه و ﺳﺎﻳﺮ ﺑﺨﺶﻫﺎ ﻫﻢ ‪ 0.5‬ﻧﻤﺮه دارد‪.‬‬
‫ﺷﻤﺎره ﺻﻨﺪﻟﻲ‪……… :‬‬
‫ﺷﻤﺎره داﻧﺸﺠﻮﻳﻲ‪………………… :‬‬
‫‪ 2/5‬ﻧﻤﺮه‬
‫ﺳﺆال ‪3‬‬
‫در ﻫﺮ ﻳﻚ از ﺑﺨﺶﻫﺎي زﻳﺮ‪ ،‬ﻳﻚ دﺳﺘﻮر در در ﻣﺤﻞ ﻣﺸﺨﺺ ﺷﺪه ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻛﺎر ﺧﻮاﺳﺘﻪ ﺷﺪه را اﻧﺠﺎم دﻫﺪ‪.‬‬
‫)ﻣﻨﻈﻮر از ﻳﻚ دﺳﺘﻮر آن اﺳﺖ ﻛﻪ ﻓﻘﻂ ﺑﻪ ﻳﻚ ; ﻧﻴﺎز داﺷﺘﻪ ﺑﺎﺷﺪ‪(.‬‬
‫اﻟﻒ( دﺳﺘﻮري ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻳﻚ ﻋﺪد ﻓﺮد ﺳﻪ رﻗﻤﻲ ﺗﺼﺎدﻓﻲ ﭼﺎپ ﻛﻨﺪ‪.‬‬
‫}‪Writeln ( 1 + 2 * ( 50 + random(450) ) ); {0.75‬‬
‫ب( ﻣﺘﻐﻴﺮﻫﺎي ‪ S1‬و ‪ S2‬از ﻧﻮع رﺷﺘﻪ ﻫﺴﺘﻨﺪ‪ .‬دﺳﺘﻮري ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ اﮔﺮ ‪ S1‬ﭘﺴﻮﻧﺪ ‪ S2‬ﺑﺎﺷﺪ )ﻣﺜﻼ '‪ S1='xyz‬و‬
‫'‪ S2='uwxyz‬ﺑﺎﺷﺪ؛ ‪ S1‬در اﻧﺘﻬﺎي ‪ S2‬آﻣﺪه اﺳﺖ( آﻧﮕﺎه ﭘﻴﻐﺎم ‪ OK‬ﭼﺎپ ﻛﻨﺪ‪.‬‬
‫}‪If Pos (S1,S2) = Length(S2) – Length(S1) + 1 Then Writeln ('OK'); {0.75‬‬
‫ﻳﺎ اﻳﻨﻜﻪ‪:‬‬
‫;)'‪If Copy(S2, Length(S2) – Length(S1)+1, Length(S1)) = S1 Then Writeln ('OK‬‬
‫}‪{1‬‬
‫ﺟﻮاب اول ﺗﺤﺖ ﺑﻌﻀﻲ ﺷﺮاﻳﻂ ﺟﻮاب اﺷﺘﺒﺎه ﻣﻲدﻫﺪ‪.‬‬
‫ج( دﺳﺘﻮر ;)‪ GetDate(a,b,c,d‬را در ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﻛﺎر ﺑﺮدهاﻳﻢ‪ .‬دﺳﺘﻮري ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺗﺎرﻳﺦ اﻣﺮوز را ﭼﺎپ ﻛﻨﺪ‪.‬‬
‫ﻣﺜﻼ اﮔﺮ اﻣﺮوز ﺑﻴﺴﺘﻢ ﻣﺎه ﻳﺎزده از ﺳﺎل ‪ 2011‬ﺑﺎﺷﺪ‪ ،‬ﻋﺒﺎرت ‪ 2011/11/20‬را ﻧﻤﺎﻳﺶ دﻫﺪ‪.‬‬
‫}‪{0.75‬‬
‫;) ‪Writeln ( a , '/' , b , '/' , c‬‬
‫ﺷﻤﺎره ﺻﻨﺪﻟﻲ‪……… :‬‬
‫ﺷﻤﺎره داﻧﺸﺠﻮﻳﻲ‪………………… :‬‬
‫‪ 3/5‬ﻧﻤﺮه‬
‫ﺳﺆال ‪4‬‬
‫ﺑﺎ اﺟﺮاي ﺑﺮﻧﺎﻣﻪ زﻳﺮ‪ ،‬ﭼﻪ اﻋﺪادي در ﺧﺮوﺟﻲ ﭼﺎپ ﻣﻲﺷﻮد‪ .‬اﻋﺪاد را ﺑﻪ ﺗﺮﺗﻴﺐ و در ﻣﺤﻞ ﻣﺸﺨﺺ ﺷﺪه ﺑﻨﻮﻳﺴﻴﺪ‪.‬‬
‫‪Var‬‬
‫;‪a, b, c, m, n : Integer‬‬
‫;) ‪Procedure P ( var x : Integer ; a : Integer‬‬
‫;‪Function F ( u : Integer) : Integer‬‬
‫;‪var x , w : Integer‬‬
‫‪Begin‬‬
‫;‪x := 6‬‬
‫;‪m := m+x‬‬
‫;‪w := u + a‬‬
‫;‪F := w‬‬
‫;‪End‬‬
‫‪Begin‬‬
‫;) ‪Writeln ( a , b‬‬
‫;)‪x := x + F (8‬‬
‫;)‪Writeln (x‬‬
‫;) )‪Writeln ( F(9‬‬
‫;‪a := n‬‬
‫;‪End‬‬
‫‪Begin‬‬
‫;‪n := 5‬‬
‫;‪c := 3‬‬
‫;‪m := 4‬‬
‫;‪a := 1‬‬
‫;‪b := 2‬‬
‫;) ‪P ( a , c‬‬
‫;) ‪Writeln ( a , m , c‬‬
‫‪End.‬‬
‫ﻋﺪد‬
‫ﻋﺪد‬
‫ﻋﺪد‬
‫ﻋﺪد‬
‫ﻋﺪد‬
‫ﻋﺪد‬
‫ﻋﺪد‬
‫ﻫﻔﺘﻢ‬
‫ﺷﺸﻢ‬
‫ﭘﻨﺠﻢ‬
‫ﭼﻬﺎرم‬
‫ﺳﻮم‬
‫دوم‬
‫اول‬
‫‪3‬‬
‫‪16‬‬
‫‪12‬‬
‫‪12‬‬
‫‪12‬‬
‫‪2‬‬
‫‪3‬‬
‫ﻫﺮ ﻋﺪد ‪ 0.5‬ﻧﻤﺮه دارد‬
‫ﺷﻤﺎره داﻧﺸﺠﻮﻳﻲ‪………………… :‬‬
‫ﺳﺆال ‪5‬‬
‫ﺷﻤﺎره ﺻﻨﺪﻟﻲ‪……… :‬‬
‫‪ 4/5‬ﻧﻤﺮه‬
‫زﻳﺮﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ دو آراﻳﻪ را ﺑﻪ ﻋﻨﻮان ورودي ﺑﮕﻴﺮد و ﺗﻌﻴﻴﻦ ﻛﻨﺪ ﻛﻪ آﻳﺎ اﻋﻀﺎي آراﻳﻪ اول‪ ،‬ﺑﻪ ﻫﻤﺎن ﺗﺮﺗﻴﺐ‬
‫در آراﻳﻪ دوم وﺟﻮد دارد ﻳﺎ ﺧﻴﺮ )ﻣﻤﻜﻦ اﺳﺖ ﺑﺎ ﻓﺎﺻﻠﻪ وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﻨﺪ(‪ .‬ﻣﺜﻼ اﮔﺮ ﻣﺎﺗﺮﻳﺲ آراﻳﻪ اول ‪ 1,2,3‬و‬
‫آراﻳﻪ دوم ‪ 5,1,4,9,2,8,3,17‬ﺑﺎﺷﺪ‪ ،‬ﺟﻮاب ﻣﺜﺒﺖ ﺑﺮﮔﺮداﻧﺪ‪ .‬وﻟﻲ اﮔﺮ آراﻳﻪ اول ﺑﻪ ﺷﻜﻞ ‪ 8,9‬ﺑﻮد ﺟﻮاب ﻣﻨﻔﻲ‬
‫ﺑﺮﮔﺮداﻧﺪ ﭼﻮن اﻳﻦ اﻋﺪاد ﺑﺎ ﺗﺮﺗﻴﺐ دﻳﮕﺮي در آراﻳﻪ دوم ﻇﺎﻫﺮ ﻣﻲﺷﻮﻧﺪ‪.‬‬
‫ﺑﺪﻳﻬﻲ اﺳﺖ ﻛﻪ ﺑﺎﻳﺪ اﻧﺪازه آراﻳﻪﻫﺎ ﻫﻢ ورودي ﺗﺎﺑﻊ ﺑﺎﺷﺪ‪ .‬ﻫﻤﺎنﻃﻮر ﻛﻪ در ﺗﻤﺎم ﻣﺜﺎلﻫﺎي ﺣﻞﺷﺪه دﻳﺪهاﻳﺪ‪.‬‬
‫}‪{0.25‬‬
‫}‪{0.75‬‬
‫}‪{3.5‬‬
‫‪Type‬‬
‫;‪T = Array [1..100] of Integer‬‬
‫;‪Function F ( a , b : T ; m , n : Integer) : Boolean‬‬
‫‪Var‬‬
‫;‪i , j : Integer‬‬
‫;‪z : Boolean‬‬
‫‪Begin‬‬
‫;‪j := 1‬‬
‫;‪z := True‬‬
‫‪For i := 1 to m do‬‬
‫‪Begin‬‬
‫‪While (a[i] <> b[j]) and (j<n) do‬‬
‫;‪j := j + 1‬‬
‫‪If (j=n) and ( (a[i]<>b[j]) or (i<m) ) Then‬‬
‫;‪z := False‬‬
‫;‪j := j + 1‬‬
‫;‪End‬‬
‫;‪F := z‬‬
‫;‪End‬‬
‫ﺷﻤﺎره داﻧﺸﺠﻮﻳﻲ‪………………… :‬‬
‫ﺷﻤﺎره ﺻﻨﺪﻟﻲ‪……… :‬‬
‫‪ 3/5‬ﻧﻤﺮه‬
‫ﺳﺆال ‪6‬‬
‫ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ اﻋﻀﺎي ﻳﻚ ﻣﺎﺗﺮﻳﺲ ﻣﺘﻘﺎرن )ﺣﺪاﻛﺜﺮ ‪ 10‬در ‪ (10‬را از ﻛﺎرﺑﺮ ﺑﭙﺮﺳﺪ‪ .‬از آﻧﺠﺎ ﻛﻪ در ﻣﺎﺗﺮﻳﺲ‬
‫ﻣﺘﻘﺎرن‪ ،‬اﻋﻀﺎي ﺑﺎﻻ و ﭘﺎﻳﻴﻦ ﻗﻄﺮ اﺻﻠﻲ ﻣﺸﺎﺑﻬﻨﺪ‪ ،‬اﻋﻀﺎي ﭘﺎﻳﻴﻦ ﻗﻄﺮ اﺻﻠﻲ را ﻧﺒﺎﻳﺪ از ﻛﺎرﺑﺮ ﺑﭙﺮﺳﻴﺪ‪.‬‬
‫ﺳﭙﺲ ﺗﻤﺎم اﻋﻀﺎي ﻣﺎﺗﺮﻳﺲ را ﺑﻪ ﻃﻮر ﻣﻨﻈﻢ روي ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ دﻫﻴﺪ‪ .‬ﻃﻮري ﻛﻪ اﻋﻀﺎي ﻫﺮ ﺳﺘﻮن دﻗﻴﻘﺎ زﻳﺮ ﻫﻢ ﻗﺮار‬
‫ﮔﻴﺮﻧﺪ )اﻋﺪاد ﻫﺮ ﺳﺘﻮن راﺳﺖ ﭼﻴﻦ ﺑﺎﺷﻨﺪ(‪.‬‬
‫}‪{0.25‬‬
‫}‪Var a : Array[1..10,1..10] of Integer; {Real‬‬
‫;‪i, j, N : Integer‬‬
‫‪Begin‬‬
‫}‪{0.25‬‬
‫;)‪Readln(N‬‬
‫}‪{0.75‬‬
‫‪For i := 1 to N do‬‬
‫‪For j := i to N do‬‬
‫;)]‪Readln (a[i,j‬‬
‫}‪{1‬‬
‫‪For i := 1 to N do‬‬
‫‪For j := 1 to i-1 do‬‬
‫;]‪a[i,j] := a[j,i‬‬
‫}‪{0.25‬‬
‫‪For i := 1 to N do‬‬
‫‪begin‬‬
‫‪For j := 1 to N do‬‬
‫}‪{0.5‬‬
‫}‪{0.5‬‬
‫;) ‪Write ( a[i,j] : 6‬‬
‫;‪Writeln‬‬
‫;‪end‬‬
‫‪End.‬‬
‫اﻧﺪازه ﻣﻴﺪان ﺧﻴﻠﻲ ﻣﻬﻢ ﻧﻴﺴﺖ‪ .‬ﻻزم ﻧﻴﺴﺖ ﺣﺘﻤﺎ ﺑﻪ آراﻳﻪ ﻣﻘﺪار داده ﺷﻮد‪ .‬ﺑﻠﻜﻪ ﻣﻲ ﺗﻮاﻧﺪ ﻓﻘﻂ ﻣﻮﻗﻊ ﭼﺎپ ﻛﺮدن‪،‬‬
‫ﻣﻘﺪار ﻣﻨﺎﺳﺐ را ﭼﺎپ ﻛﻨﺪ‪.‬‬
‫ﺷﻤﺎره ﺻﻨﺪﻟﻲ‪……… :‬‬
‫ﺷﻤﺎره داﻧﺸﺠﻮﻳﻲ‪………………… :‬‬
‫‪ 1/5‬ﻧﻤﺮه‬
‫ﺳﺆال ‪7‬‬
‫ﺑﺮﻧﺎﻣﻪاي ﻧﻮﺷﺘﻪاﻳﻢ ﻛﻪ ﻳﻚ ﻋﺪد ﺻﺤﻴﺢ ﻣﺜﺒﺖ را از ﻛﺎرﺑﺮ ﺑﭙﺮﺳﺪ و ﺑﺎ اﺳﺘﻔﺎده از دﺳﺘﻮرﻫﺎي ﻣﺮﺑﻮط ﺑﻪ رﺷﺘﻪ‪ ،‬ﺗﻌﺪاد‬
‫ارﻗﺎم آن را ﭼﺎپ ﻛﻨﺪ‪ .‬ﺳﭙﺲ ﻳﻚ ﻋﺪد ‪ 1‬ﺑﻪ ﺳﻤﺖ ﭼﭗ ﻋﺪد اﺿﺎﻓﻪ ﺷﻮد و ﺟﻮاب روي ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ داده ﺷﻮد‪ .‬ﻣﺜﻼ‬
‫ﺑﻪ ازاي ﻋﺪد ‪ ،987‬اﻋﺪاد ‪) 3‬ﺳﻪ رﻗﻢ( و ‪ 1987‬روي ﺻﻔﺤﻪ ﻇﺎﻫﺮ ﺷﻮد‪.‬‬
‫ﺟﺎﻫﺎي ﺧﺎﻟﻲ را ﻛﺎﻣﻞ ﻛﻨﻴﺪ‪.‬‬
‫‪Var‬‬
‫;‪a, b, x : Integer‬‬
‫;‪w : String‬‬
‫‪Begin‬‬
‫;)‪Readln (a‬‬
‫;)‪……Str…….. (a , w‬‬
‫;) )‪Writeln ( Length(w‬‬
‫;‪w := ……'1'……. + w‬‬
‫;)‪………Val………. (w , b , x‬‬
‫;)‪Writeln (b‬‬
‫‪End.‬‬
‫ﻫﺮ ﻣﻮرد ‪ 0.5‬ﻧﻤﺮه دارد‬