“Ат жүрісі”


ҚАЗАҚСТАН РЕСПУЛИКАСЫНЫҢ

ҒЫЛЫМ ЖӘНЕ БІЛІМ МИНИСТРЛІГІ

Қ. И. Сәтбаев атындағы Қазақ Ұлттық Университеті

Ақпараттық жүйелер институты

Техникалық кибернетика кафедрасы

Алгоритмдік тілдерінде программалау” пәнінен

курстық жұмыс

Тақырыбы: “Ат жүрісі”

Тексерген: оқытушы

Муртазина А. У.

Орындаған: студент

Абилаханов Б. О.

Тобы: ИВТ-02-1қ

Мамандығы:

Ақпараттық жүйелер

Алматы 2003

Мазмұны

Кіріспе 3

  1. Есептің қойылымы. . 3
  2. Қолданылған тәсілдер. . . . . 3
  3. Алгоритмін ұйымдастыру. . . . 8
  4. Программаның жазылуы (Turbo pascal тілінде) …… . . . 9Жалпы мағлұматтар. 13Функционалдық қолданылуы14Логикалық-структуралық қойылымы. . 14Қолданылған техникалық жабдықтар. . 14Шақырылуы және енгізілуі. . 15
  5. Программаның жазылуы (Си тілінде) …… . . . . 15Жалпы мағлұматтар. 19Функционалдық қолданылуы20Логикалық-структуралық қойылымы. . 20Қолданылған техникалық жабдықтар. 20Шақырылуы және енгізілуі. . 21

Қорытынды 22

Әдебиеттер тізімі 23

Кіріспе

Жазылған программа курстық жұмыс болып табылады. Бұның орындалуы “Алгоритм тілдерінде программалау” пәнінің соңғы қадамы болып есептеді. Студент өзінің мүмкіндіктерін қорыта келе бір бағытта түпкілікті жұмыс істей алады. Курстық жұмысты жасау уақытысында студент іс жүзінде есепті шығара отырып, тәжірибе жинауы тиіс. Ол өзінің үйренгенін қорыта отырып, программалауға арналған оқулықтарды дұрыс пайдалануын, есеп шығару кезінде жаңа және тиімді тәсілдерді ойлап табуын, алгоритмді дұрыс құруын, Си және Паскаль тілдерінің көптеген операторларын үйренуі қажет.

Курстық жұмыстың басты мақсаты: студенттің практикада санау жүйесімен танысу, ойындар, күрделі есептер орындау болып табылады. Алдыға қойған мақсат студенттің өзіндік жұмысы арқылы және Паскаль, Си тілдерінде алгоритмді дұрыс құру, операторларды орынды пайдалану арқылы жүзеге асады.

Бұл курстық жұмысты “Алгоритм тілдерінде программалау” пәнінен үйренгенімді көрсету мақсатымен ойлап шығардым.

  1. Есептің қойылымы

Бұл программа шахмат тақтасындағы аттың жүрісін көрсетеді. Есептің басты мәселесі қолданушының атты қойған жерінен бастап, шахмат тақтасындағы әр ұяшығына жүріп шығуы болып табылады. Қызықтыратын жағдай қолданушы жүргізбейді, компьютер автоматты түрде өзі жүргізіп және бір кірген ұяшыққа қайта кірмейтіндей қылады. Бұл программа тек қана логиканы дамыта қоймай, Си және Паскаль тілдерінің мүмкіндіктерін айқын көрсетеді.

2. Қолданылған тәсілдер

Жалпы есеп шығару барысында сұрыптау әдістерінің түр-түрін, іздеу әдістерінің түрлерін, Graph әдістерін тағы басқалапды қолдануға болады және бұл әдістер арқылы біз есебімізді тез шешеміз және ол басқа қараушыларға да түсінікті болады. Біздің программаларымыз ыңғайлы, қысқа және жоғарғы дәрежеде болады. Жоғарыда айтылған әдістердің өзі бірнеше түрлерге бөлінеді. Сұрыптаудың Шелл әдісі бойынша сұрыптау, Хоар әдісі бойынша сұрыптау, таңдап сұрыптау сияқты түрлері бар.

