Б. БӨрібаев c/C++ тілдерінде программалау (практикалық курс) Жогары оқу орьшдарына арналған оку құралы э в е р о алматы 2015 Эверо



жүктеу 1.78 Mb.
Pdf просмотр
бет12/16
Дата26.04.2017
өлшемі1.78 Mb.
1   ...   8   9   10   11   12   13   14   15   16

(
20
!
Факториалды есептеу функция түрінде берілуі тиіс
2.  Параллелепипед  көлемі  мен  толық  беті  ауданын  Volume  және  Space 
функциялары арқылы есептейтін профамма кұрыңыздар.
8 нұсқа
1.  Берілген  натурал  сан  бойынша  ондагы  цифрлар  саны  мен  косындысын 
табатын  профамма  құрыңыздар.Сандағы  цифрлар  саны  мен  косындысын 
функция ретінде жазыңьгадар.
2.  Экранга  квадрат  түріндегі  төртбұрыш  шыгару  үшін  Sharshy  функциясын 
колданатын  профамма  күрыныз.Функцияның  параметрлері  ретінде  сол  жак 
жогаргы  бұрыштың  координаттары,  квадрат  кабыргасы  мен  сол  кабырганы 
салатын символ бейнесі берілуі тиіс.
9 нусқа
1.  Берілген  екі  натурал  сандардын  ең  үлкен  ортак  бөлгішін  (ҮОБ)  есептейтін 
профамма  жазыныз.Мектеп  программасынан  белгілі  Евклид  апгоритмін 
колданып ҮОБ -тың табылу жолын функция ретінде жазыныздар.
2.  Пернетактадан  енгізілген  символдарды  экранда  көрсетпейтін  Sanl  функциясы 
профаммасын  жазыныздар.  Enter  пернесін  басқанда,  экранга  сол  сиволдар 
ішіндегі тек  1-ден 9-га дейінгі  цифрлар гана шығуы керек.
10
 нусқа
1.  Берілген  натурал  сан  бойынша  оның  бастапкы  жэне  сонғы  цифрын  табатын 
программа  кұрыныз.  Санды  аныктау  мен  оны  экранга  шыгаруды  функция 
реті нде жазу керек.
2.  Perim  функциясы бар программа жазыныз.  Бұл функцияга программадан  A(x\t 
у \),  В(х2,  у2),  С(хЗ,  уЗ)  үшбұрыш  төбелерінің  координаттары  беріледі,  ал  ол 
үшбұрыштың  периметрін  есептеуі  тиіс.  Егер  ондай  үшбұрыш  тұргызуга 
болмаса, онда соган сэйкес хабарлама шыгару керек.
11
 нұсқа
1
.  п  жэне  т  натурал  сандары  берілген.  п  санының  k  кіші  разрядтарынан  тұратын 
сан  мен  т  санынын  k  үлкен  разрядтарынан  тұратын  екі  санның  косындысын 
есептейтін профамма жазыңыз.
2
.  (х,  у)  нүктелерінің  координаталарын  профаммадан  ала  отырьгп,  сол  нүктенің 
центрі  (
0
,
0
)  нүктесінде,  радиусы  бірге  тең  шенбер  ішінде  жататынын/жатпай- 
тынын  аныктайтын  Огіп  функциясын  колданатын  профамма  күрыныз.  Жұмыс 
нэтижесі  мэтіндік түрде экранга шыгарылуы  тиіс.
12 
нусқа
I . Келесі өрнекті  п мэні  12-ден 24-ке дейін қадамы 4 болып өзгерген кезде, 
есептейтін
117

программа жазыңыздар. Факториалды есептеуді  функция ретінде беру керек.
3.
(
20
! 
(«+/')!
п
^   функциясының  мәндерін  оның  аргументі 
X
q
 
мен  х„ 
аралыгында  dx 
қадамымен  өзгерген  кезде  анықтайтын  E septeul  функциясын  қолданатъш 
келесі  өрнек  үшін  профамма  құрыңыздар,  х,  а,  Ь,  с  мәндері  программадан 
функцияға беріледі.
Ғ
1
ах 
х  — а
Ь
9
 
егер х + 5 < 0 жэне с = 0
х
10
 х
с - 4
,  егер х + 5 > 0 жэне с ± 0
қалган жагдайларда
13 нұсқа
1
.  п жэне т натурал сандары берілген. п санының k кіші  разрядтарынан жэне  т
санының k  кіші  разрядтарынан тұратын  екі  санның косындысын  есегггеигін 
программа жазыңыз.

2.  Dauis  функциясы  бар  программа  жазыңыз.  Бұлфункция,  егер  аргумент 
ретінде оган берілген символ ағылшын алфавитінік дауысты дыбысы болса, 
1
 деген мэнді, кері жагдайда 
0
 мәнін қайтаруы тиіс.
118

5  ЖИЫМДАР. БГРӨЛШЕМДІ Ж ИЫМ ДАРДЫ ӨНДЕУ
Жиым (немесе массив) деп ат қойылған біртекті  шамалар тізбегін айтады.
Жиым  элементін  немесе  компьютер  жадының  бір  ұясын  көрсету  үшін 
жиымның атын және оның индексін көрсету қажет.  Индекс бүтін сан немесе бүтін 
өрнек  болуы  мүмкін.  Жиым  элементтері  мэнін  оларды  хабарлау  кезінде 
меншіктеу  арқылы  немесе  енгізу  жолымен  беруге  болады.  Егер  алгашқы 
иницапдау  кезінде  жиым  элементтерінің  көрсетілген  мәндері  жалпы  элементтер 
санынан аз болса, онда қалган жиым элементтері нөлдік мән кабылдайды. 
Мысалы, мынадай тізбек
0
1
1
2
3
5
8
 
13 
21 
Фибоначчи тізбегінің 9 элементін кұрайды (алгашқы екі санды таңдап альіп, 
келесі санды алдыңгы екеуін косу жолымен алады). Ал мынау өзіне жэне бірге 
бөлінетін жай сандар тізбегінің алғашқы 7 элементі:




11 
13 
17 
Осындай бір текті тізбектерді жиым түрінде С/С-н- тілінде сипаттап, оган 
бастапқы мән беріп инициалдау үшін былай жазамыз:
i n t   f i b [ 8 ] = { 0 ,   1 ,  1 ,  2 ,   3 ,  5 , 
8
,  1 3 ,  2 1 ) ;   немесе 
i n t   f i b [ ] = { 0 ,   1 ,  1 ,  2 ,  3 ,  5 , 
8
,  1 3 ,  2 1 ) ;  
деп  көрсетеміз, 
мұндагы f i b  -  жиым аты, онын элементтерінің типі i n t ,  ал ені, яғни ұзындығы
-  9, жиым элементтерінің индекстері 0-ден бастап нөмірленеді, сол себепті 9 
элемент 
8
  индекспен көрсетіледі. Мэндері толық көрсетілсе, индексті жазбаса 
да болады. Ал былай болса,
i n t   f i b [
8
]= {
0

1

2
,  3 ) ;  
калган элементгері 
0
болыпсаналады. 
n =
1 0
;  k=
2
;  f i b [ n - k ]   =   {
0

1

2
,  3 ) ;  
десе де болады. 
Жогарыдагы тізбектің 7-ші элементін бір бүтін айнымалыга меншіктеу үшін 
былай жазамыз.
i n t   a   =  f i b [
6
] ;  
/ /   a   = 
8  
Жиымды сипаттау кезінде оның ені  накты  санмен көрсетіледі, мысалы, а  [
2 0
]  , 
а [ п ]   деп  жазу  үшін  алдын  ала  # d e f i n e   п 
2 0
 
жолы  көрсетіледі  немесе 
c o n s t   п=
2 0
;  болып жазылады.
Жиым  элементтерін  енгізу  немесе  оларды  түрлендіру  үшін  цикл  опера­
торлары  колданылады.  Төменде  10  элементі  бар  жиымды  0-ден  9-га  дейінгі 
сандармен толтырып, содан  кейін  оларды  кері  багытта экранга шыгару  мысалы 
көрсетілген: 
е д в д к ,
m a in  () 
" .  v  * I.

i n t   i a [
1 0
] ;  
i n t   i n d e x ;  
f o r ( i n d e x   =
0
;  i n d e x   <
1 0
;  i n d e x   ++) 
i a  [ in d e x ]   =  i n d e x ;  
f o r ( i n d e x   = 9 ;   i n d e x   >=
0
;  i n d e x   — )
p r i n t f ("  % i” ,  i a [ i n d e x ] ) ;   } 
r
С  тілінде  жиымды  жиымга  бірден  теңестіруге  болмайды,  мысалы,  а 0, 
^
1
, а 2/  •  .  . / а
9
  және  с 0, Сі, с 2,  .  .  .  / %   жиымдары  үшін  а = с   деп  жазуга
119

рұқсат  етілмейді.  Олардын  элементтерін  цикл  ішінде  бір-біріне  біртіндеп 
теңестіру керек.
Мысалы, мынадай цикл жазылуы тиіс: 
i n t   a [9 J   ,  с [ 9 ]   ; 
f o r  ( i n t   і=Ю;  і < 9 ;  + + і) 
а [ і ] = с [ і ] ;
Жиым элементтері бастапқы нөлдік мәңді автоматты түрде ала алмайды,
сондықтан программалаушылар жиым элементерінің барлығын автоматты турде
нөлге айнадцыру үшін, кем дегенде оның бірінші элементіне нөлді меншіктеуі 
керек.
Жиым элементерін нөмірлеу нөлден басталады:
i n t  с  [ 1 2 ] ;   / / с [ 0 ] —с [ 1 1 ]   жиымын  х а б а р л а у
Жиым элементінің позициялық (реттік) нөмірі  —  индексі — квадрат (тік) жақша 
ішіне жазылады. 
Н И   Ш  '  Щ
5.1 Ж иы м ды   мәндермен толты ру
Программада сипатталған жиымдармен жұмыс істеу алдында оларға мәндер 
берілуі тиіс.
Жиымдар (массивтер) элементтерінің мәндерін профаммаға енгізу тәсілдері
■  пернетактадан мән енгізу;
■  кездейсоқ сандар арқылы мәндер беру;
■  берілген мәндерді  меншіктеу аркылы енгізу;
■  элементтер мэндерін файлдан енгізу.
цикл
аркылы жүзеге
жиымдар үшін қабаттасқан циклдер
і = 0,5,1
а,- енгізу
колданылады
Пернетактадан
элементтен түратын жиым 
f o r ( i = 0 ;   і< = 5 :  і+ + )
5.1-сурет. 5 элементгі 
пернелерден енгізу
сіп >> аГі];
тұратын матрица түріндегі
жиым
f o r ( i = 0 ;   і< 3 ;  і+ + ) 
f o r ( j =
0
j  j <
2
;  j+ + ) 
c i n   »   a [ i ] [ j ] j
шементтен тұратын бip 
өл 
іінгі кездейсок сандармен 
f o r ( i =
0
;  і< п ;  і+ + ) 
х [ i]= ra n d o m (
1 0 0
) ;
басында
5.2-сурет. Матрицаны 
пернелерден енгізу
нөл мәнін беру керек болып жатады, п жолдан жэне m бағанадан түратын екі 
өлшемді  жиымды 
0
-дермен толтыру мысалы (
5
.
3
-сурет):

f o r ( i =
0
;  i< n ;  i+ + ) 
f o r ( j =
0
;  icm j  j+ + ) 
a [ i ] [ j ] =
0
;
5.2 Жиым мәндерін экранга (файл га) шыгару
Жиым элементтері мэндерін экранга шыгару үшін де циклдер қолданылады 
элементтен тұратын жиым мәцаерін эіфанға шығару мысалы:
■  бағаналар бойынша:
f o r ( i = 0 ;   i< = 5 ;  i+ + )
c o u t  >>  a [ i ]   »   e n d lj
араларын бос орындармен бөлі 
бойынша:
f o r ( i = 0 ;   i< = 5 ;  i+ + )
c o u t  »   a [ i ]   >>
91
 
99
формат арқылы әрбір элементке 4 орын бере 
отырып, жолдар бойынша: 
f o r ( i = 0 j   і< = 5 ;  і+ + )
c o u t  >>  s e tw (4 )  >>  a [ i l ;
1
j = 
0
, m, 
1
a u = 
0
Матрицаны стандартты формада — жолдар в 
баганалар бойынша — c o u t операторы аркылы
I
5.3-сурет. Матрицаны 
нөлдермен толтыру
кошу
үшін, e n d l  немесе  " \п "   тіркестерін пайдалану аркылы іске асыру:
f o r ( i =
0
;  i< n ;  i+ + )
{  f o r ( j =
0
;  ic o u t  >>  s e tw ( 4 )   >>  a [ i ] [ j ] ;  
c o u t  >>  e n d l:
5 3  Ж иымдарды өндеу
Көбінесе  жиым  элементтерінің  косындысын,  арифметикалық  ортасын,  ең 
үлкен  немесе  ең  кіші  мәндерін,  олардың  индекстерін  аныктау  жэне  де  жиым 
элементтерінін  мәндерін  өзгерту  сиякты  есептер  жиі  кездеседі.  Мұндайда  бір 
өлшемді  және  екі  өлшемді  жиымдар  үшін  ұқсас  алгоритмдер  колданылады,  тек 
екі өлшемді жиымдарда қабаттасқан циклдер колданылады.
Бір өлшемді жиымдармен жүмыс  істеу
Жиымнын  п  элементі  бар  болсын  делік,  енді  төмендегі  әрекеттерді  орындау
есептер ін карастырайык.
■ Элементтер қосындысын табу.
s=0;
f o r ( i =
0
; i < n ; i + + )
s+=a [ i  ] ;   / /   s айнымалысында косындыны жинақтау
121

■ Элементтер көбейтіндісін табу:
s=lj
for(i=0;is*=a[i]j  // s  айнымалысында көбейтіндіні жинақтау
■ Белгілі бір шартты қанагаттамдыратын элементтер санын анықтау.
Мысалы, бүтін сандар жиымындағы жұп сандардын қанша екенін аныктау 
мысалы: 
t
k=0;
for(i=0;iif (a[i]%2 == 0) k++;  // егер сан 2-ге қалдықсыз бөл інсе,
// санауышты 1-ге арттыру
■ Берілген мэнге тең жиым элементін анықтау. Элементгі  анықтау дегеніміз -
оның  жиымдағы  нөмірін  анықтау.  Жиымның нөлге тең алғашқы элементінің
нөмірін  аныктау,  егер  ондай  элемент  болмаса,  соған  сэйкес  мэлімет  беру 
мысалы:
i=0j  // жиым элементінің нөмірі 
do
і++;
while((a[i]==0)  И   (i==n))j
if(a[i]==0)  cout << "Алғашқы нөлдік элемент нөмірі=" << і; 
else cout <<  "Ондай элементтер жоқ";
л
Егер  нөлге  тең  элементгердің  барлығының  да  нөмірін  аныкгау  керек  болса, 
онда f o r   циклін пайдапанып,  мынадай түрде программа кэдруга болады:
cout <<  "Нөлге тең элементтер нөмірлері:" 
for(i=0;iif(a[i]==0)  cout  <<  i <<  "  "j  //  нөмірлерді шыгару
■ Жиьшның  ең  үлкен  (максимап)  элементі  мен  оның  нөмірін  анықтау. 
Max 
айнымалысы  максимал  элементтін  мэнін,  ал  k  —  оның  индексі  нөмірін 
сақтайды. Мысалы:
тах=а[Ө];  к=0; 
//  іздеуді алгашқы элементтен бастаймыз 
for(i=l;iif(a[i]>max) 
//  алдыңгысынан үлкен элементтің 
{ яіах=а[і];  // мәнін және нөмірін  (индексін) 
k=ij 
// есте сақтаймыз
}
Осы тәрізді 
a[i]болган  кезде ең кіші (минимал) элементанықталады.
• Жиылі 
элементтерінің 
мәндерін  өзгерту.  Мысалы, 
ап 
жиымы  жұмысшыяар 
жалақыларын  сактайды  делік.  Жалакысы  ен  кіші  айлық  мөлшерінен  (minzp) 
томен жұмыскерлерге осы m inzp  мөлшерінде жапақы тағайындау  керек. 
m inzp=40000;
foг(і=0;і<п;і++) 
if(a[i]a[i]=minzp;
122

5.3.1  Жиым элементтерін еұрыптау
М әлімета  іздеу  мсн  сұрыптау  информатиканың  ең  маңызды  түсініктерінің 
бірі  болып  табылады.  Сұрыптау  (реттеу)  — бір  типтегі  мәліметтер  жиынтыгын 
сондағы 
сандардың  өсуі 
немесе 
кемуі 
бойынша  реттеп  орналастыру. 
Программалау  тұргысынан  алганда,  маңызды  болып  жиымды  сұрыггтау, 
жолдарды  сұрыптау,  файл  элементтерін  сұрыптау  эрекеттері  есептеледі.  Осы 
тәрізді  сұрыптаулар  түрлері  компиляторларда,  интер претаторларда,  мәліметтер 
базасында, 
статистикалық 
мәліметтерді, 
анықтамалық 
материалдарды 
қарастьфуда жиі қолданылады.
Сұрыптау  кезінде  жиым  элементтері  олардың  мәндерінін  өсуі  не  кемуі 
бойынша  реттеліп  орналасатындай  түрде  алмастырылып,  индекстері  өзгертіледі. 
Көбінесе бір  өлшемді  жиымды сүрыптау туралы айтылады, мысалы, оқушыларды 
бойлары бойынша сапқа тұрғызу кезіндегі сиякты реттеулер қарастырылады.
Төмендегідей ұғымдарды есте сақтаған жөн:
•  жиымдарды  сұрыптау  -   ақпаратгы  сақтау  және  іздеу  жүйелеріндегі 
маңызды  жұмыстардың  бірі  болып  саналады,  өйткені  сұрыпталган 
мэліметтер  ішінен  керектісін  тауып  алу,  сұрыпталмаган  мәліметтерге 
Караганда, өте жылдам орындалады;
•  бір-бірінен  жылдамдыгы  бойынша  әртүрлі  болып  келетін  сұрыптау 
алгоритмдері бар;
•  жиымдарды  «жылдам»  сүрыптау  тәсілдері  мыңдаған  элементтерден 
түратын  ете  көлемді  мәліметтер  үшін  аса  ыңғайлы  болып  келеді  де,  олар 
уақыт  үнемдеуге  келгенде  көптеген  артықшылыктар  береді,  бірак  шагын
көлемдегі  жиымдар  үшін  қарапайым  сұрыптау  жолдарын  пайдалана  беруге 
болады.
Қалыптагы  сұрыптау  есептерінде  —  берілген  жиым  элементгерін  экранга 
шыгарып,  сонан  соң  оларды  өсуі  (кемуі)  бойынша  сүрыптап  алып,  реттелген 
мэндерді экранга қайта шыгару керек.
8  
бүтін  саннан  тұратын  m  жиымы  үшін  оның  элементтерін  кемуі  бойынша 
реттеп  орналастыратын  3  сұрыптау  тәсілін  карастырайық.  Олардың  тиімділігін 
салыстыру  үшін  сұрыптау  кезіндегі  итерациялар  (жиымды  карастыру,  қайталап 
көрсету  кадамдары  саны)  санын  көрсететін  а  айнымалысын  енгіземіз.  Жиымның 
әр  уақыт  кезеңіндегі  қалпын  бакылау  мақсатында  эрбір  алмастыру  әрекетінен 
кейін  жиым  элементтерін  экранга  шыгарып  отыру  керек.  Программаны  түзегу
ыңғайлы  болуы  үшін  жиым  элементтерін  типі  берілген  (типтелген)  константа 
ретінде карасгырамыз.
Сызықтык сұрыптау (таңдау арқылы сұрыптау)
Мэндердің  кемуі  бойынша  сызыктық  сұрыптау  тәсілінде  жиым  элементтері
толық  қарастырылып,  ең  үлкен  мәні  аныкталады  да,  оны  алгашкы  элементен
алмастырамыз.  Содан  кейін  екінші  элементтен  бастап,  калган  элементгер  толық
карастырылып,  олардын  да  үлкені  екінші  элементпен  орнын  алмастырады,  т.с.с. 
болып кете береді.
123
Ф

Мәндерді 
кемуі 
бойынша 
ретте йтін 
сызықтық 
сұрыптау 
тәсілінін 
программасы:
/* Жиымды кемуі бойынша сызықты түрде сұрыптау 
* /
#include 
#include  
ftinclude  
main(')
{■ const n=4;  // элементтер саны 
int т[п]={11,3,19,9>,
i,j,buf,l,a;
clrscr();
cout  «   "Array elements:\n"; 
for(i=0;icout <<  setw(4)  << m[i]; 
cout «  endl;
a=0j  // итерациялар санауышын нөлге теңеу
// сұрыпталмаған жиым бөлігінің мөлшерін өзгерту 
for(i=0;i// сұрыпталмаған жиым бөлігінің аяғына дейін оның 
// і-элементін і+1-элементімен салыстыру 
for(j=i+l;j{  a++;
if(m[i]{buf=m[i];  m[i]=ra[j];  m[j]=buf;> 
for(1=0;1<п;1++)
cout <<  setw(4)  << m[l];  // сұрыптаудан кейін
cout << 
iteration # "  <<  a <<  endl;
>.
getchQ;
}
Программа жұмысы  нәтижесі:
A r r a y е іе п ient:s


11
3
19
9
11
3
19
9
i t e r a t i o n
* 1
19
3
11
9
i t e r a t i o n
* 2
19
3
11
9
i t e r a t i o n
« 3
19
11
3
9
i t e r a t i o n
# 4
19
11
3
9
i t e r a t i o n
# 5
19
11
9
3
i t e r a t i o n
# 6
«Көпірш ік» тәсілімен  сұрыптау
Ең кең тараған сұрыптау тәсіліне жататын  «көпіршік» тәсілінде — алгоритмнің 
орындалуы  барысында  -   жиымның  «жеңілірек»  элементтері  біртіндеп  «қапкып»
124

жогары  шыгады.  Бұл  тәсілдің  ерекшелігі  -   қатар  тұрған  екі  элемент 
салыстырылып, қажет болса, олар орын алмастырады.
«Көпіршік» тәсілі арқылы сұрыптау программасы:
/*  "Көпіршік" тәсілімен сұрыптау */
#include 
#include 
«include  
main()
{
const n=4;  // элементтер саны 
int  т[п]={1і,3,19,9},і,j,buf,k,a; 
clrscrQ;
cout <<  "Берілген жиым:\п"; 
for(i=0;icout «   setw(4)  «  m[i]; 
cout << endl «   endl;
a=l;  // итерациялар санауыиіы 
for(i=l;i{
for(j=n-l;j>=i;j--)
/*  егер  оң жақтағы элемент 
сол жақтагы элементтен  артық болса,оны сол 
жаққа  жылжытамыз  -  көпіршік  «жоғары»  кетеді */
{ buf=m[j-l];  m[j-l]=m[j]j  m[j]=bufj 
for(k=0;kcout << setw(4) «  m[k]; //сұрыптау итерациясынан соң 
cout «  
итерация # "  «   a++ «  endl;
}
>
}
getch();
Профамма жұмысынын нәтижесі:
Берілген жиым:
11
3
19
9
11
19
3
9; итерация
* 1
19
11
3
9; итерация
# 2
19
11
9
3; итерация # 3
Беле оты ры п жылдам сұрыптау
Жоғарыдагы  екі  тәсіл  қарапайым,  әрі  көрнекі,  бірақ  олар  онша  тиімді  емес. 
Олардан  жылдам  істейтін  К.Хоор  алгоритмі  беле  отырып  сүрыптау  немесе
125

«ж ылдам  сүрыптау»
  деген  атпен  кең таралған.  Бұл  алгоритм  негізіне  жиымды 
бірнеше  бөліктерге  бөліп,  солардың  арасында  мәлімет  апмасу  тәсіпі  жатыр. 
Алгоритм  күрделі болып санапады, ол рекурсия ны жэне функцияны  пайдалануды 
керек  етеді,  соңдыктан  оны  карапайым  түрде  аздаган  комментарилермен
келтіреміз.
Жылдам сұрыптау тәсілінің программасы:
I*
  Хоор тәсілімен жылдам сұрыптау 
* /
#include 
#include 
#include  
const n=4;  //  элементтер саны 
int 
m[n]={ll,3,19>9}JiJa; 
void quicks(int first,int  last)
{  int ijjjXjbufjl; 
i=first
; 
j=last;
x=m[(first+last)/2];  // жиым ортасы 
do
{ while  (m[i]>x)  i++;
while  (m[j]// 
a++; 
if(i<=j)
{ buf=m[i];  m[i]=m[j];  m[j]=buf; 
i++jj--;
for(l=0jlcout <<  setw(4)  << m[l]; 
cout «  
iteration # "  «   a << endl;
}
>
while(i<=j);  // 
if(firstif(iquicks(i,last);
>
main()
{
clrscr();
cout <<  "Array elements:\n”; 
for(i=0;icout «   setw(4)  << m[i]; 
cout << endl << endl; 
a=0;
quicks(0,n);
cout << endl <<  "The sorted array:\n"; 
for(i=0;i126

cout «   setw(4)  << m[i]j
cout «  endl; 
getch();
>
Профамма жұмысы нәтижесі:
Array ӨІӨШtents
*

11
3
19
9
19
3
11
9; iteration * 1
19
11
3
9; iteration
* 3
19
11
9
3; iteration * 4
19
11
9
3;
iteration
« 5
The  sortedI
 array:
53.2  Реттелген жиымдардағы мәліметтерді жылдам іздеп табу
Ретгелмеген  жиымдардан  мәлімет  іздеу  кезінде  берілген  санды  тізбекті  түрде 
барлық элементтермен біртіндеп салысгыра отырып, нәтижесі «ақикат» болғанша, 
іздей  береміз.  Кейде  ондай  сан  жиым  ішінде  болмауы  да  мүмкін.  Егер  жиым 
көлемді  (элементтер  саны  өте  көп)  болса,  іздеу  процесі  ұзаққа  созылып  кетеді. 
Осындай  іздеу  жұмыстары  алдын  ала реттелген  жиымдарда тез  нәтиже береді де, 
олар  жиымдардан  мәлімет  іздеу операцияларын тиімді түрде жүзеге асыра алады. 
Сонымен  жиымдардағы  керекті  элементті  жылдам  іздеп табу үшін, оларды алдын 
ала өсуі (не кемуі) бойынша сұрыптап алу керек екен.
Сұрыпталған  көлемді  жиымдардан  мәлімет  іздеудің  ең  тиімді  жоддарының 
бірі  бинарлық  тэсіл  немесе  жиымды  екіге  бөлу  арқылы  жүргізілетін  іздеу  тәсілі 
болып саналады.
Бұл  тәсіддін  ерекшелігі  -   жиым  элементтерін  түгел  карастырмай,  оны  екіге 
бөледі де,  керекті мәнді ортадағы  мәнмен салыстырып, жиым сұрыпталғандыктан, 
онын  кай  бөлігінде екенін  бірден  анықтауга  болады.  Содан  кейін  керекті  элемент 
орналасқан  белікті  тағы  да  екіге  бөлеміз  де,  қажетті  мэннің  қай  бөлікте  екенін 
анықтау  жолымен  қарастырылатын  бөлік  бір  элементтен  тұратын  болганша, 
іздеуді жалғасгыра берем із.
Төменде  бүтін  сандардан  түратын  сұрыпталган  жиымнан  керекті  элементті 
бинарлык тәсілмен  іздеу жүргізетін  профамма мәтіні берілген.
// бинарлық іздеу 
#include 
^include 
#include  
main()

W
 
- j 
M   Ж
 •
const count=
2
0
;  // элементтер саны
int m[count]={20,20,19,19,19,18,17,17,12,12,11,10,9,9,5,5,3,3,2,1}* 
n,
i ,
a,first,last,found;
127 
.  *
1   ...   8   9   10   11   12   13   14   15   16




©emirb.org 2020
әкімшілігінің қараңыз

    Басты бет