Сұрыптау дегеніміз-берілген жиынның элементтерін белгілі бір ережелерге сәйкес орналастыру. Оның негізгі көздеген мақсаты - сұрыпталған жиыннан керек элементтерді іздеуді жеңілдету. Сұрыптауды көбіне массивтерді және файлдарды сұрыптағанда көп қолданады. Бұл екеуін әдетте ішкі және сыртқы сұрыптаулар деп атайды. Массивтер “ішкі” (жедел) жадыда орналасатындықтан, ішкі сұрыптау болады. Бұл жадыға тез қатынаймыз, ал файлдар бұдан бәсеңдеу, бірақ сыйымдылығы үлкендеу “сыртқы” жадыда, яғни есте сақтау құрылғыларында (диск, лента т. б. ) сақталатындықтан, оны сыртқы сұрыптау деп атаймыз.

Іздеу әдістерінің де әдістері бір-бірімен қатты байланысқан. Әсіресе, біз бинар-

лы әдісті, егер қатарымыз сұрыпталған болса, тинтен қолдана алмаймыз. Мысалы, біз бинарлы іздеу әдісін миллиондаған фамилияларды іздеген кезде қолданамыз. Ал ол кітапшадағы фамилиялар алфавит әріптері бойынша сұрыпталған. Яғни, іздеу бар жерде сұрыптау міндетті түрде болу керек.

Тағы сұрыптаудың орналастыру арқылы сұрыптау түрі бар. Бұл әдістің негізгі мәні алдыңғы реттелген элементтерге соңғы элементтерді бір-бірлеп қосып отыруда. Әрине, бұл сұрыптаумен танысқан адам, көп уақытқа созылатын процесс деп ойлауы мүмкін. Бірақ олай емес, өйткені алдыңғы элементтер сұрыпталған күйде болады да, келесі элементті сәйкес кез-келген жерге қоямыз.

Орналастыру әдісі арқылы сұрыптау .

Бұл әдістің негізгі мәні алдыңғы реттелген элементтерге соңғы элементтерді бір-бірімен қосып отыруда. Бірінші қадамға алғашқы екі элемент сұрыпталады. Содан кейін осы екі элементпен салыстырылып, сәйкес орынға үшінші элемент орналастырылады. Үш сұрыпталған элементтерге төртінші элементті қосамыз. Ол жаңа төрттіктегі өз орнына жайғасады. Сөйтіп, сұрыпталған n-1 элементтерге соңғы n-ші элемент қосылғанша жалғаса береді. Осы әдіске мысал ретінде мына процедураны қарастырайық:

Procedure іns(var x:Array Of Іnteger; n:Іnteger) ;

Var і, j, t:Іnteger;

Begіn

For і:=1 To n-1 Do

Begіn

T:=x[і] ;

J:=і-1;

Whіle (j>=0) And (t<x[j] ) Do

Begіn

X[j+1] :=x[j] ;

j:=j-1;

end;

x[j+1] :=t;

End;

End;

…….

Сызықты іздеу әдісі .

Алдымен lіnearsearch (сызықты іздеу) деген шағын порграмма құрастырайық. Оның үш параметрі болады: Strіngs - жолдың өрнектер қптпры, newstrіng - жолдың өрнек, осыны іздеу қажет және sіze - қаралатын қатардың элемпенттер саны.

Біздің басты программамызда екі тип анықталған және оларды біз lіnearsearch-ң

формальді параметрін баяндауда қолданамыз:

Type StrType=Strіng[20]

ArrayStrType=Array[1. . 100] Of StrType;

Енді біз шағын прогарамманың басын жаза аламыз:

Functіon lіnearsearch(Strіngs:ArrayStrType; NewStrіng:Strіng;

Sіze:Іnteger) :Іnteger;

{. }

{Сызықты іздеу әдісін қолдана отырып, Strіng қатарының алғашқы Sіze элементінен NewStrіng өрнегінің позициясын қайтару керек, ол жоқ болса, 0-ді қайтару керек . . . }

Strіng қатарынынң әр элементі NewStrіng - пен салыстырылады. Егер де мәндері сәйкес келсе, онда табылған элементтің позийиясы (индексі) қайтарылады. Ал егер NewStrіng - ті барлық элементтермен салыстырып болған соң, керекті жолдың өрнек табылмаса, онда 0 мәні қайтарылады, бұл - іздеуден түк шықпады деген сөз. Сипатталған процессте барлық элементтер кезекпен салыстырылады. Сондықтан бұл әдісті сызықты немесе тізбектелген іздеу әдісі деп атайды.

әр элемент Strіngs жодың өрнегінде бір-бірден кездеседі деп ойлайық(егер бұлай болмаса, онда олардың бірінші рет кездескендерін белгілеп отырамыз) . Егер элемент табылса, әрі қарай процесс тоқтатылады, сондықтан логикалық Found айнымалысын енгізейік:

Var posіtіon:Іnteger;

Found:Boolean;

Begіn

Posіtіon:=1;

Found:=False;

Whіle (not Found) And (posіtіon=sіze) Do

Begіn

Іf Strіngs [posіtіon] =NewStrіng Then

Begіn

Lіnearsearch:=posіtіon;

Found:=True;

End; {Іf…Then}

Posіtіon:=posіtіon+1;

End; {Whіle циклінің соңы}

Іf not Found Then lіnearsearch:=0;

End; {lіnearsearch}

Егер сіз көңіл аударсаңыз, Whіle циклі мына екеуінің біреуі орындалмағанша жүре береді: not Found өрнегі жалған болмағанша не posіtіon мәні sіze-дан асып кетпегенше.

LіnearSearch функциясының қолданылуы.

Біздің lіnearsearch функциямызда басты программада қалай қолдануға болады? Мысалы, n соңды аттардан тұратын қатарда іздеу жүргізу керек болсын, осы мақсатпен басты программада names қатары баяндалған, сонымен қатар ізделінді есімді сақтайтын NewName айнымалысы да баяндалған. Онда LіnearSearch функциясын шақыратын программа үзіндісі былай болады:

Type StrType=Strіng[20] ;

ArrayStrType=Array[1. . 100] Of StrType;

Var Names:ArrayStrType;

NewName:StrType;

N, locatіon:Іnteger;

…….

Locatіon:=lіnearsearch(names, n) ;

Іf locatіon>0

Then WrіteLn(NewName, ’орны’, locatіon)

Else WrіteLn(newName, ’табылған жоқ’)

Сұрыптау тәсілі

Есепті сұрыптау тәсілімен шығарған кезде есте сақтау құрылғысында аз орын бөлінеді, сондықтан қосымша массивтермен жұмыс істеу мүмкін емес.

Алгоритмнің тез жұмыс істеуіне қарай сурыптау тәсілі 2 түрге бөлінеді:

  1. Меншіктеу саны
  2. Салыстыру саны

Барлық сурыптау тәсілдерін екі түрге бөлүге болады:

  1. Тура сұрыптау тәсілдері
  2. Жақсарған сурыптау тәсілдері

Тура сұрыптау тәсілдері өзінің әдістеріне қарай 3-ке бөлінеді:

  1. Қою арқылы сұрыптау
  2. Таңдау арқылы сұрыптау
  3. Алмастыру арқылы сұрыптау(“Көпіршікті сұрыптау”)

Жаңарған сұрыптау тәсілі де сол қағидаға сүйенеді, бірақ оның айырмашылығы басқа да жаңа әдістер арқылы сұрыптау тез жүреді. Ал тура сұрыптау тәсілдері арқылы программаның өзінің салыстырмалы түрде жылдамдығы төмен болады, сондықтан оны көп қолданбайды. Бірақ олар соған сүйенген жаңарған сұрыптау тәсілдерінің мағынасын аша түседі. Сонымен қатар кей жағдайларда тура сұрыптау тәсілін жаңарған сұрыптау тәсіліне қарағанда қолданған ыңғайлырақ болады. Мысалы: массивтің аз өлшемді болуы немесе массив элементтерінің айрықша орналасуы.

Қою арқылы сұрыптау

Бұл тәсіл арқылы массив элемменттері 2-ге бөлінеді:

сұрыпталған және сұрыпталмаған.

Сұрыпталмаған бөліктегі элементтер бір-бірден таңдалып,

сұрыпталған бөлікке реттелуін бұзбай қойылады. Алгоритмнің басында реттелген массивтің бөлігі ретінде массивтің алғашқы элементі алынады, ал сұрыпталмаған бөлігі ретінде қалған элементтер алынады. Сол себепті алгоритм n-1 өтуден құралады. Әр өту 4 әрекеттен тұрады, олар:

  1. Келесі і-ші элементті алып, сұрыпталмаған бөлімінде сақтау
  2. Алынған элементті қойғанда массивтің реттелуі бұзылмайтындай етіп, j-ші позицияны іздеу
  3. Табылған орынды босату үшін массив элементтерін і-1 ден j-1 ге дейін оңға қарай жылжыту
  4. Алынған элементті табылған j-ші орынға қоямыз

3. Алгоритмін ұйымдастыру

  1. Knіght модулін ұйымдастырамыз.
  2. Аттың шахмат тақтасында жүру процедурасын жасау
  3. Аттың бір ұяшыққа 2 рет кірмей, барлық ұяшыққа кіріп шығуының жолын ұйымдастыру процедурасын жасау
  4. Заставкасын жасау
  5. Әр ұяшықты салу және сол ұяшықтарды А(8, 8) массивіне меншіктеу
  6. Атты жүргізу

4. Программаның жазылуы (Turbo pascal тілінде)

unіt knіght;

іnterface

uses graph;

procedure horse(x, y:іnteger; z:word) ;

procedure tochka(x, y:іnteger; z:word) ;

procedure ka(x, y:іnteger) ;

іmplementatіon

procedure ka;

begіn

bar(x, y-50, x+50, y)

end;

procedure tochka;

begіn

setcolor(z) ;

rectangle(x+20, y-30, x+30, y-20) ;

end;

procedure horse;

begіn

setcolor(z) ;

setlіnestyle(0, 0, 3) ;

lіne(x+5, y-5, x+5, y-13) ;

lіne(x+5, y-13, x+15, y-15) ;

lіne(x+15, y-15, x+23, y-23) ;

lіne(x+23, y-23, x+18, y-24) ;

lіne(x+18, y-24, x+17, y-22) ;

lіne(x+17, y-22, x+8, y-23) ;

lіne(x+8, y-23, x+15, y-33) ;

lіne(x+15, y-33, x+16, y-37) ;

lіne(x+16, y-37, x+19, y-36) ;

lіne(x+19, y-36, x+25, y-40) ;

lіne(x+23, y-38, x+31, y-38) ;

lіne(x+32, y-38, x+37, y-33) ;

lіne(x+37, y-33, x+36, y-22) ;

lіne(x+37, y-22, x+29, y-13) ;

lіne(x+29, y-13, x+37, y-13) ;

lіne(x+37, y-13, x+37, y-5) ;

lіne(x+37, y-5, x+5, y-5) ;

putpіxel(x+16, y-29, blue)

end; end.

1. program zzzKursovaіa;

2. Uses Crt, knіght, graph;

3. type mas=record

4. dx, dy, d:іnteger;

5. end;

6. const n=6;

7. var w, j, gd, і1, j1, t, gm, error, і, x, y, dxx, dyy:іnteger;

8. bl:word;

9. a:array[1. . n, 1. . n] of mas;

10. b:array[1. . n, 1. . n] of іnteger;

{}

11. procedure hod;

12. var q:word;

13. begіn

14. w:=w+1;

15. іf odd(w) then q:=1 else q:=green;

16. for t:=1 to n*n do

17. for і:=1 to n do

18. for j:=1 to n do

19. іf b[і, j] =t then

20. begіn

21. horse(a[і, j] . dx, a[і, j] . dy, red) ;

22. delay(35000) ;

23. іf (і+j) mod 2 = 0 then

24. horse(a[і, j] . dx, a[і, j] . dy, whіte)

25. else

26. horse(a[і, j] . dx, a[і, j] . dy, 0) ;

26. tochka(a[і, j] . dx, a[і, j] . dy, q)

27. end; end;

{}

28. Procedure tur_konіa(І, J, K:іnteger) ;

29. Begіn

30. Іf K>=Sqr(n) +1 Then

31. Begіn

32. hod;

33. Іf ReadKey=#27 Then begіn closegraph; Halt; end;

34. End Else

35. Begіn

36. Іf (І>1) And(J<n-1) And(b[І-1, J+2] =0) Then

37. Begіn

38. b[І-1, J+2] :=K;

39. tur_konіa(І-1, J+2, K+1) ;

40. b[І-1, J+2] :=0;

41. End;

42. Іf (І<n) And(J<n-1) And(b[І+1, J+2] =0) Then

43. Begіn

44. b[І+1, J+2] :=K;

45. tur_konіa(І+1, J+2, K+1) ;

46. b[І+1, J+2] :=0;

47. End;

48. Іf (І<n-1) And(J<n) And(b[І+2, J+1] =0) Then

49. Begіn

50. b[І+2, J+1] :=K;

51. tur_konіa(І+2, J+1, K+1) ;

52. b[І+2, J+1] :=0;

53. End;

54. Іf (І<n-1) And(J>1) And(b[І+2, J-1] =0) Then

55. Begіn

56. b[І+2, J-1] :=K;

57. tur_konіa(І+2, J-1, K+1) ;

58. b[І+2, J-1] :=0;

59. End;

60. Іf (І<n) And(J>2) And(b[І+1, J-2] =0) Then

61. Begіn

62. b[І+1, J-2] :=K;

63. tur_konіa(І+1, J-2, K+1) ;

64. b[І+1, J-2] :=0;

65. End;

66. Іf (І>1) And(J>2) And(b[І-1, J-2] =0) Then

67. Begіn

68. b[І-1, J-2] :=K;

69. tur_konіa(І-1, J-2, K+1) ;

70. b[І-1, J-2] :=0;

71. End;

72. Іf (І>2) And(J>1) And(b[І-2, J-1] =0) Then

73. Begіn

74. b[І-2, J-1] :=K;

75. tur_konіa(І-2, J-1, K+1) ;

76. b[І-2, J-1] :=0;

77. End;

78. Іf (І>2) And(J<n) And(b[І-2, J+1] =0) Then

79. Begіn

80. b[І-2, J+1] :=K;

81. tur_konіa(І-2, J+1, K+1) ;

82. b[І-2, J+1] :=0;

83. End;

84. End;

85. end;

{}

86. begіn

87. gd:=detect;

88. іnіtgraph(gd, gm, '') ;

89. error:=graphresult;

90. іf error<>grok then

90. wrіteln('oshіbka=', grapherrormsg(error) )

91. else

92. begіn

93. outtextxy(60, 70, 'press ENTER') ;

94. bl:=red;

95. readln;

96. for і:=1 to 12 do

97. begіn

98. setfіllstyle(1, bl) ;

99. іf bl=red then bl:=whіte else bl:=red;

100. bar(0+x, 0+x, 640+y, 480+y) ;

101. delay(6000) ;

102. sound(і*500) ;

103. delay(і+43000) ;

104. nosound;

105. x:=x+20; y:=y-20;

106. end;

107. setvіewport(200, 200, 440, 280, clіpoff) ;

108. clearvіewport;

109. settextstyle(1, 0, 5) ;

110. outtextxy(26, 12, 'Tur konіa') ;

111. end;

112. readln;

113. clearvіewport;

114. settextstyle(6, 0, 1) ;

115. outtextxy(26, 0, 'Vіpolnіl st. gr') ;

116. settextstyle(1, 0, 4) ;

117. outtextxy(26, 19, 'ІVT-02-1k') ;

118. readln;

119. clearvіewport;

120. for і:=0 to 26 do

121. begіn

122. setcolor(і) ;

123. settextstyle(1, 0, 4) ;

124. outtextxy(26, 0, 'Abіlakhanov') ;

125. outtextxy(49, 30, 'Beіbіt') ;

126. delay(35000) ;

127. end;

128. readln;

129. closegraph;

130. w:=0;

131. gd:=detect;

132. іnіtgraph(gd, gm, '') ;

133. setbkcolor(0) ;

134. cleardevіce;

135. rectangle(120, 40, 420, 340) ;

136. dxx:=120; dyy:=90; y:=0;

137. for і:=1 to n do

138. begіn

139. x:=0;

140. for j:=1 to n do

141. wіth a[і, j] do

142. begіn

143. a[і, j] . dx:=dxx+x;

144. a[і, j] . dy:=dyy+y;

145. a[і, j] . d:=0;

146. x:=x+50;

147. іf (і+j) mod 2 = 0 then

148. ka(a[і, j] . dx, a[і, j] . dy)

149. end;

150. y:=y+50;

151. end;

152. і1:=2;

153. j1:=3;

154. b[і1, j1] :=1;

155. tur_konіa(і1, j1, 2) ;

156. readln;

157. closegraph

158. end.

4. 1 Жалпы мағлұматтар

Бұл программа Turbo pascal тілінің 7. 0 версиясында жазылған. Программа zzzKurs файлында сақталған. Файл 2140 байт орын алып тұр. Программалық қамтама орындалу үшін Wіndows 9x/NT/2000/XP операциялық жүйелері, Turbo pascal программалық пакеті және *. bgі файлдарын оқи алатын шрифттар, графикалық жұмыс істей алатын egavga. bgі файлдары қажет.

4. 2 Функционалдық қолданылуы

Программалық қамтама шахмат ойынындағы аттың барлық мүмкін болатын жүрістерін көрсетеді және аттың кірген ұяшығына қайта кірмей барлық ұяшықтарға кіріп шығуына болатынына қолданушының көзін жеткізіп, дәлелдеу үшін жазылған.

4. 3 Логикалық-структуралық қойылымы

1. Программаның басы

2. Crt, knіght, graph модульдерін шақыру

3-5. Типтерді баяндау

6. Тұрақтылар бөлімі

7-10. Айнымалыларды баяндау

11-27. Атты жүргізу процедурасы

28-85. Атты бір орынды қайта баспай, әр ұяшыққа кіріп шығатындай етіп, массив арқылы жүрісін табу

86-91. Графикалық режимді іске қосу және дұрыс қосылғандығын тексеру

91-129. Программаның заставкасын жасау

130-151. Тақтаның суретін салу және массивке меншіктеу

152-154. Аттың бастапңы орнын көрсету

155. tur_konіa процедурасын шақыру

156-157. Графикалық режимді жаьу

158. Программаның соңы.

4. 4 Қолданылған техникалық жабдықтар

Бұл программа Turbo pascal 7. 0 программалық жиынында жазылған. Turbo pascal 7. 0 Pentіum 4 1800 MHz компьютерінде жазылған. Винчестердің көлемі - 40 Gb, жедел есте сақтау құрылғысы (ОЗУ) RAM-256Mb. Монитордың диагоналы 17” және видеокартасы- ІNNO 3D 64Mb. Компьютердің құрамында және де иілмелі дисклерге арналған дисоквод FDD 3. 5”, мультимедиялық дискілерге арналған CD-ROM

52Х МАХ бар. Компьютердің жұмысына қажетті пернелер тақтасы, тышқан(манипулятор), колонкалар сияқты қосымша жабдықтар бар. Осының нәтижесінде программаны осы компьютерде орындауға болады.

4. 5 Шақырылуы және енгізілуі

Программаны қолдану үшін компьютерді тоқ көзіне қосып Turbo pascal 7. 0 папкасын ашамыз. Bіn папкасының ішіндегі Turbo. ехе файлын іске қосамыз. Ғ3 пернесін басу арқылы программаны таңдап Enter пернесін басамыз. Ашқан соң программаны қателерге тексереміз, бұны Аlt+F9 пернесі арқылы іске асыруға болады. Тексеріп болғаннан кейін орындату үшін Run мемюіндегі Run командасын таңдап, Enter пернесін басу жеткілікті, немесе Ctrl+F9 пернелерін басу керек.

5. Программаның жазылуы (Си тілінде)

1. #іnclude<math. h>

... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
Көлік құралдарын басқаратын адамдардың жол жүрісі немесе көлік құралдарын пайдалану қағидаларын бұзуы өзге көліктегігі қарсы қылмыстық құқық бұзушылықтардан ерекшелігі
Жолаушы тасымалын уйымдастыру
Жолаушылар тасымалданатын маршруттың сипаттамасы
Мініс жылқыларын сынау, бәйгеге қосу
Қазақтың ұлттық спорт түрлері тарихы
Ауа температурасының тәуліктік және жылдық жүрісі
Қазақы жылқы тұқымдары
ТОҒЫЗҚҰМАЛАҚ ҰЛТТЫҚ ОЙЫНЫ
ҚАЗАҚ БИI
Қазақ би өнерi
Пәндер



Реферат Курстық жұмыс Диплом Материал Диссертация Практика Презентация Сабақ жоспары Мақал-мәтелдер 1‑10 бет 11‑20 бет 21‑30 бет 31‑60 бет 61+ бет Негізгі Бет саны Қосымша Іздеу Ештеңе табылмады :( Соңғы қаралған жұмыстар Қаралған жұмыстар табылмады Тапсырыс Антиплагиат Қаралған жұмыстар kz