You are on page 1of 213

saqarTvelos universiteti

l. gaCeCilaZe




daprogramebis safuZvlebi
(algoriTmuli ena C++)















Tbilisi
2012
2




ganxilulia algoriTmebis Sedgenis ZiriTadi prin-
cipebi, maTi gamosaxvis saSualebebi da daprogramebis
ena C++-is safuZvlebi. Teoriul masalasTan erTad,
mocemulia Sesabamisi amocanebi da magaliTebi.
saxelmZRvanelo gankuTvnilia saqarTvelos univer-
sitetis maTematikis da informatikis skolis studen-
tebisaTvis.






recenzenti:
sruli profesori m. avaliSvili




gamomcemloba saqarTvelos universiteti, 2012

ISBN

3

Tavi I
informatikis ganviTarebis
mokle mimoxilva
1.1. informaciis cneba
uZvelesi droidan adamianis moRvaweoba mimarTuli
iyo bunebis Semecnebisa da aTvisebisaken. Tavdapir-
velad igi ubralod, bunebis mza "saCuqrebiT" irCenda
Tavs: mcenareuli sakvebiT, fesvebiT, cxovelebiT, rac
mis saarsebo saSualebas Seadgenda. magram, amave dros,
adamiani Seicnobda gare samyaros da swavlobda bune-
baze zemoqmedebis saSualebebs.
yuradReba rom mivaqcioT Cvens dRevandel gare-
mocvas, SevniSnavT, rom TiTqmis yvelaferi Seqmnilia
an gardaqmnilia adamianis mier. tanisamosi, saxlebi,
avtomobilebi, qarxnebi, telefoni, radio da televi-
zori - yvelaferi es adamianis Semoqmedebis Sedegia.
adamianis mier bunebrivi resursebis gamoyeneba da
masze zemoqmedeba SesaZlebeli gaxda swored im in-
formaciis, codnisa da gamocdilebis wyalobiT, rome-
lic kacobriobam miiRo Tavisi mravalsaukunovani ar-
sebobis manZilze.
"informacia" - ras gulisxmoben am sityvaSi?
sityva "informacia" laTinuri warmoSobisaa da gan-
martebas, gadmocemas aRniSnavs. xSirad "informacias"
ganmartaven rogorc Setyobinebas an cnobas raime mom-
xdari ambis an risame mdgomareobis Sesaxeb. gvxvdeba
"informaciis" filosofiuri xasiaTis gansazRvrebebic,
rogoricaa "informacia realuri samyaros asaxvaa" da
sxv.
me-20 saukunis meore naxevridan "informacia" zogad-
samecniero terminia, romelic moicavs cnobebisa da
signalebis gadacemas, gacvlas da igi warmoadgens
kibernetikis erT-erT ZiriTad cnebas.
4

1.2. informaciis damuSaveba
informacias adamianebi uZvelesi droidan amuSaveb-
dnen, magram TviT termini "informaciis damuSaveba" di-
di xani ar aris rac gaCnda.
yoveldRiur cxovrebaSi adamiani Rebulobda in-
formacias smenis, mxedvelobis, grZnobis organoebis
saSualebiT. miRebul informacias igi Segnebulad an
Tavisi nebisgan damoukideblad amuSavebda, e.i. axdenda
mis Sedarebas misTvis ukve cnobil movlenebTan da
aqedan gamomdinare, akeTebda axal daskvnebs, axdenda
Tavisi codnis klasifikacias.
Tavdapirvelad, informaciis gadacema xdeboda zepi-
rad, Taobidan TaobaSi. es iyo cnobebi nadirobis, nana-
direvis gadamuSavebis, miwaTmoqmedebis Sesaxeb da sxv.
SemdgomSi ki informaciis fiqsireba xdeboda grafiku-
li saSualebebiT.
ase gaCnda mravali aTeuli saukunis win kldeebze
da qvebze Sesrulebuli naxatebi, romlebic gamosaxav-
da cxovelebs, mcenareebs, sanadiro da samuSao iara-
Rebs da sxv.
adamiani eZebda informaciis fiqsirebis sul axal
da axal saSualebebs. gaCnda damwerloba. adamianebi
werdnen palmis foTlebze, Tixis filebze, mogvianebiT
ki pergamentis furclebze. damwerloba kacobriobis
mier Seqmnili informaciis Senaxvisa da gadacemis pir-
veli universaluri saSualebaa.
dro gadioda, Taobebi icvleboda TaobebiT, erTi
socialuri wyoba icvleboda meoreTi, izrdeboda ka-
cobriobis mier dagrovili codna samyaros Sesaxeb. es
ukanaskneli miT ufro swrafad mimdinareobda, rac uf-
ro efeqturad xdeboda informaciis gadacema, damuSa-
veba da gamoyeneba. mosaxleobis zrdam gamoiwvia saxe-
losno da sameurneo sawarmoebis gaCena. amisaTvis ki
aucilebeli iyo ufro meti raodenobis adamianis da-
saqmeba, risTvisac, Tavis mxriv, saWiro gaxda maTTvis
im saidumloebebisa da gamocdilebis gadacema, rome-
5

lic saukuneebis manZilze grovdeboda. amgvarad, aq-
tualuri gaxda dagrovebuli gamocdilebis gamravle-
bisa da gavrcelebis problema. am sferoSi gadatria-
leba moaxdina sabeWdi dazgis Seqmnam, ris Sedegadac
SesaZlebeli gaxda profesiuli codnis masiurad gavr-
celeba.
wlebi gadioda, izrdeboda informaciis moculoba,
romelic icvleboda sazogadoebaSi. informaciis Sek-
rebis, gadamuSavebis da gavrcelebis mizniT iqmneboda
gamomcemlobebi da tipografiebi. amgvarad, Seiqmna in-
formaciuli mrewveloba. beWdvis garda gaCnda sxva ma-
sobrivi sainformacio saSualebebi - radio da televi-
zia. amasTan, didi tiraJiT gamocemulma gazeTebma,
Jurnalebma da wignebma, sasargeblo informaciis gar-
da, adamians uzarmazari moculobis arasaWiro da ga-
mousadegari informaciac moaxvies Tavs, romelic `in-
formaciuli xmauris saxelwodebiTaa cnobili. D

1.3. informaciis gamosaxva
ricxviTi sidideebis saSualebiT
uZvelesi droidan adamians gauCnda aucilebloba
iseTi informaciis gamosaxvisa, romelic raodenobriv
xasiaTs atarebda. magaliTad, uZvelesi adamiani, imi-
saTvis, rom Tavisi tomis wevrebisaTvis Seetyobinebina
Tu ramdeni cxoveli mokla, xelis TiTebs iyenebda.
sabrZolo da Sromis iaraRebis, sakvebisa da sxva
sasicocxlo mniSvnelobis nivTebis damzadebisa da ga-
cvlis aucileblobam aiZula adamiani dasaTvlelad
Cxirebi da kenWebi gamoeyenebina. gavida xani da raode-
nobrivi bunebis informaciis gamoxatvisaTvis adamians
ricxviTi sidideebi Semoaqvs.
ricxviTi sidideebis Semotana umniSvnelovanesi
movlenaa kacobriobis ganviTarebis istoriaSi, romel-
mac dasabami misca ariTmetikis, xolo mogvianebiT al-
gebra-geometriis ganviTarebas.
6

1.4. avtomatizaciis pirveli
mcdeloba - saangariSo dafa
informaciis ricxvebis saSualebiT warmodgenis
SemTxvevaSi misi gadamuSavebis procesi daiyvaneba ric-
xvebze ariTmetikuli operaciebis Catarebaze. amitom
adamianis pirveli mcdeloba dakavSirebuli iyo iseTi
xelsawyos gamogonebasTan, romelic aadvilebda
ariTmetikuli operaciebis Catarebas.
erT-erTi pirveli aseTi xelsawyoa saangariSo da-
fa.
jer kidev ramdenime aTasi wlis win adamianma ler-
wmis CarCoze Tokebi gaWima, yovel Tokze aT-aTi mZivi
aasxa da pirveli saangariSo Seqmna.
ariTmetikuli gagebiT, saangariSo dafis RerZebi
aRniSnaven ricxviTi sistemis Tanrigebs: pirvel RerZ-
ze Camocmul TiToeul koWas erTeulis fasi aqvs, meo-
re RerZze - aTeulis da a.S. aRsaniSnavia, rom erTida-
igive koWas sxvadasxva RerZebze sxvadasxva ricxvis ga-
mosaxva SeuZlia. ase, magaliTad, ori koWa pirvel (er-
Teulebis) RerZze gamosaxavs ricxvs "2", xolo igive
ori koWa meore (aTeulebis) RerZze aRniSnavs ricxvs
"20".
ricxvebis Caweris ganxilul princips poziciuri
ewodeba, vinaidan ricxvis Semadgeneli yoveli cifris
ricxviTi mniSvneloba damokidebulia ara mxolod mis
gamomxatvel simboloze, aramed am simbolos pozicia-
ze ricxvSi. mxolod saangariSo RerZze koWebis rao-
denobiT mTeli ricxvis sididis dadgena SeuZlebelia,
Tu ar gvecodineba RerZis nomeri saangariSo dafaze.
aTvlis sistemebs, romlebic aTvlis aRweril princips
iyenebs, poziciuri ewodeba. aTvlis poziciuri siste-
mebidan yvelaze gavrcelebulia indo-arabuli sistema,
sadac cifrebis aRmniSvneli simboloebis ricxvi
SezRudulia da gamoyenebulia sul 10 simbolo
(1,2,3,4,5,6,7,8,9,0). aRsaniSnavia, rom cifri 0 (nuli) Tav-
7

dapirvelad indoelebma gamoiyenes cifrebis mwkrivSi
cifrebis poziciuri mniSvnelobebis gamosavlenad. am
sistemas aTobiTi ewodeba, vinaidan igi aTi cifrisagan
Sedgeba. aTobiT sistemaSi nebismieri ricxvi Caiwereba
0 9 cifrebis kombinaciiT, magaliTad, 35, 263, 5814 da
a.S.
poziciuri sistemebisgan gansxvavebiT, aTvlis ara-
poziciur sistemaSi, rogoricaa romauli sistema, spe-
cialuri niSnebi aqvs erTs - I, xuTs - V, aTs - X, or-
mocdaaTs - L, ass - C, xuTass - D, aTass - M, xolo da-
narCeni ricxvebi miiReba aRniSnuli ricxvebis mimate-
biTa da gamoklebiT. magaliTad, III miRebulia (I+I+I)-
dan, IV ki (V-I)-dan da a.S.
aTvlis romaul sistemaSi aris kidev erTi naklo-
vaneba: igi ar iZleva nebismieri didi ricxvis Caweris
saSualebas. magaliTad, 1000000-is Casawerad saWiroa an
1000-jer gavimeoroT M, an SemovitanoT axali simbo-
lo. cxadia, zrdadobis mixedviT ricxvebis Casawerad
dagvWirdeba sul axali da axali simboloebis Semota-
na.

1.5. teqnikuri saangariSo mowyobiloba
Zvel droSi uSiSari mezRvaurebisa da brZeni as-
tronomebisaTvis aucilebeli gaxda zusti da swori
gaangariSebebis Sesruleba. aseTi gaangariSebebisaTvis
ki saWiro iyo specialuri mowyobilobebi. saangariSo
dafa ususuri aRmoCnda sul ufro da ufro rTuli
amocanebis gadasawyvetad. gavida mravali weli sanam
gamoCndeboda pirveli meqanikuri saangariSo mowyobi-
loba. aseTi didi pauza gamowveuli iyo imiT, rom um-
ravles SemTxvevaSi gamoiyeneboda romauli aTvlis
sistema da mxolod indo-arabuli aTvlis sistemis
damkvidrebam misca mniSvnelovani biZgi axali tipis
saangariSo mowyobilobebis Seqmnas.
8

1614-1617 wlebSi Sotlandielma maTematikosma jon
neperma gamoimuSava gamravlebisa da gayofis gaadvile-
buli meTodebi, romelic emyareboda saangariSo dis-
koebsa da pirdapiri gamravlebis cxrils. neperma Se-
qmna meqanikuri mowyobiloba, romelic Seicavda koWe-
bian diskoebs, romelzec cifrebi iyo amobeWdili. am
diskoebis gansazRvruli SeTavsebiT gamoyenebisas isi-
ni pirdapiri gamravlebis SesaZleblobas iZleodnen.
am saqmeSi mniSvnelovani gadatrialeba moaxdina fran-
gi blez paskalis gamogonebam 1640 wlis bolos, rom-
lis idea mdgomareobda SemdegSi: "romelime Tanrigis
yoveli rgoli an gulari, asrulebda ra moZraobas
aTi ariTmetikuli cifris manZiliT, aiZulebda momdev-
no rgols an gulars Seesrulebina moZraoba erTi
cifris manZiliT". avtors xuTi wlis daZabuli muSao-
ba dasWirda am ideis realizaciisaTvis, ramac igi mi-
iyvana e.w. "paskalis borblis" Seqmnamde, romelic xuT-
niSna cifrebze oTxi maTematikuri moqmedebis saSua-
lebas iZleoda.
1694 wels germanelma maTematikosma leibnicma Se-
qmna manqana, romelic asrulebda im dros yvela cno-
bil maTematikur operacias: oTx ZiriTad maTematikur
moqmedebas da kvadratuli fesvis amoRebas.
bolos, 1838 wels, Svedma inJinerma v. odnerma Se-
qmna ariTmometri, romlis safuZvelzec Seiqmna sxva
mravali saangariSo mowyobiloba.

1.6. pirveli gamomTvleli manqanebi
1822 wels genialurma ingliselma maTematikosma
Carlz bebijma xeli mokida proeqtis ganxorcielebas,
romelsac mTeli cxovreba miuZRvna. man Seadgina 37
kv.metrze meti moculobis dawvrilebiTi naxazebi, ro-
melTagan mniSvnelovani nawili analizur manqanas ga-
nekuTvneboda. 12 wlis Tavdauzogavi Sromis Semdeg,
romelsac Tan sdevda teqnikuri, finansuri da poli-
tikuri problemebi, man ukuagdo es proeqti da daiwyo
9

muSaoba analizuri manqanis SeqmnisaTvis. axali tipis
manqana iyo rTuli da saSualebas iZleoda gadawyveti-
liyo sxvadasxva tipis amocanebi. marTalia, bebijs ar
ewera Tavisi Canafiqris ganxorcieleba, magram, miuxe-
davad amisa, safuZvlianad damuSavebuli misi proeq-
tiT SeiZleba Tanamedrove gamoTvliTi manqanebis wina-
saxis danaxva.
bebijis sikvdilidan 20 wlis Semdeg amerikelma ga-
momgonebelma german xoleritma Seqmna eleqtromeqani-
kuri saangariSo manqana, romelic gamoyenebul iqna
aSS-Si 1890 wels mosaxleobis aRwerisas. SemdgomSi ki,
mravali wlis ganmavlobaSi, analizuri manqanis msgav-
si araferi Seqmnila.
pirveli seriuli gamomTvleli manqana me-20 sauku-
nis ormocdaaTian wlebSi Seiqmna da mas Semdeg dRem-
de arnaxul srulyofas miaRwia. Tanamedrove kompiute-
rebi xasiaTdeba zemaRali swrafqmedebiT, operatiuli
da gare mexsierebis Zalian didi tevadobiT, kompaqtu-
robiT da sxva teqnikuri maxasiaTeblebiT.









10

Tavi II
algoriTmizaciis zogadi cnebebi
2.1. amocanebis gadawyvetis ZiriTadi etapebi
maTematikuri da sainJinro amocanebis kompiuteris
saSualebiT gadawyveta sakmaod rTuli da Sromateva-
di procesia, romelic mTeli rigi etapebis Sesrule-
bas iTvaliswinebs. es etapebia:
- amocanis dasma;
- amocanis maTematikuri formulireba;
- ricxviTi meTodis SerCeva;
- gamoTvliTi procesis algoriTmizacia;
- kompiuteruli programis Sedgena;
- kompiuteruli programis gamarTva;
- amocanis gadawyveta.
amocanis dasma. nebismieri amocanis gadawyvetis sa-
wyis etaps amocanis dasma warmoadgens. igi gansazRv-
ravs amocanis gadawyvetis mizans. am etapze amocana
profesiuli cnebebis doneze formulirdeba da igi
koreqtuli da gasagebi unda iyos SemsruleblisaTvis
(momxmareblisaTvis).
amocanis maTematikuri formulireba. maTematikuri
formulirebis etapze adgili aqvs formulebis saSua-
lebiT amocanis formalizacias, romlis drosac gani-
sazRvreba sawyisi pirobebi, gamoTvlis cdomileba, sa-
wyisi da saboloo monacemebi. arsebiTad aq adgili
aqvs gadasawyveti amocanis maTematikuri modelis Se-
muSavebas.
ricxviTi meTodis SerCeva. rig SemTxvevaSi, erTida-
igive amocana sxvadasxva ricxviTi meTodis saSuale-
biT SeiZleba gadavwyvitoT. meTodis SerCeva damokide-
bulia mraval faqtorze, romelTagan ZiriTadia amoca-
nis gadawyvetis sizuste, amocanis gadawyvetisaTvis sa-
11

Wiro kompiuteruli dro da gamoyenebuli operatiuli
mexsierebis tevadoba. TiToeul konkretul SemTxveva-
Si ricxviTi meTodis SerCeva aRniSnuli kriteriume-
bis gaTvaliswinebiT xorcieldeba.
saWiroa SevniSnoT, rom umartivesi amocanebis gada-
wyvetis SemTxvevaSi aRniSnuli etapi ar gamoiyeneba,
radgan ricxviTi meTodi TviT amocanis maTematikuri
formulirebis safuZvelzea gansazRvruli. ase, maga-
liTad, heronis formuliT samkuTxedis farTobis ga-
moTvlis, kvadratuli gantolebis fesvebis gansazRv-
ris amocanebi da sxv.
gamoTvliTi procesis algoriTmizacia. mocemul
etapze, SerCeuli ricxviTi meTodis mixedviT, ganisaz-
Rvreba elementaruli gamoTvlebis logikuri mimdev-
roba, romlis safuZvelzec amocanis amonaxsni miiReba.
algoriTmi ar aris meTodi. igi mxolod SerCeuli
ricxviTi meTodis realizaciaa. Tu erTidaigive ric-
xviTi meTodis ramdenime realizacia arsebobs, maSin
saWiroa algoriTmis is varianti avirCioT, romelic
kompiuteris efeqtur gamoyenebas uzrunvelyofs. sxva
sityvebiT rom vTqvaT, saWiroa iseTi algoriTmis Ser-
Ceva, romelsac naklebi raodenobis maTematikuri ope-
raciebis Sesruleba da minimaluri tevadobis mexsie-
reba esaWiroeba.
kompiuteruli programis Sedgena. algoriTmis sa-
fuZvelze kompiuteruli programis Sedgenis process
daprogrameba ewodeba. Tu programa manqanur enazea Se-
srulebuli (e.i. programa dawerilia gamomTvleli man-
qanis kodebSi), maSin misi kompiuteruli realizacia
uSualod SeiZleba ganxorcieldes, xolo Tu progra-
ma romelime algoriTmul enazea Cawerili, maSin igi
specialuri programuli uzrunvelyofis translia-
toris saSualebiT gadaiyvaneba manqanur kodebSi da
mxolod amis Semdeg aris SesaZlebeli misi kompiute-
ruli realizacia.
12

kompiuteruli programis gamarTva. programaSi Sec-
domebis moZebnisa da gasworebis (redaqtirebis) pro-
cess gamarTva ewodeba. ganasxvaveben sintaqsuri da
logikuri saxis Secdomebs.
sintaqsuri Secdomebis SemTxvevaSi programis nor-
maluri funqcionireba SeuZlebelia masSi dauSvebeli
programuli konstruqciebis gamo. aRniSnuli Secdome-
bis moZebna SesaZlebelia transliatorSi arsebuli
sintaqsuri kontrolis programis saSualebiT.
im SemTxvevaSi, roca kompiuteruli programis mu-
Saobis Sedegi mosalodnel Sedegs ar emTxveva, maSin
adgili aqvs logikuri saxis Secdomebs. aRniSnuli
Secdomebi ganpirobebulia algoriTmis araswori Semu-
Savebis an araswori daprogramebis Sedegad. logikuri
Secdomebis arseboba imis maniSnebelia, rom saWiroa
wina etapebis guldasmiT gadamowmeba, algoriTmSi da
programaSi Sesabamisi Sesworebebis Setana. es proce-
dura dakavSirebulia drois mniSvnelovan danaxarjeb-
Tan.
amocanis gadawyveta. programis gamarTvis Semdeg
adgili aqvs kompiuterze amocanis uSualod gadawyve-
tas, romlis drosac kompiuterSi Seitaneba sawyisi
monacemebi da programis Tvlaze gaSvebis Sedegad sa-
Wiro rezultatebi miiReba.

2.2. algoriTmis cneba
amocanebis gadawyvetis procesSi algoriTmebis
SemuSaveba erT-erTi yvelaze mniSvnelovani da pasux-
sagebi etapia. am etapze adgili aqvs im elementarul
moqmedebaTa Tanmimdevrobis gansazRvras, romelsac
SemdgomSi kompiuteri uSualod asrulebs. cxadia, al-
goriTmis SemuSavebis procesSi Secdomebis daSveba da-
uSvebelia, radgan igi, Tavis mxriv, gamoTvliT pro-
cess arasworad warmarTavs da Sedegic araswori mii-
Reba.
13

algoriTmi Tanamedrove maTematikis fundamenturi
cnebebis ricxvs miekuTvneba da igi specialuri dis-
ciplinis - algoriTmebis Teoriis kvlevis obieqts
warmoadgens.
algoriTmis Sedgenis process algoriTmizacias
uwodeben.
termini algoriTmi me-9 saukunis cnobili uzbeki
moazrovnis muhamed ben musa al-xorezmis saxelis la-
Tinur transkrifcias ukavSirdeba (Algorithmi). rogorc
cnobilia, al-xorezmma Camoayaliba ariTmetikuli moq-
medebebis wesebi. misma traqtatebma ariTmetikasa da
algebraSi, romelic me-12 saukuneSi laTinur enaze
Targmnes, mniSvnelovani gavlena iqonia maTematikis
ganviTarebaze dasavleT evropaSi. aqedan gamomdinare,
Tavdapirvelad algoriTmis qveS gulisxmobdnen mra-
valniSna ricxvebze mxolod oTxi ariTmetikuli moq-
medebis Sesrulebis wesebs. mogvianebiT ki algoriTms
aigivebdnen evklides SromebSi mocemuli ori ricxvis
udidesi saerTo gamyofis moZebnis wesTan (evklides
algoriTmi).
amJamad, termini algoriTmi sxvadasxva saxis calke-
uli wesebis sazogado saxelia da igi Semdegnairad
aris ganmartebuli: algoriTmi garkveul miTiTebaTa
sasruli mimdevrobaa, romlis Sesruleba saSualebas
gvaZlevs miviRoT mocemuli amocanis amonaxsni.
moviyvanoT algoriTmebis ramdenime magaliTi.
algoriTmi 1. ganvixiloT evklides algoriTmi,
romlis saSualebiTac SeiZleba amoxsnil iqnes Semde-
gi tipis amocana: vipovoT mocemuli ori naturaluri
a da b ricxvis udidesi saerTo gamyofi.
rogorc cnobilia, ori ricxvis udidesi saerTo
gamyofi (usg) ewodeba im udides ricxvs, romelzec
unaSTod iyofa mocemuli ricxvebi. mis mosaZebnad sa-
Wiroa TanmimdevrobiT SevasruloT Semdegi operacie-
bi: Tavdapirvelad udidesi ricxvi gavyoT umciresze,
Semdeg umciresi ricxvi gavyoT miRebul naSTze, Sem-
14

deg pirveli naSTi gavyoT meore naSTze da a.S. opera-
ciebi gavagrZeloT manam, sanam naSTi nulis toli ar
gaxdeba. rigiT bolo gamyofi udides saerTo gamyofs
warmoadgens. vinaidan gayofis operacia mravaljergan-
meorebad gamoklebis operaciaze daiyvaneba, amitom
algoriTmi SeiZleba Semdegnairad iqnes formulirebu-
li.
1. Tu b a > , maSin gadavideT me-3 punqtze, winaaRmdeg
SemTxvevaSi - me-2 punqtze;
2. Tu a b > , maSin gadavideT me-4 punqtze, winaaRmdeg
SemTxvevaSi - me-5 punqtze;
3. a -s gamovakloT b da miRebuli sxvaoba CavTvaloT
a -s mniSvnelobad. davbrundeT 1-l punqtSi;
4. b -s gamovakloT a da miRebuli sxvaoba CavTvaloT
b -s mniSvnelobad. davbrundeT 1-l punqtSi;
5. a -s an b -s miRebuli mniSvneloba CaiTvleba
udides saerTo gamyofad. dasasruli.
aRniSnuli algoriTmi gamoviyenoT konkretuli
ricxvebis udidesi saerTo gamyofis mosaZebnad. davuS-
vaT, rom 95 = a da 60 = b . maSin evklides algoriTmis
Tanaxmad Sesrulebuli punqtebis mimdevroba da am
dros miRebuli a da b sidideebis cvladi mniSvnelo-
bebi warmodgenilia 1-l cxrilSi.
cxrili 1
a b
algoriTmis
bijebi
95 60 1, 3
35 60 1, 2, 4
35 25 1, 3
10 25 1, 2, 4
10 15 1, 2, 4
10 5 1, 3
5 5 1, 2, 5

15

marTlac, 1-li punqtis Tanaxmad Sesrulebuli ope-
raciis Sedegad gadavdivarT me-3 punqtze, radgan
b a = > = 60 95 . me-3 punqtis Tanaxmad a -s mniSvneloba
gaxda toli 35 60 95 = = a , xolo b winandeburad to-
lia 60 = b . me-3 punqtSi mocemuli miTiTebis Sesabami-
sad gadavdivarT 1-l punqtze, romlis Sesrulebis
Sedegad gadavdivarT me-2 punqtze, radgan b a >
utoloba mcdaria. me-2 punqtSi mocemuli miTiTebis
Sesabamisad gadavdivarT me-4 punqtze, sadac gamoiTv-
leba b -s axali mniSvneloba 25 35 60 = = b da gada-
valT kvlav 1-l punqtze da a.S. analogiuri procese-
bis gameorebis Sedegad miviRebT, rom mocemuli a da
b ricxvebis udidesi saerTo gamyofia cifri 5.
algoriTmi 2. ganvixiloT algoriTmi, romelic
"eratosTenes saceris" saxeliTaa cnobili.
elementaruli maTematikis kursidan cnobilia, rom
erTisagan gansxvavebul mTel, dadebiT ricxvebs, rom-
lebic unaSTod iyofa mxolod erTsa da Tavis Tavze,
martivi ricxvebi ewodeba. martivi ricxvebia, magali-
Tad, 2,3,5,7,11 da sxv. ZvelberZenma mecnierma
eratosTenem, romelic Cvens welTaRricxvamde III-II
saukuneebSi moRvaweobda, SeimuSava wesi im martivi
ricxvebis gansazRvrisa, romelTa mniSvneloba n -s ar
aRemateba. aRniSnuli wesi SeiZleba aRweril iqnes Sem-
degi algoriTmiT.
1. TanmimdevrobiT CamovweroT yvela naturaluri ri-
cxvi 1-dan n -mde. gadavxazoT 1. gadavideT me-2 punq-
tze;
2. davuSvaT, rom m cvlads mivaniWeT ricxvi 2-is
mniSvneloba. gadavideT me-3 punqtze;
3. Tu n m s
2
, maSin gadavideT me-4 punqtze, winaaRmdeg
SemTxvevaSi me-6 punqtze;
4. ricxvebis mocemul mimdevrobaSi 1 + m ricxvidan
dawyebuli gadavxazoT TiToeuli me- m ricxvi (yu-
16

radRebas nu mivaqcevT, Tu igi adre gadaxazuli
iyo). gadavideT me-5 punqtze;
5. mocemul ricxvTa mimdevrobaSi m-is Semdeg pirve-
li gadauxazavi ricxvi CaiTvalos m-is axal
mniSvnelobad. davbrundeT me-3 punqtze;
6. ricxvTa mimdevrobis yvela gadauxazavi ricxvi Ca-
iTvleba martiv ricxvebad. dasasruli.
algoriTmi 3. ganvixiloT e.w. sayofacxovrebo al-
goriTmi. rogorc cnobilia, Cais dasayeneblad saWi-
roa vixelmZRvaneloT Semdegi miTiTebebis mimdevro-
biT.
1. Cais dayenebis win Caidani mduRare wyliT gamovav-
loT;
2. CaidanSi CavyaroT Cai, masSi CavasxaT mTeli mocu-
lobis 4 / 3 nawili mduRare wyali da gavaCeroT 5-6
wuTi;
3. Caidani dayenebuli CaiT SevavsoT mduRare wyliT;
4. gemovnebis mixedviT CavasxaT finjanSi.
Cais dayenebis wesi nebismieri adamianisaTvis cnobi-
lia. misTvis rom algoriTmis saxe migveca Cven mxo-
lod davnomreT aRniSnuli wesis TiToeuli miTiTeba.
msgavsi algoriTmebi mravlad SeiZleba movipovoT, Tu
CavixedavT samzareulo wignebSi, mebaReobis, mebostne-
obisa da meyvavileobis popularul saxelmZRvaneloeb-
Si, sayofacxovrebo teqnikis moxmarebis instruqciebSi.
maT SeiZleba mivakuTvnoT agreTve is brZanebebi, rom-
liTac sxvadasxva sawarmoSi momuSave personalis moq-
medeba ganisazRvreba. Cven drois umetes nawils algo-
riTmebis Sesrulebaze vxarjavT.

2.3. algoriTmebis ZiriTadi Tvisebebi
algoriTmebi mTeli rigi saerTo niSanTvisebebiT
xasiaTdebian, romelTagan aRsaniSnavia:
1. universaloba. rogorc wesi, algoriTmi muSavdeba
ara calkeuli amocanebisTvis an calkeuli sawyisi
monacemebisTvis, aramed amocanebis farTo klasisT-
17

vis da sawyisi monacemebis sxvadasxva mniSvnelobe-
bisTvis. ase, magaliTad, evklides algoriTmSi saw-
yis monacemad SeiZleba aviRoT nebismieri mTeli
dadebiTi ricxvebis wyvili.
2. diskretuloba. erT-erTi ZiriTadi moTxovna, rome-
lic algoriTmis SemuSavebis dros aucilebelia
dakmayofildes, aris gamoTvliTi procesis iseT
elementarul etapebad danawevreba, romelTa Sesru-
leba eWvs ar iwvevs. aseTi saxiT miRebuli Canaweri
warmoadgens miTiTebaTa mowesrigebul erToblio-
bas, romelic algoriTmis diskretul (wyvetil)
struqturas warmoadgens. es Tviseba gansakuTrebiT
TvalnaTliv Cans `sayofacxovrebo algoriTmebSi.
3. determinirebuloba. algoriTmis TiToeuli punqti
saWiroa formulirebul iqnes ise, rom misi reali-
zaciis dros Semsruleblis moqmedebebi calsaxad
ganisazRvros. amitom erTidaigive sawyisi monaceme-
bis dros algoriTmis rogorc saboloo, ise Sua-
leduri Sedegebi, da, agreTve, TiToeuli punqtis
Sesrulebis mimdevroba sxvadasxva Semsruleblis
SemTxvevaSic identuri iqneba. ase, magaliTad, 95-sa
da 60-is udidesi saerTo gamyofis mosaZebnad gamo-
TvliTi procesi yovelTvis im mimdevrobiT wari-
marTeba, rogorc es 1-l cxrilSia warmodgenili
da, amasTan, igive Sedegi miiReba.
4. Sedegianoba. nebismieri algoriTmi xasiaTdeba Se-
degianobiT, rac imaSi mdgomareobs, rom nebismieri
dasaSvebi sawyisi monacemebisa da algoriTmis yve-
la punqtis zustad Sesrulebis SemTxvevaSi ga-
moTvliTi procesi sasruli raodenobis bijis Sem-
deg Sewydeba da ama Tu im sizustiT saZebni re-
zultati miiReba. im SemTxvevaSi, roca saboloo
Sedegis miReba SeuZlebelia, maSin gamoTvliTi
procesi usasruloa da igi arasdros Sewydeba an
erT-erT bijze misi Sesruleba garkveul winaaRmde-
gobas waawydeba. ase, magaliTad, zemoT ganxiluli
18

evklides algoriTmi Sedegs mxolod mTeli dade-
biTi ricxvebis SemTxvevaSi iZleva. winaaRmdeg Sem-
TxvevaSi gamoTvliTi procesi usasrulod gagrZel-
deba. aRniSnuli algoriTmis gamoyeneba 0 da 0
ricxvebis udidesi saerTo gamyofis mosaZebnad
aseve mcdar Sedegs iZleva: algoriTmis Tanaxmad,
igi nulis tolia, maSin roca sanamdvileSi igi sa-
erTod ar arsebobs. garda amisa, SesaZlebelia Sem-
Txvevebi, roca garkveuli algoriTmiT zogierTi
moqmedebebis Sesruleba SeuZlebelia da gamoTvli-
Ti procesi romelime punqtze Sewydeba. ase, magali-
Tad, ) 1 /(
2
x x y = formulis saSualebiT y -s gamo-
Tvlis algoriTmi Sewydeba gayofis etapze, roca
1 = x , radgan am SemTxvevaSi adgili eqneba nulze
gayofas.
ganxiluli magaliTebi imaze metyvelebs, rom sazo-
gadod, algoriTmis SemuSavebis dros saWiroa ganisaz-
Rvros misi gamoyenebis are, rac, Tavis mxriv, ukavSir-
deba simravles im sawyisi monacemebisa, romlisTvisac
algoriTmi Sedegiania.
algoriTmebis SemuSaveba mniSvnelovanwilad Semoq-
medebiTi, evristikuli procesia. igi, rogorc wesi, sa-
Wiroebs erudicias, gamomgoneblobis unarsa da ara-
tradiciul midgomas. magram mas Semdeg, rac algoriT-
mi SemuSavdeba, Sesabamisi amocanebis gadawyveta ukve
meqanikurad Sesruldeba da, cxadia, es procesi iqneba
avtomatizebuli. aRniSnuli faqti TvalnaTliv adas-
turebs ara marto algoriTmebis mniSvnelobas, romel-
Ta SemuSaveba nebismieri amocanis avtomatizebuli ga-
dawyvetis aucilebel etaps warmoadgens, aramed algo-
riTmebis Teoriis mniSvnelobasac, romelic mkacr mec-
nierul, maTematikur safuZvelze maTi SemuSavebis, ana-
lizisa da gardaqmnis saSualebas gvaZlevs.


19

Tavi III
algoriTmebis gamosaxvis formebi
SemuSavebuli algoriTmi momxmareblisTvis rom ga-
sagebi gaxdes, saWiroa gamosaxvis konkretuli saSua-
lebebis safuZvelze misi formalizacia, romelic gar-
kveuli wesebis dacviT unda ganxorcieldes. algoriT-
mebis gamosaxvis mravali forma arsebobs, romelic
erTmaneTisagan simartivis, TvalsaCinoebis, formali-
zaciis xarisxis, kompaqturobisa da sxv. maCveneblebis
mixedviT gansxvavdeba.
algoriTmebis TeoriaSi ZiriTadad gavrcelebulia
algoriTmebis gamosaxvis Semdegi formebi: sityvieri,
grafikuli, sxvadasxva formaluri algoriTmuli ene-
bis safuZvelze SemuSavebuli saSualebebi da sxv.

3.1. sityvieri forma
algoriTmebis gamosaxvis sityvieri forma Sedare-
biT yvelaze gavrcelebuli formaa. am formiT algo-
riTmebis warmodgenisaTvis Cveulebrivi salaparako
ena gamoiyeneba. amis naTeli magaliTia meore parag-
rafSi ganxiluli algoriTmebi.
sityvieri formiT warmodgenil algoriTmebSi spe-
cialuri SeTanxmebebisa da daSvebebis safuZvelze Se-
saZlebelia maTi SedarebiT kompaqturad Cawera. qve-
moT mocemulia evklides algoriTmis kompaqturi va-
rianti.
algoriTmi 4 (evklides algoriTmi).
1. dasawyisi;
2. sawyisi monacemebis Setana ( a , b );
3. Tu b a > , maSin gadavideT me-5 punqtze, winaaRm-
deg SemTxvevaSi - me-4 punqtze;
4. Tu a b > , maSin gadavideT me-6 punqtze, winaaRm-
deg SemTxvevaSi - me-7 punqtze;
5. b a a = ; gadavideT me-3 punqtze;
20

6. a b b = ; gadavideT me-3 punqtze;
7. usg a = ;
8. Sedegis (usg) amobeWdva;
9. dasasruli.
meoTxe algoriTmi, pirvelisgan gansxvavebiT, Sei-
cavs algoriTmis dawyebisa da damTavrebis aRmniSvnel
miTiTebebs. garda amisa, vinaidan nebismieri algoriT-
mis SemuSavebis dros saWiroa gaviTvaliswinoT misi
kompiuteruli realizaciac, amitom aq damatebulia sa-
wyisi monacemebis kompiuterSi Setanisa da saboloo
Sedegis monitoris ekranze an sabeWd mowyobilobaze
gamotanis miTiTebebic (punqtebi 2 da 8).
Semdegi tipis frazebis " x -s gamovakloT y da mi-
Rebuli sxvaoba CavTvaloT x -is mniSvnelobad", "Cav-
TvaloT, rom x tolia y -is" nacvlad gamoyenebulia
Canawerebi " y x x = " da " y x = ". es saSualebas gvaZ-
levs SedarebiT kompaqturad CavweroT me-3, me-4 da me-5
punqtebi. im punqtebSi, sadac miTiTebuli ar aris ga-
dasvlis mimarTuleba (punqtebi 2 da 7), igulisxmeba
rigiT Semdeg punqtze gadasvla.
saWiroa SevniSnoT, rom maTematikuri Tvalsazri-
siT, Canaweri y x x = mcdari gamosaxulebaa. igi arc
igiveobaa, arc gantoleba da arc tolobis piroba. ga-
ugebaria, ra unda daviTvaloT amgvari formuliT? sa-
magierod, algoriTmebis TeoriaSi msgavs gamosaxule-
bas garkveuli datvirTva gaaCnia, vinaidan niSani " =",
romelic maTematikaSi gamoiyeneba rogorc tolobis
piroba, igiveobis niSani, gantolebis niSani da, bo-
los, Cveulebrivad, formulis niSani, aq miniWebis ope-
racias aRniSnavs. aqedan gamomdinare, zemoT aRniSnu-
li Canaweri Semdegnairad ikiTxeba: x -s mivaniWoT
y x sxvaobis mniSvneloba. analogiurad ikiTxeba Ca-
naweri " y x = ": x -s mivaniWoT y -is mniSvneloba.
miniWebis operaciis Sesrulebis wesidan gamomdina-
reobs, rom algoriTmebis TeoriaSi dasaSvebia Sem-
Txveva, roca erTidaigive cvladi miniWebis " =" niSnis
21

rogorc marcxniv, ise marjvniv mdebareobs. magaliTad,
1 + = x x , y y = , z z sin = da a.S.
algoriTmebis warmodgenis sityvieri forma mTeli
rigi naklovanebebiT xasiaTdeba, romelTagan ZiriTa-
dia mkacri formalizaciisa da gamoTvliTi procesis
uqonloba. miuxedavad amisa, igi nebismieri sirTulis
algoriTmebis gamosaxvis saSualebas iZleva.
savarjiSo 1. vTqvaT, mocemulia raRac
N
a a a , , ,
2 1

elementebis mimdevroba.

=
=
N
i
i
a y
1
formulis safuZvel-
ze SevadginoT aRniSnuli elementebis jamis gamoTv-
lis algoriTmi sityvieri formiT.
algoriTms aqvs Semdegi saxe:
1. dasawyisi;
2. 0 = y ; 1 = i ;
3.
i
a y y + = ;
4. Tu N i = , maSin gadavideT me-6 punqtze, winaaRm-
deg SemTxvevaSi me-5 punqtze;
5. 1 + = i i ; gadavideT me-3 punqtze;
6. amobeWdva ( y );
7. dasasruli.
savarjiSo 2. SevadginoT
1 3
3
2
+

=
x
x
y gamosaxulebis
gamoTvlis algoriTmi sityvieri formiT (miTiTeba: ga-
moviyenoT damxmare z cvladi Sualeduri mniSvnelo-
bis dasamaxsovreblad). algoriTms aqvs Semdegi saxe:
1. dasawyisi;
2. x -is wakiTxva ( x -is konkretuli mniSvnelobis
Setana);
3. x z = 3 ;
4. z z = ;
5. 1 + = z z ;
22

6. x x y = ;
7. 3 = y y ;
8. z y y / = ;
9. amobeWdva ( y );
10. dasasruli.

3.2. grafikuli forma
algoriTmis grafikul gamosaxulebas blok-sqema
ewodeba. blok-sqemis TiToeuli Semadgeneli ubani
garkveuli formis geometriuli figurebiT gamoisaxe-
ba. TiToeuli figura gamoTvlebis erT garkveul
etaps aRniSnavs da mas bloks uwodeben. qvemoT moce-
mul me-2 cxrilSi warmodgenilia daprogramebis praq-
tikaSi gamoyenebuli da yvelaze gavrcelebuli bloke-
bi, romlebic aucilebelia nebismieri blok-sqemis
Sedgenis dros. Cveulebriv, blokis SigniT iwereba
teqsti, romelic Sesasrulebel moqmedebas akonkre-
tebs. im SemTxvevaSi, Tu teqsti ar eteva blokis Car-
CoebSi, maSin igi calke, SeniSvnis (komentaris) saxiT
mieTiTeba.
SeniSvna: a =10 mm, 15 mm an 20 mm; b =1,5 a ; dasaSvebia
b =2 a ; konturis xazis sisqe 5 , 1 6 , 0 = S mm; SesaZlebe-
lia a =50 mm, 75 mm an 100 mm.
blok-sqemaSi algoriTmis Sesrulebis Tanmimdevro-
ba Sesasrulebeli operaciebis Sesabamisi blokebis
TanmimdevrobiT SeerTebis safuZvelze xorcieldeba
SemaerTebeli xazebiT, romelsac informaciis nakadis
xazebs uwodeben. nakadis xazebis ZiriTad mimarTule-
bad miCneulia mimarTuleba zevidan qvemoT da marcxni-
dan marjvniv. im SemTxvevaSi, roca erTi blokis meore
blokTan SeerTebis mimarTuleba ZiriTad mimarTule-
bas emTxveva, maSin nakadis xazs, rogorc wesi, mimar-
Tulebis maCvenebeli isari ar ukeTdeba; yvela danar-
Cen SemTxvevaSi ki misi gaTvaliswineba aucilebelia.
23

# dasaxeleba aRniSvna da zomebi funqcia
1. 2 3 4
1.










2.







3.







4.











gamoTvlebis
bloki







logikuri
bloki






modifika-
ciis bloki





winaswar
gansazRvru-
li
procesis
bloki





gamoTvlebis
(operaciebis)
Sesruleba,
romlis
Sedegad
monacemebis
mniSvnelo-
bebi icvleba.

garkveuli
pirobebis
mixedviT
algoriTmis
Sesrulebis
mimarTulebis
amorCeva.

operaciebis
Sesruleba
algoriTme-
bis punqtebis
Sesacvlelad.


adre Sedgeni-
li da calke
aRwerili
algoriTme-
bis gamoye-
neba (qveprog-
ramis an
standartuli
programis
mixedviT
a

0,15a
a

b
a

b
b
a

a
b
24




5.









6.







7.






8.







9.







Setana-
gamotanis
bloki





gaSveba-
gaCerebis
bloki





nakadis xazi




pirveli
tipis
SemaerTe-
beli




meore tipis
SemaerTe-
beli

gamoTvla).


sawyisi mona-
cemebis Seta-
na, saboloo
Sedegebis
gamotana.




monacemebis
damuSavebis
procesis
dasawyisi,
dasasruli,
Sewyveta

blokebs
Soris
kavSiris
miTiTeba.

nakadis gaw-
yvetil xa-
zebs Soris
kavSiris
miTiTeba.


sxvadasxva
furclebze
ganTavsebuli
algoriTmis
nawilebs So-
D=0,5a
a

0,25a
0,25a
b
0,5a




0
,
5
a













0
,
2
a






0
,
5
a

b
R=0,25a R
25


blokTan mimarTebaSi informaciis nakadis xazi Se-
iZleba iyos Semavali da gamomavali. blokSi Semavali
nakadis xazebis raodenoba principialurad SezRudu-
li ar aris, blokidan gamomavali nakadis xazi ki mxo-
lod erTia SesaZlebeli. gamonakliss logikuri blo-
ki warmoadgens. mas gaaCnia aranakleb ori gamomavali
nakadis xazi, romelTagan TiToeuli Seesabameba logi-
kuri pirobis erT-erT SesaZlo variants. am
SemTxvevaSi saWiroa nakadis xazebis markireba sityve-
biT `ki da `ara ise, rogorc es naCvenebia naxazze 1.

10.









11.






12.










komentari





ris kavSiris
miTiTeba.
sqemis
elementsa da
ganmartebas
Soris
kavSiris
miTiTeba

















0,5a
a

nakadis
xazebis
Serwyma



nakadis
xazebis
gadakveT
a
nakadis
xazebis
gadakveTa
a
26










blok-sqemis aRweris gaadvilebis mizniT yvela
bloki, gaSveba-gaCerebis blokis garda, Tanmimdevro-
biT inomreba. nomeri iwereba blokis zemoT marcxena
kuTxeSi (nax. 2).











erTmaneTisagan daSorebul blokebs Soris nakadis
xazebi SeiZleba gavwyvitoT, magram gawyvetis werti-
lebSi orive mxridan saWiroa movaTavsoT pirveli ti-
pis SemaerTebeli, romelic identificirebuli iqneba
romelime asoTi, cifriT an maTi kombinaciiT (nax. 3).







12
A
13
A
nax. 2

ara

ara

ki

ki
a<b a>b
nax. 1

ara
8
ki

B2
9
B2
nax. 3
27

SedarebiT rTuli algoriTmebis SemuSavebisa da
maTi gamosaxvis dros SesaZlebelia naxazi gadaitvir-
Tos urTierTgadamkveTi nakadis xazebiT. aseT SemTxve-
vaSi dasaSvebia erTmaneTisgan daSorebul blokebs So-
ris nakadis xazebis gawyveta. Tu nakadis xazebiT erT-
maneTTan dakavSirebuli blokebi sxvadasxva furcleb-
zea moTavsebuli, maSin saWiroa gamoyenebul iqnas meo-
re tipis SemaerTebeli, romelSic Caiwereba furclis
nomeri da im blokis nomeri, romliskenac mimarTulia
nakadis xazi (nax. 4).







im SemTxvevaSi, roca algoriTmis blok-sqema erT
furcelze ar eteva da igi ramodenimezea warmodgeni-
li, maSin nakadis xazis erTi furclidan meoreze ga-
16
15
002

16
furceli 001
001

15
furceli 002

nax. 4
28

dasvlis dasafiqsireblad saWiroa meore tipis Semaer-
Teblis gamoyeneba. amasTan, pirvel furcelze gamoxa-
tul SemaerTebelSi saWiroa Caiweros meore furclis
nomeri da im blokis nomeri, romelsac nakadis xazi
uerTdeba; xolo meore furcelze warmodgenil Semaer-
TebelSi pirveli furclis nomeri da im blokis no-
meri, saidanac nakadis xazi miemarTeba.
blok-sqemebiT algoriTmebis warmodgenis procesi
metad martivia da igi sakmao TvalsaCinoebiT xasiaT-
deba. amasTan, am formiT algoriTmis gamosaxvis pro-
cesSi detalizaciis xarisxi SeuzRudavia. daprograme-
bis praqtikaSi cnobili faqtia, rom roca blok-sqema
rTulia, igi Tavis sailustracio Tvisebas kargavs.
amitom aseT SemTxvevaSi Tavdapirvelad dasaSvebia
mTeli gamoTvliTi procesis zogadi gamsxvilebuli
blok-sqemis Sedgena, xolo Semdeg TiToeuli misi
blokis calke blok-sqemis saSualebiT warmodgena.


3.3. algoriTmebis warmodgenis cxriluri forma
algoriTmebis warmodgenis cxriluri forma metad
mosaxerxebeli formaa. arsebobs sxvadasxva tipis
cxrilebi. Cven ganvixilavT maT Soris or umartivess.
pirveli tipis cxrili gamoiyeneba im SemTxvevebSi,
sadac saWiroa mocemuli formulis saSualebiT gamo-
TvliTi procesis iseTi organizacia, romelic calke-
uli operaciebis mixedviT Sualeduri Sedegebis da-
fiqsirebis saSualebas iZleva. aRniSnuli problemis
gadawyveta dakavSirebulia mocemuli formulis safuZ-
velze elementarul moqmedebaTa Tanmimdevrobis gan-
sazRvrasTan, rac, Tavis mxriv, algoriTmis Sesabamis
miTiTebaTa Tanmimdevrobas ganapirobebs. algoriTmis
aseTi formiT warmodgena, upirveles yovlisa, mizanSe-
wonilia im SemTxvevaSi, roca saWiroa erTi gamosaxu-
lebis ramdenime mniSvnelobis gamoTvla Sesavali si-
dideebis sxvadasxva mniSvnelobebis dros.
29

ganvixiloT sailustracio magaliTi 3.1. wakveTili
konusis moculoba gamoiTvleba Semdegi formuliT:
), (
3
1
2 2
r Rr R H V + + = t
sadac H wakveTili konusis simaRlea, xolo R da r
Sesabamisad zeda da qveda fuZeebis radiusebi. saWi-
roa SevadginoT wakveTili konusis moculobis gansaz-
Rvris cxriluri algoriTmi da misi saSualebiT gamo-
viTvaloT V-s mniSvnelobebi Sesavali H, R da r sidide-
ebis sxvadasxva mniSvnelobebis dros.
mocemuli amocanis gadasawyvetad SevadginoT Sem-
degi saxis cxrili (ix. cxrili 3).

cxrili 3.

H R r
tH tH
R
2
Rr r
2
R
2
+Rr+r
2
V
10
20
30
4
5
7
2
3
5




cxadia, rom cxrilis TiToeuli striqonis Sevsebis
Tanmimdevroba wakveTili konusis moculobis gamoTv-
lis algoriTms gansazRvravs.
ganvixiloT meore tipis cxrili. umartives SemTxve-
vaSi igi oTxi nawilisgan Sedgeba da aqvs nax. 5-ze wa-
rmodgenili cxrilis forma.









30

wesebi

cxrilis
nomeri
1 2 3 4 k
piroba 1 Y N Y - N
piroba 2 - Y Y Y N
piroba 3 Y - Y N -
. . .
piroba n N Y N - Y


moqmedeba 1 x x


moqmedeba 2 x

x
moqmedeba 3 x x x


. . .

moqmedeba m x x

x



cxrilis marcxena mxares zemodan qveviT Camoweri-
lia algoriTmis mixedviT gamoyenebuli yvela piroba
da amocanis gadawyvetis procesSi Sesasrulebeli yve-
la moqmedeba. TiToeuli piroba an moqmedeba erT
striqonSi iwereba. cxrilis marjvena mxare, romelSic
pirobebis Sesrulebis Sedegebi da Sesasrulebeli
moqmedebebi aRiniSneba, ramdenime svetad aris dayofi-
li. TiToeuli sveti Seesabameba TiTo wess, sadac gan-
sazRvrulia Tu romeli pirobebia Sesamowmebeli, ro-
I
V

S
e
s
a
s
r
u
l
e
b
e
l
i

m
o
q
m
e
d
e
b
e
b
i
s

a
R
n
i
S
v
n
a

I
I
I

p
i
r
o
b
e
b
i
s

S
e
s
r
u
l
e
b
i
s

S
e
d
e
g
e
b
i

I

p
i
r
o
b
e
b
i
s

s
i
a

I
I

m
o
q
m
e
d
e
b
e
b
i
s

s
i
a

nax. 5.
31

gori unda iyos Semowmebis Sedegebi da am Sedegebis
mixedviT Tu ra moqmedebebis Sesrulebaa saWiro. wesi
unda iTvaliswinebdes yvela SesaZlo SemTxvevas da
igi specialuri simboloebiT aRiniSneba.
Tu romelime wesSi piroba gamoyenebulia rogorc
elementi, maSin Sesabamisi svetisa da striqonis gada-
kveTaze iwereba Y(ki) an N(ara). pirveli simbolo aR-
niSnavs pirobis Sesrulebas, xolo meore arSesru-
lebas. wesSi gauTvaliswinebeli pirobis SemTxvevaSi
Sesabamis poziciaSi Caiwereba defisi (-). Tu wesiT gan-
sazRvrulia raRac moqmedebis Sesruleba, maSin Sesaba-
misi striqonisa da svetis gadakveTaze Caiwereba sim-
bolo "x", xolo winaaRmdeg SemTxvevaSi pozicia Se-uv-
sebeli darCeba.
Tu pirobebis formulireba iseTia, rom SesaZlebe-
lia mxolod ori pasuxi - "ki" an "ara", maSin aseT
cxrils SezRuduls uwodeben. ("cxrili SezRuduli
SesasvlelebiT").
im SemTxvevaSi, roca pirobebi rTulia da savarau-
do pasuxebis ricxvi orze metia, maSin mizanSewonilia
visargebloT gafarToebuli cxriliT ("cxrili gafar-
Toebuli SesasvlelebiT"), romelic Semdegnairad unda
Seivsos: rTuli pirobis dasawyisi Caiwereba pirobebis
CamonaTvalSi, xolo misi gagrZeleba Sesabamis sveteb-
Si gadanawildeba. martivi pirobis Caweris wesi ki igi-
vea, rac pirvel SemTxvevaSi.
magaliTi 3.2. SevadginoT evklides algoriTmi ga-
farToebuli cxrilis saxiT. algoriTmi warmodgeni-
lia cxrilSi 4.







32

wesebi cxrili 4

cxrili 001
1 2 3
a >b <b =b
a=a-b
x

b=b-a
x

gadavideT 001
cxrilze
x x
usg=a(an b) x
dasasruli x

rogorc cxrilidan Cans, gvaqvs erTi rTuli piro-
ba, romelic amyarebs damokidebulebebs a da b sidide-
ebs Soris. vinaidan aRniSnuli sidideebis Sedarebis
safuZvelze SesaZlebelia adgili hqondes sam SemTxve-
vas: a>b, a<b da a=b, amitom cxrilis marjvena mxare Sed-
geba sami svetisgan, romelic mocemul amocanaSi gar-
kveuli wesebis erTobliobas gansazRvravs. maTi for-
mulireba Semdegia:
I- wesi Tu a>b, maSin SevasruloT moqmedeba a=a-b
da moqmedeba "gadavideT 001 cxrilze";
II- wesi - Tu a<b, maSin SevasruloT moqmedeba b=b-a
da moqmedeba "gadavideT 001 cxrilze";
III- wesi Tu a=b, maSin Sesruldeba moqmedeba
usg=a(an b) da moqmedeba "dasasruli".
aRniSnuli wesebi TanmimdevrobiT Sesruldeba da-
wyebuli pirvelidan. saWiroa yuradReba mivaqcioT im
garemoebas, rom algoriTmis damTavrebas adgili aqvs
maSin, roca pirobiT gaTvaliswinebul moqmedebebSi ar
figurirebs Semdegi tipis moqmedeba "gadavideT 001
cxrilze".





I
II
III
IV
I
33

Tavi IV

algoriTmebis struqtura
gamoTvliT procesSi moqmedebaTa Sesrulebis Tan-
mimdevrobis mixedviT algoriTmebi SeiZleba daiyos
sam jgufad. pirvel jgufs Seadgenen wrfivi struqtu-
ris algoriTmebi, meore jgufs ganStoebuli struq-
turis algoriTmebi, xolo mesame jgufs ki cikluri
struqturis algoriTmebi. qvemoT ganvixilavT aRniSnu-
li struqturis algoriTmebs.

4.1. wrfivi struqturis algoriTmebi
algoriTmebs, romelSic yvela moqmedeba, elementa-
ruli operaciebi wrfivi TanmimdevrobiT, erTimeoris
miyolebiT sruldeba da gamoTvlebis mimarTuleba sa-
wyisi monacemebis konkretul mniSvnelobebze ar aris
damokidebuli, wrfivi struqturis algoriTmebi ewo-
deba.
ganvixiloT wrfivi struqturis algoriTmebis Sed-
genis magaliTebi.
magaliTi 4.1. amocanis maTematikuri formulireba.
ganvsazRvroT samkuTxedis farTobi heronis formu-
liT:
, ) )( )( ( c p b p a p p S = sadac a, b, da c samkuTxedis
gverdebis sigrZeebia, xolo 2 / ) ( c b a p + + = - samkuTxe-
dis naxevarperimetri.
amocanis gadawyvetis algoriTmi:
1. sawyisi monacemebis Setana(a, b, c);
2. naxevarperimetris gamoTvla(p);
3. farTobis gamoTvla(s);
4. Sedegis gamotana (amobeWdva) (s).
algoriTmis blok-sqema warmodgenilia nax. 6-ze.
SeniSvna: mocemul sqemaSi Tavdapirvelad gamoiTv-
leba naxevarperimetris mniSvneloba p, xolo Semdeg
34

farTobis mniSvneloba s, romlis gamosaTvlelad gamo-
iyeneba p. es saSualebas gvaZlevs Tavidan aviciloT
erTidaigive sididis ramdenjerme gamoTvla, rac Tavis
mxriv, amocanis gadawyvetisaTvis saWiro kompiuteruli
drois Semcirebas uzrunvelyofs. sqemaSi blokebi gan-
lagebulia im mimdevrobiT, ra mimdevrobiTac gamoTv-
lebia Sesrulebuli. blokebis nebismieri ga-daadgile-
bis SemTxvevaSi amocanis gadawyveta SeuZlebeli gax-
deba.





















magaliTi 4.2. amocanis maTematikuri formulireba.
gamovTvaloT wakveTili konusis moculoba
1
2
3
4
5
dasawyisi
Setana
a, b, c
p-s gamoTvla
S-is gamoTvla
s-is
gamotana
dasasruli
6
nax. 6
35

), (
3
1
2 2
r Rr R H V + + = t sadac H- wakveTili konusis
simaRlea, xolo R da r- Sesabamisad qveda da zeda fu-
Zeebis radiusebi.
amocanis gadawyvetis algoriTmi. SemovitanoT
Sualeduri parametri:
t=R
2
+Rr+r
2
, maSin V=tHt
1. Setana (R, r, H);
2. t-s gamoTvla;
3. V-s gamoTvla;
4. Sedegis gamotana(V).
algoriTmis blok-sqema warmodgenilia naxazze 7.





















magaliTi 4.3. amocanis maTematikuri formulireba.
gamovTvaloT samkuTxedis samive simaRle Semdegi
formulebis safuZvelze:
dasawyisi
Setana
R, r, H
gamoTvla
t=R
2
+r
2
+Rr
gamoTvla
V=1/3tHt
V-s
gamotana
dasasruli
6
5
4

3
2
1
nax. 7
36

, ) )( )( (
2
c p b p a p p
a a
h =
, ) )( )( (
2
c p b p a p p
b b
h =
, ) )( )( (
2
c p b p a p p
c c
h =
sadac a, b, c- samkuTxedis gverdebia, xolo
p=(a+b+c)/2- samkuTxedis naxevarperimetri.
amocanis gadawyvetis algoriTmi. sazogadod, nebis-
mieri aratrivialuri amocanis gadasawyvetad ramdenime
algoriTmi SeiZleba arsebobdes. alternatiuli algo-
riTmebidan saWiroa SevirCioT saukeTeso raRac krite-
riumis mixedviT. algoriTmebis Sefasebis mravali kri-
teriumidan ufro xSirad irCeven iseT kriteriums, ro-
goricaa amocanis gadawyvetis sizuste, amocanis gada-
wyvetisaTvis saWiro drois danaxarji da sxva.
mocemul amocanaSi erTidaigive gamoTvlebis mra-
valjer gameorebis Tavidan asacileblad, rac uSua-
lod dakavSirebulia droiTi danaxarjebis Semcire-
basTan, saWiroa SemovitanoT Sualeduri parametri:
. ) )( )( ( 2 c p b p a p p t = maSin samkuTxedis simaRleebis
gamoTvlisTvis gveqneba:
a
t
a
h = ,
b
t
b
h = ,
c
t
c
h = .
Sesabamisad algoriTms aqvs saxe:
1. sawyisi monacemebis Setana(a, b, c);
2. naxevarperimetris gamoTvla(p);
3. Sualeduri parametris gansazRvra(t);
4. h
a
simaRlis gansazRvra;
5. h
b
simaRlis gansazRvra;
6. h
c
simaRlis gansazRvra;
7. Sedegis gamotana(h
a
, h
b
, h
c
).
algoriTmis blok-sqema warmodgenilia naxazze 8.

37





























magaliTi 4.4. amocanis maTematikuri formulireba.
gamovTvaloT wakveTili konusis zedapiris farTo-
bi da moculoba:
2 2
) ( r R r R S t t t + + + = ) (
3
1
2 2
r Rr R H V + + = t
amocanis gadawyvetis algoriTmi:
1. sawyisi monacemebis Setana (R, r, l, H);
2. zedapiris farTobis gamoTvla (S);
9
6
dasawyisi
Setana
a, b, c
p=(a+b+c)/2
t=2
) )( )( ( c p b p a p p

dasasruli
h
a
=t/a
h
b
=t/b
h
c
=t/c
h
a
, h
b
, h
c

nax. 8
7
8
4
5
3
2
1
38

3. moculobis gamoTvla (V);
4. Sedegebis gamotana (S,V).
algoriTmis blok-sqema warmodgenilia naxazze 9.





















savarjiSoebi:
1. SevadginoT
c x
c x
y
+
+
=
2
gamosaxulebis gamoTvlis
algoriTmi.
2. gamovTvaloT sami materialuri wertilis simZimis
centris koordinatebi Semdegi formulebiT:
,
3 2 1
3 3 2 2 1 1
m m m
x m x m x m
c
x
+ +
+ +
=
dasawyisi
Setana
R, r, H, l
S-is gamoTvla
V-s
gamoTvla

S, V-s
gamotana
dasasruli
6
5
4

3
2
1
nax. 9
39

,
3 2 1
3 3 2 2 1 1
m m m
y m y m y m
c
y
+ +
+ +
=
sadac, m
1
, m
2
, m
3
- materialuri wertilebis masaa,
xolo (x
1
,y
1
), (x
2
,y
2
), (x
3
,y
3
)- materialuri wertilebis
koordinatebi.
3. qvemoT mocemuli formulis saSualebiT vipovoT im
wertilis koordinatebi, romelic [a
1
,a
2
] monakveTs
gayofs n
1
:n
2
fardobiT:
x=(x
1
+x
2
)(1+); y=(y
1
+y
2
)(1+); sadac =n
1
/n
2
;
x
1
,y
1
- a
1
wertilis koordinatebia, x
2
,y
2
- a
2
wertilis koordinatebi.
4. ganvsazRvroT winaaRmdegobebis mniSvnelobebi eleq-
trul wredSi (nax 10 a-b).
















- varskvlavurad SeerTebuli wredis samkuTxedad
gardaqmnis dros. miTiTeba: gardaqmnis saangariSo
formulebia:
b a
c

R
6


R
5
R
4

nax. 10a

c
b
R
3

R
2

R
1

nax. 10b

40

4
1 R
R
R =
5
2 R
R
R =
6
3 R
R
R = R=R
4
R
5
+R
5
R
6
+R
6
R
4

- samkuTxedad SeerTebuli wredis varskvlavurad
gardaqmnis dros. miTiTeba: gardaqmnis saangariSo
formulebia:

R
R R
R
2 1
4
=
R
R R
R
3 2
5
=
R
R R
R
1 3
6
= R=R
1
+R
2
+R
3




4.2. ganStoebuli struqturis algoriTmebi
praqtikaSi algoriTmebis wrfivi struqturiT war-
modgena iSviaTad aris SesaZlebeli. ase magaliTad:
yvelaze umartivesi gamoTvliTi procesis aRsawerad,
rogoricaa

>
s +
=
0 , 3 2
0 , 3 2
2
2
x x
x x
y
Tu
Tu

wrfivi struqtura ar aris sakmarisi, radgan x cvla-
dis mocemuli mniSvnelobis mixedviT saWiroa erTerTi
formulis amorCeva. amocanebis algoriTmizaciis dros
Zalian xSirad aqvs adgili msgavsi procedurebis ga-
moyenebas, romlis drosac sawyisi monacemebis an Sua-
leduri Sedegebis analizis safuZvelze gamoTvliTi
procesis mimarTuleba icvleba.
algoriTmebs, romlebic aseT procesebs iyeneben,
ganStoebuli struqturis algoriTmebs uwodeben,
xolo mimarTulebebs, romlis mixedviTac gamoTvliTi
procesi mimdinareobs _ algoriTmis Stoebs.
sawyisi an Sualeduri monacemebis analizi xorci-
eldeba logikuri operatoris (logikuri blokis) sa-
41

SualebiT, rac algoriTmSi ganStoebebis warmoqmnas
ganapirobebs. TiToeul konkretul SemTxvevaSi gamoTv-
liTi procesi erT-erTi Stos mixedviT Sesruldeba,
meores mixedviT ki - gamoiricxeba.
ganStoebuli struqturis algoriTmebi SeiZleba
iyos martivi (nax. 11) an rTuli (nax. 12).






























ki
nax. 11

ara
ara
ara
ki
ki
nax. 12
42

martivi struqturis SemTxvevaSi logikur bloks
arcerTi Sto ar Seicavs, rTuli struqturis SemTxve-
vaSi ki igi SeiZleba monawileobdes an erT_erT StoSi
an oriveSi erTad.
ganvixiloT ganStoebuli struqturis mqone algo-
riTmebis sityvieri formiT gamosaxvis organizacia.
aRniSnuli tipis algoriTmebSi rigiTi nomrebis zrda-
dobis mixedviT erTi blokidan meore blokze avtoma-
turi gadasvlis principi yovelTvis ar sruldeba.
xSirad algoriTmis gamoTvliTi sqema nebismieri nom-
ris mqone blokze gadasvlis aucileblobas ganapiro-
bebs. amitom ganStoebuli gamoTvliTi procesis aRwe-
risaTvis gamoiyeneba pirobiTi da upirobo gadasvlis
cnebebi. gadasvla upiroboa, Tu adgili aqvs erTi
blokidan meore blokze TanmimdevrobiT gadasvlis Se-
cvlas yovelgvari pirobis Sesrulebis gareSe, xolo
gadasvla pirobiTia, Tu aRniSnuli procesis Sesa-
cvlelad saWiroa logikuri pirobis Semowmeba.
pirobiTi da upirobo gadasvlebis sityvieri for-
miT warmodgenisTvis specialuri miTiTebebia (brZane-
bebia) gamoyenebuli.
upirobo gadasvlis miTiTebas aqvs Semdegi saxe:
K
0
. gadavediT me_n
0
punqtze, sadac K
0
da n
0
raRac
miTiTebebis rigiTi nomrebia. am SemTxvevaSi K
0
_uri
miTiTebis Semdeg Sesruldeba ara (K
0
+1)_e miTiTeba,
aramed me_n
0
miTiTeba. saWiroa aRiniSnos, rom sxva mi-
TiTebebisgan gansxvavebiT, nebadarTulia upirobo ga-
dasvlis miTiTebis Cawera sxva miTiTebasTan erTad
erT striqonSi, Tu, rasakvirvelia, mas wertil-mZimiT
gamovyofT.
pirobiTi gadasvlis miTiTebas aqvs Semdegi saxe:
K
0
.

Tu

P
,
maSin

gadavideT me- n
0

punqtze, sadac K
0

da n
0
raRac miTiTebis nomrebia, xolo P

Sesamowmebeli
logikuri

piroba, romelsac blok-sqemaSi logikuri
bloki Seesabameba. am SemTxvevaSi gamoTvliTi procesi
Semdegnairad gamoisaxeba:
43

Tu P piroba Sesruldeba (P WeSmaritia), maSin K
0
-
uri miTiTebis Semdeg gamoTvliTi procesi gadadis me-
n
0
miTiTebaze, winaaRmdeg SemTxvevaSi (K
0
+1)-e miTiTeba-
ze.
magaliTi 4.5. SevadginoT ax+b=0 wrfivi gantolebis,
sadac a da b nebismieri ricxvebia, amoxsnis sityvieri
algoriTmi.
rogorc cnobilia, a da b ricxvebis nebismieri
mniSvnelobebis dros SesaZlebelia adgili hqondes
wrfivi ax+b=0 gantolebis amoxsnis sam Sedegs:
I. roca a=0, maSin amonaxsni erTaderTia:
a
b
x = ;
II. roca a=0, maSin gantolebas amonaxsni ar gaaCnia;
III. roca a=0, b=0, maSin gantolebas x-is nebismieri
mniSvneloba daakmayofilebs.
aRniSnulis gaTvaliswinebiT SevadginoT wrfivi
gantolebis amoxsnis sityvieri algoriTmi.
1. Setana (a, b);
2. Tu a=0, maSin gadavideT me-5 punqtze;
3.
a
b
x = ;
4. Sedegis gamotana "x=", x; gadavideT me-8 punqtze;
5. Tu b=0, maSin gadavideT me-7 punqtze;
6. Sedegis gamotana "gantolebas amonaxsni ar
aqvs"; gadavideT me-8 punqtze;
7. Sedegis gamotana "x-nebismieri".
SeniSvna: me-6 da me-7 punqtebSi mocemuli miTiTebe-
bi: Sedegis gamotana "x-nebismieri" da Sedegis gamotana
"gantolebas amonaxsni ar aqvs" saSualebas gvaZlevs
sabeWd mowyobilobaze an monitoris ekranze gamovita-
noT ara ricxviTi monacemebi, aramed teqsturi Setyo-
bineba. aseT SemTxvevaSi saWiroa teqstis brWyalebSi
Casma. aqedan gamomdinare, Semdegi saxis miTiTebebi: Se-
degis gamotana "x" da Sedegis gamotana x araidenturia.
44

pirvel SemTxvevaSi adgili aqvs x simbolos dabeWdvas
(an ekranze gamotanas), xolo meore SemTxvevaSi x
cvladis mniSvnelobis gamotanas. amitomac me-4
miTiTebis elementebi "x=" da x erTmaneTisgan mZimiTaa
gamoyofili.
ganvixiloT ganStoebuli struqturis algoriTmebis
Sedgenis magaliTebi.
magaliTi 4.6. amocanis maTematikuri formulireba.
gamovTvaloT:
xy
z
1
= funqciis mniSvneloba.
erTi SexedviT amocanis gadawyveta SesaZlebelia
wrfivi struqturis algoriTmiT. magram vinaidan al-
goriTmi, sazogadod universalobis gaTvaliswinebiT
unda SemuSavdes, anu, sxva sityvebiT rom vTqvaT, moce-
muli amocana sawyisi sidideebis nebismieri mniSvnelo-
bis dros unda amoixsnas, amitom mizanSewonilia gan-
Stoebuli struqturis algoriTmis Sedgena, romelSic
gaTvaliswinebuli iqneba cvladebis ori saxis mniS-
vnelobebi: nulovani da aranulovani. amgvarad, gamo-
TvliTi procesi SeiZleba aRweril iqnas Semdegi gamo-
saxulebiT:
gamovTvaloT:
xy
z
1
= , roca xy=0 (I Sto).
amovbeWdoT xy=0, roca xy=0 (II Sto).
amocanis gadawyvetis algoriTmi.
1. sawyisi monacemebis Setana(x,y);
2. pirobis Semowmeba xy=0; Tu toloba samarTlia-
nia, maSin amovbeWdoT xy=0, winaaRmdeg SemTxveva-
Si gamovTvaloT
xy
z
1
= ;
3. Sedegis gamotana (z).
algoriTmis blok-sqema warmodgenilia naxazze 13.


45

rogorc naxazidan Cans,
blok-sqemis pirvel Stos
Seadgenen 2, 3, 4 blokebi,
xolo meore Stos 2, 5
blokebi.
1
3
2
dasawyisi
x, y
5
6
nax. 13
7
ki ara
xy=0=
0
"xy=0"
4
dasasruli
z=1/xy

z























savarjiSoebi:
1. SevadginoT qvemoT mocemuli gamosaxulebis gamo-
Tvlis algoriTmis blok-sqema

>
=
<
=
0 ,
, 25
,
2
x nx
x
x x
y
roca
roca
roca
0
0



46

2. gamovTvaloT qvemoT mocemuli funqciis mniSvnelo-
ba:

,
3
y
x
z = roca y=sin(nx)+0,5
3. gamovTvaloT:

>
< <
s
=
b x tgx
b x a x
a x x
z
roca
roca
roca
,
, cos
, sin


4. davalagoT zrdadobis mixedviT a, b, c ricxvebi ise,
rom a cvlads umciresi ricxvi Seesabamos, b
cvlads saSualo, xolo c cvlads udidesi.
5. gamovTvaloT ax
2
+bx+c=0 kvadratuli gantolebis
fesvebi. Tu d=b
2
-4ac>0, maSin fesvebi namdvilia da,
maSasadame, saWiroa gamovTvaloT x
1,2
=e+f. Tu d<0,
maSin fesvebi warmosaxviTia da, maSasadame, saWiroa
e da f gamovTvaloT Semdegi formulebiT:

,
2a
b
e =

.
2a
d
f =


6. gamovTvaloT ax
2
+bx+c=0 kvadratuli gantolebis
fesvebi a, b, c koeficientebis nebismieri mniSvnelo-
bis SemTxvevaSi.
7. gamovTvaloT qvemoT mocemuli funqciebis mniSvne-
lobebi:


a)

>
=
<
=
0 , 1
, 0
, 1
x
x
x
y
roca
roca
roca
0
0


47

x
y=0
-a
-a
y=0
0
y
y=a- x
a
a
nax. 14 a-b
y=a- x
x
1 0 -1
y
y=0
y=1- x
1
y=1- x
b)

s
>
>
= >
1 ,
1 , 1
,
x
x
e
x
x nx
y
roca
1 roca
roca 1


8. gamovTvaloT grafikulad mocemuli funqciebis
mniSvnelobebi x argumentis mniSvnelobebis mixedviT
(ixileT nax. 14 a-b).
9. vipovoT mocemuli ori a da b ricxvebidan udidesis
kvadrati da amovbeWdoT "N=1", Tu a udidesia, "N=2",
Tu b udidesia.
10. ganvsazRvroT (x,y) wertili r radiusian wres ekuTv-
nis Tu ara? amovbeWdoT "N=1", Tu wertili wris
SigniT mdebareobs, an "N=0", Tu wertili wris ga-
reT mdebareobs. (wrewiris gantolebaa z
2
=x
2
+y
2
).




















48

4.3. cikluri struqturis algoriTmebi
cikluri struqturis algoriTmebi danarCeni
struqturis algoriTmebTan SedarebiT yvelaze rTu-
lia.
algoriTmebs, romelSic adgili aqvs gamoTvliTi
procesis calkeuli etapebis mravaljer gameorebas,
cikluri struqturis algoriTmebi ewodeba, xolo ga-
moTvliTi procesis mravaljergameorebad ubnebs, sa-
dac bolo moqmedebis Sesrulebis Semdeg isev pirveli
moqmedeba sruldeba (rogorc wesi, gansxvavebuli ric-
xviTi monacemebiT) _ cikli ewodeba.
cikli amocanis algoriTmizaciisa da daprograme-
bis safuZvels Seadgens. misi gamoyeneba algoriTmis
moculobisa da Sesabamisi kompiuteruli programis
sigrZis mniSvnelovani Semcirebis saSualebas iZleva.
Cveulebriv, ciklis Sesrulebis dros raRac paramet-
ris mniSvneloba TnmimdevrobiT icvleba. am parametrs
ciklis parametri an mmarTveli cvladi ewodeba. misi
saSualebiT, jer erTi, dasamuSavebeli sidideebis
mniSvnelobebi icvleba, xolo, meore mxriv, raRac mo-
mentSi adgili aqvs ciklidan gamosvlas. erT ciklSi
SeiZleba gvqondes ramdenime mmarTveli cvladi (cik-
lis parametri).
ciklis organizaciisaTvis saWiroa SevasruloT
Semdegi moqmedebebi: 1) ciklis dawyebis win davuSvaT
mmarTveli cvladis (parametris) sawyisi mniSvneloba;
2) ciklis yoveli axali gameorebis win SevcvaloT
mmarTveli cvladis (parametris) mniSvneloba; 3) Seva-
mowmoT ciklis damTavrebis an gameorebis piroba; 4)
vmarToT cikli anu SevasruloT ciklis dasawyisSi
gadasvlis procedura, Tu cikli araa damTavrebuli,
an ganvaxorcieloT ciklidan gamosvlis procedura
misi dasrulebis SemTxvevaSi.
gameorebaTa raodenobis gansazRvris wesis mixed-
viT ganasxvaveben ariTmetikul da iteraciul ciklebs.
49

ariTmetikuli ewodeba iseT cikls, romelSic game-
orebaTa ricxvi winaswar cnobilia. mis damaxasiaTe-
bel Tvisebebs Seadgens is, rom misi organizaciisTvis
saWiroa davuSvaT: ciklis parametris sawyisi da sabo-
loo mniSvnelobebi, romelic, Tavis mxriv, gameoreba-
Ta saWiro raodenobas gansazRvravs, da agreTve, cik-
lis parametris cvlilebis kanoni.
magaliTis saxiT ganvixiloT Semdegi amocana.
vipovoT A=(a
1
, a
2
, . . . ,a
20
) veqtoris elementebis jami.
A veqtoris elementebis jamis gamosaTvlelad gamo-
viyenoT formula: S=a
1
+a
2
++a
20
=

=
20
1 i
i
a .
rogorc formulidan Cans amocanis gadasawyvetad
aucilebelia Sekrebis operaciis 20_jer ganxorciele-
ba. Sekrebis operaciis dros yovel wina Sedegs unda
daematos A veqtoris morigi axali elementi. amgvarad,
am SemTxvevaSi adgili aqvs Semdegi saxis mravaljer-
gameorebadi proceduris Sesrulebas: S=S+a
i

SejamebisaTvis A veqtoris elementebis gadarCeva i
indeqsis mniSvnelobebis 1-dan 20-mde erTis toli bi-
jiT TanmimdevrobiTi cvlilebis saSualebiT xor-
cieldeba. maSasadame, mocemul magaliTSi cikli i pa-
rametriT imarTeba.
ciklis parametris saxiT SeiZleba agreTve TviT
cvladis gamoyeneba. magaliTad,
=
=
20
1 x
x V gamosaxule-
bis gamosaTvlelad SeiZleba gamoyenebul iqnas cikli,
romelic iTvaliswinebs Semdegi saxis mravaljer-
gameorebadi proceduris Sesrulebas:
V=V+x
rogorc ganxiluli magaliTebidan Cans, cikluri
struqturis ariTmetikul algoriTmebSi ciklis para-
metris amorCevasa da misi cvlilebis kanonis anu cik-
50

lis raodenobaTa ricxvis marTvis wesebis gansazRvras
arsebiTi mniSvneloba aqvs.
ciklis raodenobaTa ricxvis marTva SesaZlebelia
rogorc pirdapiri mTvlelis, ise ukumTvlelis saSua-
lebiT.
pirdapiri mTvleli. ciklis raodenobaTa ricxvis
dasaTvlelad SeirCeva cvladi, romelic mxolod
mTelricxva mniSvnelobebs iRebs. mas mTvlels uwode-
ben. ciklis TiToeuli gameorebis dros misi mniSvne-
loba erTi erTeuliT izrdeba, riTac mimdinare cik-
lis Sesruleba fiqsirdeba. mTvlelis mniSvneloba ga-
meorebaTa mocemul ricxvTan (etalonur mniSvnelobas-
Tan) Sedardeba, romlis safuZvelze ganxorcieldeba
ciklis dasawyisSi gadasvlis an ciklidan gamosvlis
procedura.
ukumTvleli. am SemTxvevaSi mTvlels mieniWeba eta-
lonuri mniSvneloba. morigi ciklis Sesrulebis Sem-
deg mTvlelis mniSvneloba erTi erTeuliT Semcirde-
ba da miRebuli mniSvneloba nulTan Sedardeba.
Sedarebis safuZvelze ganxorcieldeba ciklis dasaw-
yisSi gadasvlis an ciklidan gamosvlis procedura.
ganvixiloT cikluri struqturis algoriTmebi.
magaliTi 4.7. amocanis maTematikuri formulireba.
gamovTvaloT A=(a
1
, a
2
,,a
20
) veqtoris elementebis
jami formuliT:

=
=
20
1 i
i
a S .

amocanis gadawyvetis algoriTmi blok-sqemis saxiT
warmodgenilia nax. 15-ze. rogorc naxazidan Cans, moce-
muli amocanis gadasawyvetad gamoyenebulia cikluri
struqturis algoriTmi, romelSic ciklis gameoreba-
Ta ricxvi winaswar cnobilia da misi marTva pirdapi-
ri mTvlelis saSualebiT xorcieldeba.
51

5

ki

ara

9
9
9
9
8
1 2
2
1

7
6

5

4
2
3
dasawyisi
Setana
a
1
,a
2,
a
2
0
i=1
S=0
S=S+a
i
i=i+1
i>20
S
dasasruli


ciklis momzadeba
da gawyoba
Mmravaljergameoreba-
di proceduris
Sesruleba
ciklis damTavrebis
pirobis Semowmeba
gameorebaTa ricxvis
mTvleli
1
3
4
2
nax. 15
4


52


9

ki

nax. 16
117b17b
1 2
2
ara


7

5

4

2
dasawyisi
Setana
a
1
,a
2,
a
20
i=20
S=0
S=S+a
i
i=i-1
i<1
S
dasasruli

ciklis momzadeba
da gawyoba
ciklis
damTavrebis
pirobis Semowmeba

Mmravaljergameor
ebadi proceduris
Sesruleba


gameorebaTa
ricxvis mTvleli
1
3
2
4
ciklis parametri i , romlis sawyisi da saboloo
mniSvneloba Sesabamisad 1-isa da 20-is tolia,
ariTmetikuli progresiis kanoniT icvleba 1-is toli
bijiT. ciklis damTavrebis pirobad gamoyenebulia
utoloba i>20, romelic ciklis muSa (ZiriTadi) nawi-
lis boloSia moTavsebuli (bloki 7).
aRniSnuli pirobis samarTlianobis SemTxvevaSi
(i>20) adgili aqvs ciklidan gamosvlas, winaaRmdeg
SemTxvevaSi (is20) ki - ciklis dasawyisSi gadasvlas.
magaliTi 4.8. igive amocana (rac magaliT 4.7-Sia)
gadavwyvitoT ukumTvlelis gamoyenebis SemTxvevaSi.
lok-sqema warmodgenilia nax. 16-ze.
























53

Tavi V
manqanuri enebi, asemblerisa da maRali donis
daprogramebis enebi
algoriTmuli ena C++ ganviTarda C enisagan, rome-
lic Tavis mxriv Seqmnili iqna ori enis: BSPL da B-s
bazaze.
"C"-is ena programist denis riCis mier iqna Camoya-
libebuli da man pirveli gamoyeneba egm-ze 1972 wels
hpova.
Tavdapirvelad "C"-m gaiTqva saxeli, rogorc ope-
raciuli sistema UNIX-is damuSavebis enam, magram,
dRes faqtiurad yvela axali operaciuli sistema
iqmneba daprogramebis ena C an C++ -ze.
daprogramebis ena C++ , rogorc C enis gafarToeba,
SemuSavebuli iqna bern straustropis mier gasuli sa-
ukunis 80-ian wlebSi.
C miekuTvneba daprogramebis procedurul-orienti-
rebadi enebis ricxvs, romlebic orientirebulni arian
moqmedebebze; maSin, rodesac daprogramebis ena C++
obieqtur-orientirebad enas warmoadgens.
C-Si wamyvani adgili ukaviaT funqciebs, xolo C++-
Si daprogramebis safuZvels Seadgens klasebi, romel-
Ta bazazec iqmneba axali obieqtebi. C++ erTgvari "hib-
riduli" enaa, romelic daprogramebis saSualebas iZ-
leva rogorc C-s, aseve obieqtur-orientirebad stil-
Si.
rogorc wesi, programistebi programebs qmnian da-
programebis sxvadasxva enebze, magram imisaTvis, rom
eleqtronulma gamomTvlelma manqanam SeZlos gamo-
Tvlebis ganxorcieleba, saWiroa algoriTmi warmod-
genili iqnas misTvis gasageb enaze. dasmuli amocanis
kompiuterze amoxsnis mizniT Sesabamisi algoriTmis
Cawera xorcieldeba sxvadasxva algoriTmul enebze.
54

algoriTmuli ena warmoadgens simboloebisa da we-
sebis erTobliobas, romelTa saSualebiT aRiwereba
algoriTmis Sesrulebis Tanmimdevroba.
kompiuterTan damokidebulebis mixedviT ganasxvave-
ben: kompiuterze damokidebul da damoukidebel da-
programebis enebs.
daprogramebis enebi SeiZleba daiyos sam ZiriTad
tipad:
1. manqanuri enebi;
2. asembleris enebi;
3. maRali donis daprogramebis enebi.
yovel kompiuters gaaCnia sakuTari manqanuri ena,
anu rogorc mas uwodeben kompiuteris "bunebrivi ena",
romelic formirdeba mocemuli kompiuteris aparatu-
ruli SesaZleblobebis proeqtirebis dros.
manqanuri enebi kompiuterze damokidebul algoriT-
mul enebs miekuTvneba. manqanur enaze Seqmnili progra-
ma warmoadgens cifruli saxiT Caweril manqanur brZa-
nebaTa erTobliobas.
eleqtronul gamomTvlel manqanaze orientirebadi
enebi (asembleri, avtokodi) axloa manqanur enebTan,
magram maTgan imiT gansxvavdebian, rom aq programebi
warmodgenilia ara cifrul kodSi, aramed simboluri
saxiT.
daprogramebisadmi aseTi midgoma martivia momxma-
reblisaTvis, magram sruliad gaugebaria kompiuteris-
Tvis manamde, sanam ar moxdeba programis translireba
manqanur kodSi specialuri Tarjimani programebis mi-
er, romelTac transliatorebi ewodebaT.
daprogramebis procesis daCqarebis mizniT progra-
mistebis mier SemuSavebul iqna maRali donis daprog-
ramebis enebi, romlebic ar arian damokidebuli ama Tu
im kompiuteris konkretul tipze.
im transliatorebs, romlebic maRali donis da-
programebis enaze Caweril programas gardaqmnian man-
qanur kodSi, kompilatorebi ewodebaT.
55

maRali donis daprogramebis enebs miekuTvneba: C,
C++, FORTRAN, PASCAL, COBOL da a.S.


5.1. daprogramebis tipiuri garemo
imisaTvis, rom algoriTmul ena C++-ze Cawerili
esa Tu is programa Sesruldes, saWiroa Semdegi etape-
bis ganxorcieleba:
1. failis redaqtireba;
2. programis winaswari damuSaveba;
3. kompilireba;
4. obieqtis kodis funqciis kodTan dakavSireba;
5. programis CatvirTva;
6. programis Sesruleba.
failis redaqtireba zemoT ganxiluli procesis
pirveli etapia. igi xorcieldeba programebis redaq-
toris mier, romlis saSualebiT programisti axdens
programis kompiuterSi Seyvanas da saWiroebis SemTxve-
vaSi programis Sesworebas (cvlilebebis Setanas).
programa daimaxsovreba damxmare Semnaxvel mowyobi-
lobaze (mag: diskze).
UNIX-is sistemaSi farTod gamoiyeneba ori redaq-
tori: VI da EMACS. C++-is zogierTi programuli
paketi (mag: Borland C++, Microsoft C/C++) Tavad Seicavs
specialur redaqtors.
C++-is sistemaSi programis translaciis etaps win
uswrebs programa, romelic axdens momxmareblis mier
Seqmnili programis winaswar damuSavebas. igi eqvemde-
bareba specialur brZanebebs, romelTac preproceso-
ris direqtivebi ewodebaT. direqtivebi, rogorc wesi,
miuTiTeben ama Tu im cvlilebaTa ganxorcielebis Se-
saxeb programis kompilirebamde.
momdevno etapze adgili aqvs programis kompilire-
bas. kompilatori axdens programis manqanur kodSi ga-
dayvanas. (manqanur kods xSirad obieqtis kodsac uwo-
56

deben). aRniSnuli etapebi sqematurad warmodgenilia
nax. 17-ze.































programis
egm-is mexsie-
rebaSi gan-
Tavseba.
pirveladi
mexsiereba
programis
Seqmna da dis-
kze damaxsov-
reba.
VI etapi
V etapi
IV etapi
III etapi
II etapi
I etapi redaqtori
diski
preprocesori
diski
kompilatori
diski
damakavSirebeli
diski
CamtvirTavi
diski




.
.
.
cgm


.
.


nax. 17
kodis
gardaqmna.
obieqtis
kodis Seqmna.
obieqtis ko-
dis funqciis
kodTan dakav-
Sireba.
cgm-is mier
yoveli brZa-
nebis arCeva
da Sesrule-
ba.
57

C++-ze Seqmnil programebs xSir SemTxvevaSi gaaCni-
aT garkveuli "mimarTvebi" im funqciebze, romlebic
zogjer gansazRvrulia programis gareT, mag: standar-
tul biblioTekebSi. kompilatoris mier Seqmnili obi-
eqtis kodis dakavSireba am funqciaTa kodebTan xor-
cieldeba kompilirebis Semdeg etapze specialuri da-
makavSireblis meSveobiT. aseTi gziT ki sabolood ya-
libdeba CamtvirTavi Sesrulebadi moduli.
momxmareblis mier Seqmnili programis CatvirTvas
kompiuteris mexsierebaSi axorcielebs specialuri Cam-
tvirTavi, ris Semdegac warmoebs misi Sesrulebaze ga-
Sveba da dasmuli amocanis Sedegebis miReba.


5.2. monacemTa tipebi
5.2.1. cvladebi
nebismieri algoriTmuli enis ZiriTad konstruqci-
as Seadgenen: simboloebi, cvladebi, konstantebi (mud-
mivebi), gamosaxulebebi da operatorebi. enis simbolo-
ebs warmoadgenen is ganuyofeli niSnebi, romelTa ga-
moyenebiTac iwereba programaTa teqstebi. es dasaSvebi
simboloebi qmnian mocemuli daprogramebis enis anbans.
cvladebi is monacemebia, romelTa mniSvnelobebi
SeiZleba Seicvalos programis Sesrulebis procesSi.
drois yovel monakveTSi cvlads gaaCnia konkretuli
mniSvneloba, romelsac cvladis mimdinare mniSvnelo-
ba ewodeba. nebismier cvladTan dakavSirebulia kom-
piuteris mexsierebis gansazRvruli ujredi, romelic
emsaxureba cvladis mimdinare mniSvnelobis damaxsov-
rebis process. cvladi inarCunebs Tavis mimdinare
mniSvnelobas manamde, sanam programis Sesrulebis
procesSi mas ar mieniWeba axali mniSvneloba. yovel
cvlads gaaCnia aRniSvna saxeli, romelsac identifi-
katori ewodeba. zogadad identifikatori warmodgeni-
lia im simboloTa erTobliobis saxiT, romelic Sei-
58

cavs laTinuri anbanis asoebs, cifrebs an xazgasmis
simbolos.
C++-Si identifikatori unda iwyebodes laTinuri
anbanis asoTi an xazgasmis simboloTi. masSi dauSvebe-
lia intervalis dasma da daprogramebis mocemuli
enis sakvanZo (koduri) sityvebis gamoyeneba.
arsebobs cvladebis ori saxe: martivi cvladebi da
indeqsiani cvladebi.
martivi cvladis aRsaniSnavad gamoiyeneba mxolod
identifikatori da saWiroebis SemTxvevaSi cvlads
eniWeba konkretuli mniSvneloba.
indeqsian cvladebs identifikatorisa da mniSvne-
lobis garda gaaCniaT erTi an ramdenime indeqsi. in-
deqsiani cvladebis erTobliobis magaliTs warmoad-
gens masivis elementebi.
cvladebi arsebobs: ricxviTi da simboluri. ric-
xviTi cvladi warmoadgens kompiuteris mexsierebaSi
arsebul ujreds an maT jgufs, sadac SesaZlebelia
ricxvis Senaxva.
C++-Si arsebobs cvladebis Semdegi ZiriTadi
tipebi:
1. mTeli tipis cvladebi. isini warmoadgenen mTel
ricxvebs wiladi nawilis garSe da arseboben sa-
xiT: int da long.
- int tipis cvladSi inaxeba mTeli ricxvebi,
romelTa dasaSvebi mniSvnelobebi moTavsebulia
diapazonSi: -32768-dan +32767-mde.
- long (grZeli) tipis cvladSi inaxeba mTeli ric-
xvebi, romelTa dasaSvebi mniSvnelobebi moTavse-
bulia diapazonSi: -2147483648-dan +2147483647-mde.
2. cvladebi mcocavi wertiliT (wiladi ricxvebi).
isini arseboben saxiT: float da double.
- float tipis cvladSi inaxeba dadebiTi da uaryo-
fiTi wiladi ricxvebi, romelTa dasaSvebi abso-
luturi mniSvnelobebi moTavsebulia diapazon-
Si: 3,4X10
-38
-dan 3,4X10
38
-mde.
59

- double (ormagi) tipis cvladSi inaxeba dadebiTi
da uaryofiTi wiladi ricxvebi, romelTa dasa-
Svebi absoluturi mniSvnelobebi moTavsebulia
diapazonSi: 1,7X10
-308
-dan 1,7X10
308
-mde.
3. simboloebi, igive char tipis simboluri cvladebi,
sadac inaxeba ama Tuim anbanur-cifruli simbolos
Sesabamisi mTeli ricxvi. char tipis cvladebi SeiZ-
leba gamoyenebul iqnas mTeli tipis cvladebis sa-
xiT.
garda cvladebis zemoT aRniSnuli tipebisa, arse-
bobs ricxviTi cvladebis kidev erTi damatebiTi tipi:
unsigned - uniSno (mxolod dadebiTi) ricxvebi, romlis
meSveobiT ormagdeba ricxviTi cvladebis dasaSvebi
dadebiT ricxvTa diapazoni. mag: unsigned int tipis
cvladebis dasaSvebi ricxviTi diapazonia: 0-dan 65535-
mde.
kompiuteris mexsierebis ekonomiis mizniT gamoiyene-
ba cvladebis meore damatebiTi tipi short (mokle), ro-
melic axorcielebs kombinaciebs cvladebis zemoT
ganxilul monacemTa tipebTan. SesaZlebelia unsigned
da short tipebis erToblivi gamoyenebac.
nebismieri cvladi programaSi gamoyenebamde unda
gacxaddes (aRiweros), radgan am procesSi adgili aqvs
kompiuteris mexsierebaSi winaswar ujraTa garkveuli
ubnis gamoyofas mocemuli tipis cvladebis mniSvne-
lobaTa Senaxvis mizniT. cvladebis gacxadeba xdeba
Semdegi wesis gaTvaliswinebiT:
pirvel rigSi eTiTeba cvladis tipi, Semdeg misi
identifikatori. rodesac gacxadebis procesSi cvlads
eniWeba konkretuli mniSvneloba, aRniSnul process
cvladis inicializireba ewodeba. Tumca SesaZlebelia
cvlads konkretuli mniSvneloba mogvianebiTac mieni-
Wos.
Tu programaSi ramdenime erTidaimave tipis cvla-
dia, isini SeiZleba aRiweros erT striqonze erTimeo-
risgan mZimis gamoyofiT. mag: int a=5, b, c=10;
60

aRniSnul SemTxvevaSi warmoebs a da c cvladebis
inicializireba da b cvladis aRwera.
Tu programaSi cvladi gamoiyeneba mis gacxadebam-
de, daprogramebis ena C++-is kompilatori monitoris
ekranze aucileblad gamoitans Setyobinebas daSvebu-
li Secdomis Sesaxeb Semdegi saxiT: "Undifined Symbol or
variable x ", rac niSnavs, rom simbolo an cvladi x gan-
sazRvruli ar aris.
cvladebis gacxadeba SesaZlebelia maT gamoyenebam-
de programis nebismier adgilas, Tumca sasurvelia es
procesi Sesruldes programis dasawyisSi.

5.2.2. konstantebi
konstanta (mudmiva) ewodeba sidides, romlis mniSv-
nelobis Secvla programis Sesrulebis procesSi dau-
Svebelia. C++-Si gamoyofen konstantebis sam saxes:
a) simboluri konstantebi (Literal constants);
b) saxelobiTi konstantebi (Labeled constants);
g) CamoTvladi konstantebi (Enumerated constants).
msgavsad cvladebisa, arsebobs mTelricxva konstan-
tebi da konstantebi mcocavi wertiliT.
C++-Si gamoiyeneba wiladi konstantebis Caweris
ori forma. pirveli maTgani warmoadgens maTematikaSi
cnobili wiladi ricxvebis Caweris analogias, im gan-
sxvavebiT, rom mTeli nawili wiladi nawilisgan gamo-
yofilia ara mZimiT, aramed aTobiTi wertiliT. meore
forma ki warmoadgens eqsponencialur notacias, rac
analogiuria fizikaSi arsebuli didi da mcire sidi-
deebis Cawerisa. aRniSnuli notacia Sedgeba ori nawi-
lisgan: mantisasa da maCveneblisgan. mantisa warmodge-
nilia wiladis saxiT, xolo maCvenebeli Sedgeba "E"
simbolosa da mTeli ricxvisgan. mag: ricxvi 6,02X10
23

C++-Si SeiZleba Caiweros Semdegi saxiT:
6.02E23 an 6.02E+23.
61

mantisasa da maCvenebels SeiZleba gaaCndeT niSnebi:
"+"an"-".
konstantebi programaSi gamoyenebamde unda gacxad-
des, risTvisac gamoiyeneba sakvanZo (koduri) sityva
const, romelsac mosdevs konstantas tipi, misi identi-
fikatori da konkretuli mniSvneloba. radgan konstan-
ta mudmivi sididea, amitom gacxadebis procesSive un-
da moxdes misi inicializireba.
konstantebis aRweris nimuSebi:
a) const float pi=3.1416; b) const int A=5.
pirvel SemTxvevaSi xdeba float tipis pi identifika-
toris mqone konstantas inicializireba, ris Sedega-
dac mas eniWeba 3.1416-is toli mniSvneloba; xolo meo-
re SemTxvevaSi int (mTeli) tipis A identifikatoris
mqone konstanta iRebs xuTis tol mniSvnelobas.



















62

Tavi VI
operaciebi C++-Si
6.1. ariTmetikuli operaciebi
daprogramebis ena C++-Si gamoiyeneba Semdegi ariT-
metikuli operaciebi:
Sekreba "+", gamokleba "-", gamravleba "*", gayofa "/"
da mTelricxva gayofiT miRebuli naSTis povna "%".
zemoT ganxiluli yvela ariTmetikuli operacia bi-
narul operaciaTa ricxvs miekuTvneba. (binarulia ope-
racia, romelic ori operandisgan Sedgeba). aRniSnuli
operaciebi sruldeba marcxnidan marjvniv, amitom maTi
asociaturobac marcxnidan marjvnivaa.
C++-Si mTelricxva gayofis Sedegi mTeli ric-
xvia, anu Tu gayofis operaciis orive operandi (gasa-
yofi da gamyofi) mTeli tipis monacemebia, Sedegic
mTeli tipisaa, wiladi nawili ubralod ikargeba (av-
tomaturad ixsneba) da rCeba mxolod mTeli nawili.
mag: 7/4=1 (da ara 1,75).
"%" operacia gamoiyeneba mxolod mTelricxva ope-
randebis SemTxvevaSi. ariTmetikuli operaciebi C++-Si
sruldeba imave TanmimdevrobiT, rogorc maTematikaSi
(operaciaTa prioritetebis gaTvaliswinebiT). arsebul
kanonzomierebas arRvevs mxolod frCxilebi (iseve,
rogorc es xdeba maTematikaSi).

6.2. Sedarebis operaciebi
C++-Si gamoiyeneba Sedarebis Semdegi operaciebi:
Semowmeba tolobaze (udris) "= =", ar udris (gan-
sxvavdeba) "!=", metia ">", metia an toli ">=", naklebia
"<", naklebia an toli "<=". aRniSnuli operaciebi mie-
kuTvneba binarul operaciaTa ricxvs da maTi asocia-
63

turoba marcxnidan marjvnivaa. Sedarebis operaciaTa
nimuSebi warmodgenilia me-5 cxrilSi.
cxrili 5.
operaciis saxe
maTematikaSi
operaciis saxe
C++-Si
a=b a==b
ab a!=b
a>b a>b
ab a>=b
a<b a<b
asb
a<=b

6.3. logikuri operaciebi
logikuri operaciebi gamoiyeneba gamosaxulebaSi
ori an meti pirobis gaerTianebis mizniT.
C++-Si arsebobs Semdegi logikuri operaciebi:
1. "&&" - logikuri "da" anu koniunqcia, romelic moi-
Txovs Tavisi yvela operandis WeSmaritobas.
2. " || " logikuri "an" anu diziunqcia, romelic mo-
iTxovs Tavisi operandebidan erT-erTis WeSmarito-
bas.
3. " ! " - logikuri "ara" (uaryofa), romelic cvlis
Tavisi operandis mniSvnelobas sawinaaRmdego mniSv-
nelobiT.
aRniSnuli operaciebidan mxolod logikuri "ara"
warmoadgens unarul operacias, radgan gaaCnia erTi
operandi. danarCeni logikuri operaciebi binarulia.
ganvixiloT logikur operaciaTa Caweris magaliTe-
bi:
a) (x>0) && (x<=10); (x>0 da xs10. orive pirobis
WeSmaritoba).
b) (y>0) || (y<15); (y>0 an y<15. erT-erTi pirobis
WeSmaritoba).
g) !(x>0); ( Sedegi: xs0 )
64

6.4. miniWebis operacia
C++-Si arsebobs miniWebis operacia, romelic Zireu-
lad gansxvavdeba maTematikuri tolobis niSnisgan,
Tumca amave niSniT gamoisaxeba. igi tolobis niSnis
marcxniv arsebul cvlads aniWebs amave niSnis marjv-
niv moTavsebuli gamosaxulebis mniSvnelobas. mag:
x=x+5 maTematikaSi dauSvebelia, xolo C++-Si savse-
biT realuri dasaSvebi operaciaa, sadac x cvladis
mimdinare mniSvneloba izrdeba xuTiT da miRebuli Se-
degi eniWeba amave x cvlads.
miniWebis operaciis asociaturoba marjvnidan marc-
xnivaa. aRniSnuli operacia saSualebas iZleva ariTme-
tikuli operaciebi Caiweros kompaqturad. es operacie-
bi warmodgenilia me-6 cxrilSi. (sadac a cvladis
mniSvneloba xuTis tolia. a=5).
cxrili 6
operacia nimuSi ganmarteba Sedegi
+=
-=
*=
/=
%=

a+=7
a-=2
a*=3
a/=2
a%=3


a=a+7
a=a-2
a=a*3
a=a/2
a=a%3

a=12
a=3
a=15
a=2
a=2


6.5. inkrementisa da dekrementis operaciebi
C++-Si farTod gamoiyeneba inkrementisa (++) da dek-
rementis (_ _) unaruli operaciebi.
operacias, romlis drosac cvladis mniSvneloba
izrdeba erTiT da miRebuli Sedegi amave cvladSi ina-
xeba, inkrementis operacia ewodeba. mag: x++ an ++x.
65

operacias, romlis drosac cvladis mniSvneloba
mcirdeba erTiT da miRebuli Sedegi amave cvladSi
inaxeba, dekrementis operacia ewodeba. mag: x-- an x.
arsebobs aRniSnuli operaciebis Caweris ori for-
ma:
a) prefiqsuli;
b) postfiqsuri.
prefiqsuli formis gamoyenebis SemTxvevaSi cvla-
dis mniSvneloba jer izrdeba (mcirdeba) da Semdeg ga-
moiyeneba igi gamosaxulebaSi, xolo postfiqsuri for-
mis SemTxvevaSi cvladi jer gamosaxulebaSi gamoiyene-
ba da Semdeg xdeba misi mniSvnelobis inkrementi (an
dekrementi).
magaliTad:
a) x=5; b) x=5;
++x; x++;
y=x+2; y=x+2;
aRniSnuli unaruli operaciebis asociaturoba mar-
jvnidan marcxnivaa.

6.6. terneruli operacia
algoriTmul ena C++-Si arsebobs erTaderTi terne-
ruli (?:) - pirobiTi operacia, romelic sami operandi-
sagan Sedgeba. misi Caweris zogadi saxe Semdegia:
pirobiTi gamosaxuleba? moqmedeba-1 : moqmedeba-2
magaliTad: a>b? "Yes " : "No"
Tu piroba a>b - WeSmaritia, viRebT Sedegs "Yes", wi-
naaRmdeg SemTxvevaSi - Sedegs "No".

sakvanZo (koduri) sityvebi C++-Si
C++-Si arsebobs mTeli rigi sakvanZo (koduri) sit-
yvebisa, romelTa gamoyeneba monacemTa identifikatore-
66

bis saxiT dauSvebelia. am sakvanZo sityvaTa CamonaTva-
li moyvanilia me-7 cxrilSi.

cxrili 7

sakvanZo (koduri) sityvebi C++-Si
C da C++-Si
auto break case char enum continue
default do double else int extern
float for goto if sizeof long
register return short signed unsigned static
struct switch typedef union void
volatile while
mxolod C++-Si
asm catch class delete friend inline
new operator private protected public template
this throw try virtual



6.7. maTematikuri funqciebis biblioTeka
<math>
tipiuri maTematikuri gamoTvlebis gansaxorcieleb-
lad C++-Si gamoiyeneba maTematikuri funqciebis bib-
lioTeka <math>, sadac Tavmoyrilia maTematikur fun-
qciaTa umravlesoba. argumentebis saxiT funqciebs ga-
aCniaT double tipis mniSvnelobebi da amave tipis Sede-
gebsac iZlevian, Tumca SesaZlebelia rogorc argumen-
tebis, ise saboloo Sedegebis saxiT gamoyenebul iqnas
float tipis mniSvnelobebi.
es maTematikuri funqciebi warmodgenilia me-8
cxrilSi.

67

cxrili 8

funqciis
Canaweri
C++-Si
ganmarteba
sin(x) sinx ( x argumenti moicema radianebSi)
cos(x) cosx ( x argumenti moicema radianebSi)
tan(x) tgx ( x argumenti moicema radianebSi)
asin(x) arcsinx ( x argumenti moicema radianebSi)
acos(x) arccosx ( x argumenti moicema radianebSi)
atan(x) arctgx ( x argumenti moicema radianebSi)
sqrt(x)
x kvadratuli fesvi x-dan
pow(x,y)
x
y
x ayvanili y xarisxSi
exp(x)
e
x
eqsponencialuri funqcia
fabs(x)
x x-is moduli (absoluturi mniSvne-
loba)
log(x) lnx naturaluri logariTmi (e-s fuZiT)
log10(x) lgx aTobiTi logariTmi(10-s fuZiT)
ceil(x)
x-is damrgvaleba metobiT momdevno
mTel ricxvamde (aranakleb x-isa)
floor(x)
x-is damrgvaleba naklebobiT momdevno
mTel ricxvamde (araumetes x-isa)
fmod(x,y)
x-is y-ze gayofis Sedegad miRebuli naS-
Ti (aTwiladi ricxvi)







68

6.8. programis Sedgenis struqtura
ganvixiloT daprogramebis ena C++-ze elementaru-
li programis Sedgenis magaliTi:
// The first program.
#include <iostream>
main( )
{
cout<<"Welcome to C++!\n";
return 0;
}
aRniSnuli programa monitoris ekranze beWdavs
teqsts: Welcome to C++! ganvixiloT programis TviToeu-
li striqoni. programa iwyeba simboloebiT " // " (ori
"sleSi"), rac warmoadgens komentaris mimaniSnebels.
daprogramebis karg stilad iTvleba programis komen-
tariT dawyeba.
komentari axdens programis erTgvar dokumentire-
bas. igi exmareba momxmarebels waikiTxos da gaigos
programis arsi. komentarebi, rogorc wesi, ignorire-
bulia C++-is kompilatoris mier.
striqoni #include <iostream> warmoadgens preproceso-
ris direqtivas. C++-Si yoveli striqoni, romelic iwye-
ba "#" simboloTi, aRiqmeba rogorc direqtiva da prog-
ramis kompilaciamde preprocesori iwyebs mis damuSa-
vebas.
aRniSnul SemTxvevaSi am direqtiviT preprocesorma
programaSi unda moaxdinos mimarTva monacemTa nakadu-
ri Setana/gamotanis qudis failze (iostream). igi gamoi-
yeneba yvela programaSi, sadac adgili aqvs monacemTa
Seyvanas klaviaturidan da saboloo Sedegebis ekranze
gamotanas.
main( ) warmoadgens programul bloks, romelsac
programis mTavari funqcia ewodeba. C++-ze Cawerili
programebi SeiZleba Seicavdes ramdenime funqcias, ro-
melTa Soris erTerTi aucileblad unda iyos main( )
69

funqcia, sadac aRwerilia amocanis amoxsnis ZiriTadi
algoriTmi.
aRniSnul funqcias ar gaaCnia argumentebi, magram
radgan is funqcias warmoadgens, amitom SenarCunebuli
aqvs funqciaTa Caweris sintaqsi.
programaSi "{"- Ria figuruli frCxili miuTiTebs
funqciis tanis dasawyisze, xolo "}"- daxuruli mis
dasasrulze.
striqoni cout<<"Welcome to C++!\n"; kompiuters aZ-
levs brZanebas monitoris ekranze dabeWdos brWyaleb-
Si moTavsebuli simboloebisgan Semdgari striqoni.
C++-Si yoveli operatori bolovdeba wertil-mZimiT (;)
da radgan Cvens mier ganxiluli striqoni warmoadgens
operators, igic dasrulebulia wertil-mZimiT.
cout warmoadgens monacemTa ekranze gamotanis ope-
rators. "<<" operacias ewodeba "movaTavsoT nakadSi",
romlis Sesrulebis Sedegad ganxiluli operatoris
marjvniv arsebuli operandi Tavsdeba nakadSi.
simboloebi " \n " ar gamoitaneba ekranze. "\" sim-
bolos ("beqsleSi") uwodeben gadasvlis niSans anu
escape simbolos. igi miuTiTebs specialuri simbolos
gamotanis Sesaxeb. mmarTveli Tanmimdevroba " \n " aR-
niSnavs axal striqons. igi iwvevs kursoris gadaadgi-
lebas ekranze axali striqonis dasawyisSi. C++-Si
arsebobs Semdegi mmarTveli Tanmimdevrobani, romle-
bic warmodgenilia me-9 cxrilSi.
striqoni return 0; - miuTiTebs programis warmatebiT
dasrulebis Taobaze. koduri sityva return funqciidan
gamosvlis erTerTi SesaZleblobaa.
monacemTa nakaduri Setana klaviaturis saSuale-
biT C++-Si xorcieldeba brZanebiT: cin>>monacemebi.





70

cxrili 9

mmarTveli
Tanmimdevroba
a R w e r a
\n
axali striqoni. kursoris gadatana
momdevno striqonis dasawyisSi.
\t
horizontaluri tabulaciis simbolo.
gadaaadgilebs kursors tabulaciis
Semdeg poziciaze.
\r
kursoris gadaadgileba mimdinare
striqonis dasawyisSi. momdevno stri-
qonze gadasvlis akrZalva.
\a
sistemuri zaris bgera.
\\
"beq-sleSi"; beWdavs aRniSnul simbo-
los.
\"
ormagi apostrofebi; beWdavs aRniSnul
simbolos.


operacias ">>" ewodeba "aviRoT nakadidan" da "cin"
obieqtTan erTad igi axdens nakadidan im monacemTa
aRebas, romelsac momxmarebeli mas awvdis klaviatu-
ris meSveobiT.
cout warmodgeba sityvebisgan C (si), output (gamotana)
anu "gamotana C-Si", xolo cin - sityvebisgan C (si), input
(Setana) anu "Setana C-Si".
cout operatorTan xSirad gamoiyeneba nakadis manipu-
latori endl (end line niSnavs striqonis, xazis dasas-
ruls), romelic gamoitans ra axal striqonze gadasv-
lis simbolos, "asufTavebs gamotanis bufers".
1





1
buferi egm-is droebiTi mexsiereba, sadac Tavsdeba moWrili an kopire-
buli obieqtebi.
71

Tavi VII
mmarTveli struqturebi
daprogramebis ena C++-Si gamoiyofa Semdegi mmar-
Tveli struqturebi:
1. mimyoli (wrfivi) struqtura;
2. ganStoebadi (amorCevis) struqtura;
3. cikluri (gameorebis) struqtura.
wrfivi struqturis SemTxvevaSi programis yoveli
momdevno brZaneba mkacrad sruldeba wina brZanebis
Sesrulebis Semdeg. rogorc cnobilia, wrfivi struq-
turis mqone programebis magaliTebi praqtikaSi mcire
raodenobiT moiZebneba.
ganStoebadi struqturis dros adgili aqvs prog-
ramaSi arsebuli brZanebebis Sesrulebis Tanmimdevro-
bis Secvlas gamomdinare ama Tu im pirobidan, rac iw-
vevs masSi erTgvar ganStoebebs.
C++-Si arsebobs ganStoebadi struqturis ganxor-
cielebis sami SesaZlebloba:
- amorCevis struqtura if (Tu);
- amorCevis struqtura if/else (Tu/winaaRmdeg Sem-
TxvevaSi);
- amorCevis struqtura switch (amorCeva).
programuli kodis ama Tu im fragmentis mravalje-
rad gameorebas cikli ewodeba. igi SeiZleba iyos:
ariTmetikuli da iteraciuli.
ariTmetikul ciklSi gameorebaTa ricxvi winaswa-
raa cnobili. aq ciklis mmarTveli parametris (mTvle-
lis) sawyisi da saboloo mniSvnelobebi, aseve misi
cvlilebis biji winaswar gansazRvrulia da moicema
cxadi saxiT. iteraciul ciklebSi, ki gameorebaTa
ricxvi ucnobia da ciklis mmarTveli parametri SeiZ-
leba arc iyos cxadi saxiT warmodgenili.
C++-Si ganixileba cikluri struqturebis sami
saxe:
- cikli while (manamde, sanam);
72

- cikli do/while (cikli/manamde, sanam);
- cikli for (cikli).
rodesac cikluri procesi grZeldeba usasrulod
(ganusazRvreli drois manZilze), programistebi am
process programis Caciklvas uwodeben, xolo Tavad
cikls aRniSnul SemTxvevaSi usasrulo cikli ewode-
ba.
C++-Si Tavs iCens Calagebuli ciklebic. es is Sem-
Txvevaa, rodesac erTi ciklis tanSi Tavsdeba sxva
ciklis tani. cikls, romelSic sxva cikli Tavsdeba,
gare cikli ewodeba, xolo gare ciklis tanSi moTav-
sebul cikls Sida cikli.
Cvens mier ganxiluli sityvebi: if, else, switch, while, do,
for warmoadgenen daprogramebis ena C++-is sakvanZo
(kodur) sityvebs. isini Cadebulia aRniSnuli enis sa-
fuZvlebSi da gamoyenebas hpovebs mis mmarTvel struq-
turebSi.
ganvixiloT wrfivi struqturis mqone programaTa
magaliTebi C++-Si.
magaliTi 7.1. SevadginoT programa, romelic gamo-
Tvlis Z cvladis mniSvnelobas, Tu:
;
2
x y z + = ;
) 1 ln( 1
sin
1
+ +
+ + =
x
x
x y sadac x=0,8.
amoxsna:

// z cvladis mniSvnelobis gamoTvla
#include <iostream>
#include <math>
main( )
{
double z, y, x=0.8;
y=sqrt(1+x)+sin(x)/(1+log(x+1));
z=pow(y,2)+x;
cout<<y=<<y<<endl;
cout<<z=<<z<<endl;
return 0;}
73

magaliTi 7.2. SevadginoT programa, romelic gamo-
Tvlis C cvladis mniSvnelobas, Tu:
;
2
by c = ;
) 1 cos( 4
1
2 / sin 5
+ +

+
=
A
x
xe x
y sadac A=1,5 x=2.

amoxsna:

// c cvladis mniSvnelobis gamoTvla
#include <iostream>
#include <math>
main( )
{
double A=1.5, x=2, c, b, y;
cout<<b=;
cin>>b;
y=(5*sin(x/2)+x*exp(x-1))/(4+cos(A+1));
c=b*pow(y,2);
cout<<y=<<y<<endl;
cout<<c=<<c<<endl;
return 0;
}

magaliTi 7.3. SevadginoT programa, romelic gamo-
Tvlis marTkuTxedis perimetrsa da farTobs, Tu misi
ori aramopirdapire gverdebis sigrZeebia: a=5sm da
b=10sm.

amoxsna:

// marTkuTxedis perimetrisa da farTobis gamoTvla
#include <iostream>
main( )
{
int a=5, b=10, p, s;
p=2*(a+b);
s=a*b;
74

cout<<p=<<p<<endl;
cout<<s=<<s<<endl;
return 0;
}


savarjiSoebi:

qvemoT moyvanil (1-7) magaliTebSi SeadgineT z
cvladis mniSvnelobebis gamoTvlis programebi.

1. ; 1
2
+ = y z
;
2 ) sin(
1 , 0
3
2
A e
x
b x
y
c x+

+ +
=
Tu A=4,5 b=0,25 x=4,5.
2. ); 5 , 5 ln( + = y z
;
) 1 ) (sin( 2
) ( 2
A
c x
e b x
y
c x
+ +
+
=
+
Tu A=7,5 b=3,64 c=0,6
x=0,5.
3. ;
1
2
A x
z
y

+
=
;
3
1 2 1
2 2
2
2 2
A x
A
A x
y

+
+

=
Tu A=0,3 x=0,7.
4.
; 1
3
= y z

;
cos 1
sin 1
) 1 , 1 (
2
2
x
x
e A y
x
+
+
=
Tu A=5 x=3.
5.
;
2
Ax y z + =

;
) 2 ln(
cos
3
2 |
|
.
|

\
|
+
+
= Ax
x
Ax
y
Tu A=0,5 x=1,2.
6.
; sin y Ay z =

; sin
2
1
x
e
e
y
x
x
+
+
+
=
Tu A=10 x=1,5.
7.
;
2 2
y x z =

;
1
) ln(
+
+ +
=
x
e
x B A
y
Tu A=2,8 x=1,5 B=-1.
8. SeadgineT programa, romelic gamoTvlis kvadratis
perimetrsa da farTobs, Tu misi gverdis sigrZea:
a=2,5 sm.
9. SeadgineT programa, romelic gamoTvlis ABC
marTkuTxa samkuTxedSi A kuTxis gradusul zomas,
Tu ZC=35.
75

10. SeadgineT programa, romelic heronis formulis
gamoyenebiT gamoTvlis ABC samkuTxedis farTobs,
Tu misi gverdebis sigrZeebia: a=2sm, b=3sm, c=4sm.
11. SeadgineT programa, romelic gamoTvlis marTkuTxa
paralelepipedis moculobas. (sawyisi monacemebi
Tavad SeitaneT).
12. SeadgineT programa, romelic gamoTvlis trapeciis
farTobs (sawyisi monacemebi Tavad SeitaneT).
13. SeadgineT programa, romelic gamoTvlis marTkuTxa
samkuTxedis farTobs (sawyisi monacemebi Tavad Sei-
taneT).
14. SeadgineT programa, romelic gamoTvlis kubis mo-
culobas (sawyisi monacemebi Tavad SeitaneT).
15. SeadgineT programa, romelic gamoTvlis sferuli
segmentis farTobs (sawyisi monacemebi Tavad Seita-
neT).



















76

Tavi VIII
pirobiTi gadasvlis operatorebi
8.1. amorCevis struqtura if
rogorc cnobilia, arCevani iTvaliswinebs pirobas,
romelsac Tan sdevs esa Tu is moqmedeba. mag: Tu wvims,
saWiroa qolgis gamoyeneba. am SemTxvevaSi pirobas
warmoadgens modis Tu ara wvima, xolo moqmedebas
qolgis gamoyeneba. moqmedeba sruldeba mxolod piro-
bis Sesrulebis SemTxvevaSi e.i. arCevanis gakeTebis sa-
fuZvels Seadgens esa Tu is piroba.
daprogramebis drosac xSirad gamoiyeneba gadawyve-
tilebis miRebis analogiuri procesi.
C++-Si amorCevis struqtura if saSualebas iZleva
SevasruloT esa Tu is moqmedeba mxolod im SemTxveva-
Si, Tu dasmuli piroba WeSmaritia.
if struqturis Caweris sintaqsi Semdegia:

if (piroba)
{
brZanebebi;
}

sakvanZo sityva if niSnavs "Tu"-s. pirobis qveS igu-
lisxmeba nebismieri Sedarebis Tu logikuri operacia.
aRniSnul operatorSi pirobis Semdeg dauSvebelia
wertil-mZimis dasma, radgan es sintaqsur Secdomad
iTvleba. operatoris tanSi arsebuli brZanebebi, rom-
lebic moTavsebulia Ria da daxurul figurul frCxi-
lebs "{}" Soris, sruldeba mxolod im SemTxvevaSi, Tu
piroba WeSmaritia. winaaRmdeg SemTxvevaSi (Tu piroba
mcdaria), if operatoris tanSi arsebuli brZanebebi ar
Sesruldeba da marTva gadaecema if operatoris (daxu-
ruli figuruli frCxilis Semdgom) momdevno opera-
tors programaSi. Tu if operatoris tani Seicavs mxo-
77

lod erT brZanebas, figuruli frCxilebis gamoyeneba
savaldebulo ar aris.
if struqturis moqmedeba sqematurad warmodgeni-
lia nax. 18-ze.


















magaliTi 8.1. SevadginoT programa, romelic gan-
sazRvravs warmoadgens Tu ara nebismieri mTeli tipis
x cvladi uaryofiT ricxvs.

amoxsna:

#include <iostream>
main( )
{
int x;
cout<<x=;
cin>>x;
if(x<0)
cout<< x is a negative number.<<endl;
cout<<The problem is over.<<endl;
return 0;}
programis gagrZeleba
ara
ki
piroba
moqmedeba
nax. 18.
78

aRniSnul magaliTSi Tu x cvladis mniSvneloba aR-
moCndeba naklebi nulze, programa gamoitans Setyo-
binebebs:
- x is a negative number. (x uaryofiTi ricxvia).
- The problem is over. (problema gadaWrilia, dasru-
lebulia).
winaaRmdeg SemTxvevaSi, momxmarebeli monitoris ek-
ranze miiRebs mxolod erT Setyobinebas: The problem is
over.

8.2. amorCevis struqtura if/else
struqtura if/else (Tu/winaaRmdeg SemTxvevaSi) saSua-
lebas gvaZlevs ori SesaZlo alternatiuli varianti-
dan avirCioT erT-erTi. aRniSnuli struqturis Cawe-
ris sintaqsi Semdegia:
if (piroba)
{
brZanebebi-1;
}
else
{
brZanebebi-2;
}
if/else amorCevis struqturis moqmedebis principi sqe-
maturad gamosaxulia nax. 19-ze.
if/else struqturis moqmedebis principi mdgomareobs
SemdegSi:
mowmdeba piroba, romelic mosdevs if operators da
Tu is WeSmaritia, sruldeba "brZanebebi-1" da ar srul-
deba "brZanebebi-2". Tu piroba mcdaria, sruldeba
"brZanebebi-2" da ar sruldeba "brZanebebi-1". nebismier
SemTxvevaSi marTva gadaecema aRniSnuli blokis mom-
devno operators programaSi.

79




















Tu "brZanebebi-1" da "brZanebebi-2" Sedgeba TiTo
brZanebisgan, figuruli frCxilebis gamoyeneba saval-
debulo ar aris. aqac, iseve rogorc wina SemTxvevaSi,
pirobis Semdeg wertil-mZimis dasma dauSvebelia da
iTvleba sintaqsur Secdomad, rasac mivyavarT dasmu-
li amocanis araswor Sedegamde. C++-Si gamoyenebuli
erTaderTi terneruli operacia (?:) Tavisi logikiT
warmoadgens if/else struqturis analogias.
magaliTi 8.2. SevadginoT ax=b wrfivi gantolebis
amoxsnis programa a da b koeficientebis nebismieri
mniSvnelobebis dros.
amoxsna: cxadia, aRniSnul magaliTSi ganixileba
sami SesaZlo SemTxveva:
1. Tu a=0, maSin x=b/a.
2. Tu a=0 da b=0, maSin amonaxsni ar arsebobs.
3. Tu a=b=0, maSin arsebobs amonaxsnTa usasrulo
simravle.
nax. 19
programis gagrZeleba


ara ki

piroba
brZanebebi-1

brZanebebi-2

80

am pirobaTa gaTvaliswinebiT CavweroT mocemuli
wrfivi gantolebis amoxsnis programa.

//wrfivi gantolebis amoxsna
#include <iostream>
main( )
{
float a, b, x;
cout<<a=;
cin>>a;
cout<<b=;
cin>>b;
if(a!=0)
{
x=b/a;
cout<<x=<<x<<endl;
}
else
{
if(b==0)
cout<<Any solution<<endl;
else
cout<<No solution<<endl;
}
return 0;
}

magaliTi 8.3. SevadginoT ax
2
+bx+c=0 kvadratuli gan-
tolebis amoxsnis programa a, b da c koeficientebis
nebismieri mniSvnelobebis dros.
amoxsna: msgavsad wina magaliTisa, aqac ganixileba
ramdenime SemTxveva:
1. Tu a=0, b=0, c=0, - gvaqvs amonaxsnTa usasrulo
simravle.
2. Tu a=0, b=0, c0, - amonaxsni ar arsebobs.
3. Tu a=0, b0, maSin x=-c/b.
81

4. Tu a0, maSin D=b
2
-4ac, sadac ganixileba Semdegi
SemTxvevebi:
- Tu D>0, maSin
;
2
2 , 1
a
D b
x

=

- Tu D=0, maSin x=-b/(2a);
- Tu D<0, maSin arsebobs kompleqsuri tipis fesve-
bi.
am pirobaTa gaTvaliswinebiT CavweroT mocemuli
kvadratuli gantolebis amoxsnis programa.

//kvadratuli gantolebis amoxsna
#include <iostream>
#include <math>
main( )
{
float a, b, c, d, x1, x2, x;
cout<<a=;
cin>>a;
cout<<b=;
cin>>b;
cout<<c=;
cin>>c;
if(a!=0)
{
d=b*b-4*a*c;
cout<<d=<<d<<endl;
if(d>0)
{
x1=(-b-sqrt(d))/(2*a);
x2=(-b+sqrt(d))/(2*a);
cout<<x1=<<x1<<endl;
cout<<x2=<<x2<<endl;
}
else
{
if(d==0){
82

x=-b/(2*a);
cout<<x=<<x<<endl;
}
else
cout<<Two complex roots.<<endl;
}}
else
{
if(b!=0)
{
x=-c/b;
cout<<x=<<x<<endl;
}
else
{
if(c!=0)
cout<<No solution.<<endl;
else
cout<<Any solution.<<endl;
}}
return 0;
}

8.3. mravaljeradi amorCevis struqtura switch
xSiria SemTxvevebi, rodesac arsebobs ama Tu im
movlenis ganviTarebis orze meti SesaZlo varianti,
anu algoriTms gaaCnia mTeli rigi alternatiuli ga-
dawyvetilebebisa, romelTagan xdeba erTis amorCeva
da Sesabamisi moqmedebis ganxorcieleba. aRniSnuli sa-
xis gadawyvetilebebis misaRebad algoriTmul ena
C++-Si gamoiyeneba mravaljeradi amorCevis struqtura
switch, romlis Caweris zogadi saxe Semdegia:
switch (gamosaxuleba)
{
gasaRebTa sia;
}
83

gamosaxulebis qveS aq igulisxmeba nebismieri gamo-
saxuleba, romlis Sedegs warmoadgens mTeli tipis
(int, long an char) mniSvneloba.
gasaRebTa sia Sedgeba gasaRebTa nebismieri raode-
nobisgan, sadac yovel maTgans gaaCnia Caweris Semdegi
forma:
case mTeli tipis mniSvneloba:
brZanebebi;
break;
yovel gasaRebs gaaCnia gansazRvruli mudmivi mniS-
vneloba da brZanebaTa CamonaTvali, romelic srulde-
ba break (Sewyveta) operatoriT.
break operatoris gamotovebis SemTxvevaSi brZanebebi
sruldeba momdevno break operatoramde programaSi.
switch struqturas gaaCnia mTeli rigi Wdeebisa (case)
da arasavaldebulo Wde default.
Wde Sedgeba koduri sityvisagan case, romelsac mos-
devs mTeli tipis mniSvneloba da orwertili.
switch struqturis muSaobis principi mdgomareobs
SemdegSi:
1. gamoiTvleba gamosaxuleba da misi mniSvneloba
(mTeli tipis) Tanmimdevrulad Sedardeba gasaRebTa
mniSvnelobebs (romlebic miTiTebulia case Wdeebis
Semdeg).
2. Tu gamosaxulebis Sedegi daemTxveva romelime ga-
saRebis mniSvnelobas, Sesruldeba is brZanebebi,
romlebic aRniSnul Wdes mosdevs break operatoram-
de. koduri sityva default gamoiyeneba im SemTxvevaSi,
rodesac gamosaxulebis mniSvneloba ar emTxveva
gasaRebTa arcerT mniSvnelobas.
default Wdis gamoyeneba blokSi savaldebulo ar
aris, Tumca misi moTavseba switch mmarTvel struqtura-
Si iTvleba daprogramebis karg stilad. default Wde
SeiZleba Caiweros aRniSnuli blokis nebismier adgi-
las, magram sasurvelia, Tu is moTavsdeba blokis bo-
los.
84

sqematurad mravaljeradi amorCevis struqtura
switch warmodgenili nax. 20-ze.

































false
false
false
SemTxveva
a
SemTxveva
b
SemTxveva
z
moqmedebebi
araTanxvedris dros
moqmedeba a
SemTxvevaSi

moqmedeba b
SemTxvevaSi

moqmedeba z
SemTxvevaSi

break

break

break

true
true
true
nax. 20
85

magaliTi 8.4. mocemulia saTamaSo kamaTeli, romel-
sac vagorebT 100-jer. saWiroa SevadginoT programa,
romelic gamoTvlis kamaTlis TiToeuli mxaris
mosvlis albaTobas.
amoxsna: programaSi vaxdenT <stdlib> biblioTekidan
rand( ) funqciis gamoyenebas, romelic Cvens SemTxvevaSi
gamoimuSavebs fsevdoSemTxveviT mTel ricxvebs erTi-
dan eqvsamde diapazonSi (radgan kamaTels gaaCnia eqvsi
mxare anu eqvsi gansxvavebuli SesaZlo varianti). imi-
saTvis, rom rand( ) funqciam gamoimuSavos kvaziSemTxve-
viTi ricxvebi, programaSi mivmarTavT srand( ) funqcias,
romlis argumenti ganixileba, rogorc rand( ) funqciis
sawyisi mniSvneloba. Tavad rand( ) funqcia am mniSvne-
lobas iyenebs kvaziSemTxveviTi mTeli ricxvebis mim-
devrobis generaciis mizniT. switch operatori, ki sa-
Sualebas gvaZlevs daviTvaloT kamaTlis TviToeuli
mxaris mosvlis albaToba.
yovelive zemoTaRniSnulis gaTvaliswinebiT, Cvens
mier SemuSavebuli algoriTmis safuZvelze Seqmnili
programa warmodgenilia Semdegi saxiT:
//kamaTlis TviToeuli mxaris mosvlis albaTobis
// gamoTvla
#include <iostream>
#include <iomanip>
#include <stdlib>
main( )
{
unsigned int a;
cin>>a;
srand(a);
int face;
int x1=0, x2=0, x3=0, x4=0, x5=0, x6=0;
for(int i=1; i<=100; i++)
{
face=1+rand( )%6;
switch(face)
86

{
case 1:
++x1;
break;
case 2:
++x2;
break;
case 3:
++x3;
break;
case 4:
++x4;
break;
case 5:
++x5;
break;
case 6:
++x6;
break;
}}
cout<<"Face"<<setw(10)<<"count"<<endl;
cout<<" 1"<<setw(10)<<x1<<endl;
cout<<" 2"<<setw(10)<<x2<<endl;
cout<<" 3"<<setw(10)<<x3<<endl;
cout<<" 4"<<setw(10)<<x4<<endl;
cout<<" 5"<<setw(10)<<x5<<endl;
cout<<" 6"<<setw(10)<<x6<<endl;
return 0;
}
programaSi gamoyenebulia for cikli, romlis
mTvlelis saSualebiTac moxda kamaTlis gagorebaTa
raodenobis (ricxvis) daTvla. ciklis aRniSnuli saxe
dawvrilebiT ganxilulia MsaxelmZRvanelos me-9 TavSi.



87

8.4. upirobo gadasvlis operatori goto
arastruqturuli daprogramebis erTerT TvalsaCi-
no magaliTs warmoadgens upirobo gadasvlis operato-
ri goto, romlis Caweris sintaqss aqvs Semdegi saxe:
goto Wde:
aRniSnuli operatoris Sesrulebis Sedegad marTva
gadaecema programaSi im pirvel operators, romlis
Wdec miTiTebulia goto operatorSi. Wde am SemTxvevaSi
warmoadgens identifikators, romelic bolovdeba or-
wertiliT (:).
rogorc cnobilia, C++-ze ama Tu im programis Se-
sadgenad sakmarisia sami mmarTveli struqturis:
wrfivi, ganStoebadi da cikluri struqturebis gamoye-
neba. Tu mivmarTavT struqturuli daprogramebis we-
sebs, SeiZleba zog SemTxvevaSi miviRoT erTmaneTSi Ca-
lagebuli mmarTveli struqturebis iseTi rTuli kon-
struqcia, saidanac gamosvla ar aris ioli. swored
aseT SemTxvevebSi gamoiyeneba operatori goto; Tumca
igi iTvleba moZvelebul konstruqciad da progra-
mistTa umravlesoba dRes mas naklebad mimarTavs.

magaliTi 8.5. goto operatoris gamoyenebiT Sevadgi-
noT programa, romelic beWdavs erTidan aTamde mniSv-
nelobebs.
amoxsna:

// goto operatoris gamoyenebis martivi programa
#include <iostream>
main( )
{
int count=1;
start: //Wde
if(count>10)
goto end;
cout<<count<<" ";
++count;
88

goto start;
end: //Wde
cout<<endl;
return 0;}


savarjiSoebi:

1. SeadgineT programa, romelic gamoTvlis 1-5 maga-
liTebSi warmodgenil gamosaxulebaTa mniSvnelo-
bebs:


; ) 5 , 2 ( cos ) 1 ( sin
2 2
+ + + = x x y
Tu
, cos ) 3 2 sin(
2
x x B + + =
x=9,7;

), 1 ln(
2
+ + x x
Tu yB>0
D=

, ln x e
x
+
Tu yBs0

2.
); 6 , 2 cos( sin
1
z z e x
z+
=
Tu z=2,17.


, 4 + arctgx
Tu x-1;

y= x+4, Tu x>1;

1.

3. ;
sin x
e A=
;
2
) 1 cos(
3
|
.
|

\
|

=
A
tg
a
z
Tu x=12,56.


, 1
2
x +
Tu z>0;

y=
, ln ) 1 (
2
x x +
Tu z<0;


), 1 cos( + x
Tu z=0.

89

4. B=A
2
-c
3
cos(5x); Tu A=1,2 c=1,81 x=12.


100, Tu B<1;

y= Bx
3
+c, Tu 1sB<2;

x+B, Tu B2.



5.
;
1 ) 2 sin(
x A
e
x
y

+
=
Tu x=2, A=2,8, B=-4,2 c=8

Ax
3
-2, Tu y<1;

z= Ax
2
+Bx+c, Tu y=1;

c.

6. SeadgineT programa, romelic gansazRvravs klavia-
turidan akrefili nebismieri x ricxvis niSans.
7. SeadgineT programa, romelic gamoTvlis y=sinx/x
gamosaxulebis mniSvnelobas nebismieri x cvladi-
saTvis (gaiTvaliswineT piroba, rom nulze gayofa
dauSvebelia.)
8. SeadgineT programa, romelic n cvladis mniSvne-
lobis gaTvaliswinebiT gamoTvlis:
- cilindris moculobas, Tu n=1;
- konusis moculobas, Tu n1.
sawyisi monacemebia: r=5sm, h=12sm.
9. SeadgineT programa, romelic nebismier sam a, b da
c ricxvebs Soris moZebnis maqsimaluri (minimaluri)
mniSvnelobis mqone ricxvs.

90

Tavi IX
cikluri struqturebi
9.1. gameorebis struqtura while
rodesac programuli kodis esa Tu is fragmenti
meordeba ramdenjerme, aRniSnul process cikli ewo-
deba.
C++-Si arsebobs martivi ciklis sami saxe:
1. cikli while;
2. cikli dowhile;
3. cikli for.
while ciklis Caweris sintaqsi Semdegia:
while (pirobiTi gamosaxuleba)
{
operatorebi;
}
gameorebis struqtura programists saSualebas aZ-
levs gansazRvros moqmedebebi, romlebic programaSi
unda Sesruldes (gameordes) manamde, sanam esa Tu is
piroba, romelsac ciklis pirobas uwodeben, WeSmari-
tia.
while ciklSi pirobiTi gamosaxuleba warmoadgens
nebismier Sedarebis an logikur gamosaxulebas, rome-
lic amave dros ciklis pirobac aris.
aRniSnul cikls gaaCnia tani, romelic moTavsebu-
lia Ria da daxurul figurul frCxilebs Soris da
moicavs erT an ramdenime operators, romlebic srul-
deba manam, sanam ciklis piroba WeSmaritia.
Tu ciklis tani Sedgeba erTi operatorisgan, sa-
valdebulo ar aris misi figurul frCxilebSi moTav-
seba.
while ciklSi pirobis Semdeg dauSvebelia wertil-
mZimis dasma (iTvleba sintaqsur Secdomad).
aRniSnuli struqturis muSaobis principi mdgoma-
reobs SemdegSi:
91

- mowmdeba ciklis piroba (pirobiTi gamosaxuleba)
da Tu is WeSmaritia, sruldeba ciklis tanSi arse-
buli operatorebi manamde, sanam aRniSnuli piroba
ar gaxdeba mcdari.
- Tu ciklis piroba Tavidanve mcdaria, ciklis tanSi
arsebuli operatorebi ar Sesruldeba da marTva
gadaecema mocemuli blokis (daxuruli figuruli
frCxilis Semdeg) momdevno operators programaSi.
cxadia, while struqturaSi Tu piroba ar gaxdeba
mcdari algoriTmis garkveuli bijebis Semdeg, cikli
arasdros dasruldeba da programa Caicikleba. aRniS-
nul SemTxvevaSi cikli warmoadgens usasrulo ciklis
tipiur magaliTs.
sqematurad while struqtura warmodgenili nax 21-ze.



















magaliTi 9.1. SevadginoT programa, romelic
ipovnis ori mTeli arauaryofiTi m da n ricxvebis
ki
ara
piroba

ciklis tani

blokis momdevno
operatori

nax. 21
92

udides saerTo gamyofs evklides algoriTmis safuZ-
velze.

amoxsna:

// evklides algoriTmi
#include <iostream>
main( )
{
int m, n;
cout<<m=;
cin>>m;
cout<<n=;
cin>>n;
while(m!=n)
{
if(m>n)
m=m-n;
else
n=n-m;
}
cout<<m=<<m<<endl; // SesaZlebelia aq n cvladis
// dabeWdvac, radgan m=n.
return 0;
}

magaliTi 9.2. SevadginoT programa, romelic
gamoTvlis da cxrilis saxiT warmoadgens y cvladis
mniSvnelobebs Semdegi gamosaxulebis safuZvelze:
,
1
2
A x
x
y

+
=
Tu A=1; xe[5;10] diapazons da icvleba
h=0,5-is toli bijiT.
amoxsna:

// while ciklis gamoyenebis martivi magaliTi
#include <iostream>
#include <math>
93

main( )
{
int A=1;
float y, h=0.5, x=5;
while(x<=10)
{
y=(pow(x,2)+1)/(x-A);
cout<<y=<<y<<endl;
cout<<x=<<x<<endl;
x+=h;
returrn 0;}

magaliTi 9.3. SevadginoT programa, romelic gamo-
Tvlis ori mTeli dadebiTi a da b ricxvis umcires
saerTo jerads.
amoxsna:

// a da b ricxvebis umciresi saerTo jeradis povna
#include <iostream.h>
main( )
{
long a, b, m;
cout<<a=;
cin>>a;
cout<<b=;
cin>>b;
m=a*b;
while(a!=b)
{
if(a>b)
a=a-b;
else
b=b-a;
}
cout<<a=<<a<<endl;
cout<<umciresi saerTo jeradi=<<m/a<<endl;
return 0;}
94

9.2. gameorebis struqtura do/while
gameorebis struqtura do/while warmoadgens while cik-
lis saxeSecvlil variants. while struqturaSi ciklis
gagrZelebis piroba mowmdeba mis dasawyisSi, ciklis
tanis Sesrulebamde, rac mcdari pirobis SemTxvevaSi
iwvevs operatorTa Seusruleblobas ciklis tanSi.
do/while struqturaSi ki ciklis gagrZelebis piroba mo-
wmdeba ciklis bolos. aqedan gamomdinare cxadia, rom
miuxedavad ciklis pirobis Sedegisa (mcdarobis an
WeSmaritebisa), ciklis tanSi arsebuli operatorebi,
sul mcire, erTxel mainc Sesruldeba.
do/while gameorebis struqturis Caweris sintaqss
aqvs Semdegi saxe:
do
{
operatorebi;
}
while(pirobiTi gamosaxuleba);
koduri sityva "do" miuTiTebs ciklis dasawyisze,
xolo while (manamde sanam), romelsac axlavs frCxileb-
Si moTavsebuli pirobiTi gamosaxuleba ciklis
dasasrulze. figurul frCxilebSi moTavsebuli ope-
ratorebi warmoadgens ciklis tanis operatorebs. Tu
ciklis tani Sedgeba erTi operatorisgan, savaldebu-
lo ar aris misi figurul frCxilebSi moTavseba.
pirobiTi gamosaxulebis qveS igulisxmeba
nebismieri Sedarebis Tu logikuri operacia, romelic
aucilebelia dasruldes wertil-mZimiT da Semowmdes
ciklis bolos.
do/while gameorebis struqturis muSaobis principi
mdgomareobs SemdegSi:
- Tavdapirvelad ciklis tani sruldeba erTxel da
Semdeg mowmdeba ciklis gagrZelebis piroba. Tu pi-
roba WeSmaritia, ciklis operatorebi sruldeba ma-
nam, sanam aRniSnuli piroba mcdari ar gaxdeba.
95

- Tu ciklis gagrZelebis piroba Tavidanve mcdaria,
ciklis operatorebi erTxel mainc sruldeba da
Semdeg marTva gadaecema aRniSnuli blokis mom-
devno operators programaSi.
cxadia, Tu do/while struqturaSi ciklis piroba ar
gaxdeba mcdari, programa Caicikleba da miviRebT usas-
rulo ciklis tipiur magaliTs.
sqematurad do/while struqtura warmodgenilia nax.
22-ze.


















magaliTi 9.4. SevadginoT programa, romelic gamoT-
vlis da cxrilis saxiT warmoadgens z cvladis mniS-
vnelobebs Semdegi gamosaxulebis safuZvelze:
,
2 2
y x z =
Tu y=1, xolo xe[2;10] diapazons da icv-
leba h=0,5-is toli bijiT.

amoxsna:
// do/while ciklis gamoyenebis martivi magaliTi
#include <iostream>
ara ki
piroba

ciklis tani

blokis momdevno
operatori

nax. 22
96

#include <math>
main( )
{
int y=1;
double z, h=0.5, x=2;
do
{
z=fabs(x*x-y*y);
cout<<z=<<z<<endl;
cout<<x=<<x<<endl;
x+=h;
while(x<=10);
return 0;
}

magaliTi 9.5. SevadginoT programa, romelic ga-
moTvlis mocemuli mwkrivis pirveli oci wevris jams:

. ...
3 2
1
3 2
n
x x x
x s
n
+ + + + + =

amoxsna:
// mwkrivis pirveli oci wevris jamis gamoTvla
#include <iostream>
main( )
{
float x, p=1, s=1, n=20, i=1;
cout<<"x=";
cin>>x;
do
{
p*=x;
s+=p/i;
i++;
}
while(i<n);
cout<<"result="<<s<<endl;
return 0;
}
97

9.3. gameorebis struqtura for
gameorebis struqtura for moicavs yvela im ele-
ments, romelic saWiroa ama Tu im moqmedebaTa mraval-
jer Sesasruleblad da imarTeba erTgvari mTvleliT.
igi warmoadgens ciklis im saxes, sadac gameorebaTa
ricxvi winaswaraa gansazRvruli.
for ciklis Caweris sintaqss aqvs Semdegi saxe:
for(gamosaxuleba-1; gamosaxuleba-2; gamosaxuleba-3)
{
operatorebi;
}
"gamosaxuleba-1" warmoadgens cvlads, romelsac
eniWeba sawyisi mniSvneloba. aRniSnuli cvladi gvev-
lineba mTvlelis rolSi, romelic marTavs cikls.
cxadia, mTvleli unda iyos mTeli tipis monacemi. "ga-
mosaxuleba-1" sruldeba mxolod erTxel ciklis da-
sawyisSi.
"gamosaxuleba-2" warmoadgens ciklis gagrZelebis
pirobas, imdenad ramdenadac, sanam piroba WeSmaritia,
sruldeba ciklis tanis operatorebi. "gamosaxuleba-2"
mowmdeba yoveli iteraciis win.
"gamosaxuleba-3" warmoadgens ciklis mmarTveli
cvladis (mTvlelis) cvlilebis operacias. igi srul-
deba yoveli iteraciis bolos.
operatorebi, romlebic moTavsebulia Ria da daxu-
rul figurul frCxilebs Soris, Seadgenen ciklis
tans.
Tu ciklis tani Seicavs erT operators, misi figu-
rul frCxilebSi moTavseba savaldebulo ar aris.
for struqturis samive Semadgeneli nawili: mTvle-
lis sawyisi mniSvneloba, ciklis gagrZelebis piroba
da mTvlelis mniSvnelobis cvlileba erTmaneTisgan
gamoiyofa wertil-mZimiT (;). SesaZlebelia es nawilebi
warmodgenil iqnas ariTmetikuli gamosaxulebebis sa-
xiT. mag:
for(int j=x; j<=4*x*y; j+=y/x)
98

for cikli saSualebas iZleva esa Tu is cvladi ga-
cxadebuli an inicializirebuli iqnas mis SigniT. es
sasurvelia im SemTxvevebSi, rodesac cvladi gamoiye-
neba mxolod ciklis Sesrulebis procesSi. Tu ciklis
mTvlelis sawyisi mniSvneloba naklebia mis saboloo
mniSvnelobaze, adgili aqvs mTvlelis mniSvnelobis
gazrdas, winaaRmdeg SemTxvevaSi Semcirebas. mag:
- for(int i=1; i<=100; i++) //mTvlelis mniSvnelobis
gazrda
- for(int i=100; i>=1; i--) //mTvlelis mniSvnelobis
Semcireba.
savaldebulo ar aris, rom for struqtura Sedgebo-
des samive elementisgan. Tu for cikli ar Seicavs "ga-
mosaxuleba-2"-s, C++-Si es ganixileba, rogorc ciklis
gagrZelebis pirobis mudmivi WeSmaritoba da iqmneba
usasrulo cikli. zogjer for struqtura ar Seicavs
"gamosaxuleba-1"-s, rac dasaSvebia im SemTxvevaSi, Tu
mmarTveli cvladis sawyisi mniSvneloba mocemulia
programis sxva nawilSi.
SesaZlebelia for struqturas ar gaaCndes "gamosa-
xuleba-3", Tu ki mmarTveli cvladis mniSvnelobis
cvlilebas axorcielebs romelime operatori ciklis
tanSi.
for struqturis muSaobis principi mdgomareobs Sem-
degSi:
- mowmdeba ciklis gagrZelebis piroba da Tu is WeS-
maritia, sruldeba ciklis tanis operatorebi manam-
de, sanam aRniSnuli piroba mcdari ar gaxdeba.
- Tu ciklis gagrZelebis piroba Tavidanve mcdaria,
marTva gadaecema aRniSnuli blokis momdevno ope-
rators programaSi ise, rom ciklis tanSi arsebu-
li brZanebebi ar Sesruldeba.
for struqtura sqematurad warmodgenilia nax. 23-ze.


99














magaliTi 9.6. SevadginoT programa, romelic for
ciklis gamoyenebiT gamoTvlis oridan asis CaTvliT
yvela luwi ricxvis jams.

amoxsna:
// 2100 luwi ricxvebis jamis gamoTvlis programa
#include <iostream>
main( )
{
int Sum=0;
for(int nimber=2; number<=100; number+=2)
Sum+=number;
cout<<Sum=<<Sum<<endl;
return 0;}
magaliTi 9.7 SevadginoT programa, romelic gamoT-
vlis arauaryofiTi N ricxvis faqtorialis mniSvne-
lobas.
amoxsna:
rogorc cnobilia, arauaryofiTi N ricxvis faqto-
riali aRiniSneba saxiT: N! da gamoiTvleba formuliT:
N!=N*(N-1)!
// arauaryofiTi N ricxvis faqtorialis gamoTvla
#include <iostream>
x=x
0
; x
k
; h
ciklis tani
blokis Semdgomi operatori
nax. 23.
100

main( )
{
unsigned long factorial=1;
int number;
cout<<number=;
cin>>number;
for(int counter=number; counter>=1; counter--)
factorial*=counter;
cout<<number<<!=<<factorial<<endl;
return 0;
}
magaliTi 9.8. kerZo pirma sadepozito angariSze Se-
itana Tanxa 1000$-is odenobiT wliuri 5%-ani Semosav-
liT. rCeba ra Semosavlebi depozitze, gamovTvaloT
Tanxis raodenoba angariSze yoveli wlis bolos 10
wlis manZilze. gamoTvlebi vawarmooT formuliT:
a=p(a+r)
n
, sadac
p (principal) sawyisi Senatania;
r (rate) wliuri saSemosavlo saprocento ganakve-
Ti;
n (number of years) wlebis raodenoba;
a (amount) Tanxa depozitze n wlis bolos.
SevadginoT dasmuli amocanis amoxsnis programa.
amoxsna:
// depozitze arsebuli Tanxis gamoTvla
#include <iostream>
#include <iomanip>
#include <math>
main( )
{
double amount, principal=1000, rate=0.05;
cout<<Year<<setw(17)<<Sum of amount<<endl;
for(int year=1; year<=10; year++)
{
amount=principal*pow(1+rate, year);
cout<<year<<setw(14)<<amount<<endl;
}
101

return 0;
}
aRniSnul programaSi gamoyenebul iqna <iomanip>
failis qudi, romelic iZleva informacias monacemTa
nakaduri Setana/gamotanis daformatebis SesaZleblo-
bebis Sesaxeb nakadis egreTwodebuli parametruli ma-
nipulatorebis gamoyenebiT. <iomanip> failis qudi Sei-
cavs mraval funqciasa da manipulators, romelTagan
zemoT ganxilul programaSi gamoyenebul iqna manipu-
latori: setw( ). igi afiqsirebs monacemTa gamosatani
velis siganes. (setw=set+width).

9.4. Calagebuli pirobebi da ciklebi
xSirad im mizniT, rom gadavwyvitoT, Tu romeli
moqmedebis Sesrulebaa saWiro, aucilebeli xdeba ram-
denime pirobis Semowmeba. C++-Si es xdeba maSin, rode-
sac erTi if (an if/else) mmarTveli struqturis SigniT
Tavsdeba meore if (an if/else) mmarTveli struqtura. Sesa-
bamisad miiReba erTmaneTSi Calagebuli pirobebi, sa-
dac Sida if (an if/else) struqtura sruldeba mxolod im
SemTxvevaSi, Tu gare if struqturis piroba WeSmari-
tia.
Calagebuli pirobebis erTgvar analogias warmoad-
gens Calagebuli ciklebi, sadac erTi (gare) ciklis
SigniT Tavsdeba erTi an ramdenime Sida cikli. Cala-
gebuli ciklebis SemTxvevaSi gare ciklis tanis Sesas-
ruleblad saWiroa Sesruldes Sida ciklis yvela ga-
meoreba.
Calagebuli pirobebi da ciklebi rTuli pirobebi-
sa da ciklebis kerZo SemTxvevas warmoadgenen.
magaliTi 9.9. SevadginoT programa, romelic gamoT-
vlis mTeli tipis nebismieri aTi dadebiTi kenti ric-
xvis jams.

amoxsna:
102

// mTeli tipis nebismieri dadebiTi kenti ricxvebis
// jamis gamoTvla
#include <iostream>
main( )
{
int x, Sum=0;
for(int i=1; i<=10; i++)
{
cout<<x=;
cin>>x;
if(x>0)
{
if(x%2 = =1)
Sum+=x;
}}
cout<<Sum=<<Sum<<endl;
return 0;
}
igive amocana SeiZleba martivad amoixsnas, Tuki
masSi dasmul or pirobas gavaerTianebT logikuri
"da" operaciis saSualebiT.
// mTeli tipis nebismieri dadebiTi kenti ricxvebis
// jamis gamoTvla (II varianti)
#include <iostream>
main( )
{
int x, Sum=0;
for(int i=1; i<=10; i++)
{
cout<<x=;
cin>>x;
if(x>0 && x%2 = =1)
Sum+=x;
}
cout<<Sum=<<Sum<<endl;
return 0;
}
103

magaliTi 9.10. Calagebuli ciklebis gamoyenebiT Se-
vadginoT programa, romelic displeis ekranze dabeW-
davs Semdeg suraTs:
* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *
amoxsna:

#include <iostream>
main( )
{
for(int i=1; i<=4; i++)
{
for(int j=1; j<=8; j++)
cout<<"*"<<" ";
cout<<endl;
for(int k=1; k<=8; k++)
cout<<" *"<<"";
cout<<endl;
}
return 0;}

9.5. cikluri struqturebidan alternatiuli
gamosvlis SesaZlebloba
operatorebi: break da continue
break da continue operatorebi cvlian programebSi
marTvis nakads. rodesac break operatori sruldeba
while, for do/while an switch struqturebSi, adgili aqvs
struqturebidan dauyovnebliv gamosvlas; e.i. break ope-
104

ratori warmoadgens ciklebidan alternatiuli gamo-
svlis SesaZleblobas. es ki niSnavs, rom ciklSi mim-
dinare procesebi wydeba masSi yvela iteraciis dasru-
lebamde da marTva gadaecema blokis momdevno opera-
tors programaSi. rogorc wesi, operatori break wyvets
cikls, xolo switch struqturis SemTxvevaSi Seusru-
leblad tovebs yvela brZanebas, romelic mas mosdevs.
continue operatori while, for an do/while struqturebSi
iwvevs aRniSnuli ciklebis tanis nawilis gamotovebas
da Semdegi iteraciebis Sesrulebas.
while da do/while struqturebSi continue operatoris
Sesrulebis Semdeg adgili aqvs ciklebis gagrZelebis
pirobis Semowmebas, xolo for struqturaSi jer xdeba
mTvlelis mniSvnelobis cvlileba da mxolod amis
Semdeg mowmdeba ciklis gagrZelebis piroba.
maSasadame continue operatori ciklur struqtureb-
Si wyvets mxolod mimdinare iteracias da axorcie-
lebs Semdegi iteraciebis gagrZelebas.
break operatorisgan gansxvavebiT continue operatori
wyvets mxolod mimdinare iteraciis Sesrulebas da
ara mTel cikls.
magaliTi 9.11. SevadginoT programa, romelic ga-
moTvlis mocemuli y=x
5
+3x
4
-12 funqciis mniSvnelobaTa
cxrils, Tu x icvleba [2;11] SualedSi h=0,1 bijiT.
amasTan, roca y-is mniSvneloba gadaaWarbebs 6000-s, da-
vasruloT gamoTvlebi.

amoxsna:
//y=x
5
+3x
4
-12 funqciis mniSvnelobaTa cxrilis
//gamoTvla
#include <iostream>
#include <math>
main( )
{
float h=0.1, x=2, y;
do
105

{
if(y>6000)
break;
y=pow(x,5)+3*pow(x,4)-12;
cout<<"x="<<x<<endl;
cout<<"y="<<y<<endl;
x+=h;
}while(x<=11);
return 0;
}
magaliTi 9.12. SevadginoT programa, romelic beW-
davs yvela cifrs 1-dan 10-mde garda 5-sa.
amoxsna:
// 1-dan 10-mde 5-is garda cifrebis beWdva
#include <iostream>
#include <iomanip>
main( )
{
for(int x=1; x<=10; x++)
{
if(x==5)
continue;
cout<< setw(5)<<x;
}
return 0;
}



savarjiSoebi:

1. while ciklis gamoyenebiT SeadgineT programa, rome-
lic gamoTvlis y=x
2
-2x+5 funqciis mniSvnelobaTa
cxrils, Tu x argumenti [1;2] intervalSi icvleba
h=0,01 bijiT.
106

2. for ciklis gamoyenebiT SeadgineT pirveli 15 natu-
raluri ricxvis namravlisa da jamis gamoTvlis
programa.
3. do/while ciklis gamoyenebiT SeadgineT
xy y x z
2 3 2
cos 7 5 + =
funqciis gamoTvlis programa,
Tu x icvleba 1-dan 11-mde h
1
=0,02 bijiT, xolo y icv-
leba 5-dan h
2
=0,01 bijiT.
4. mocemulia y=3x
4
-5x
3
-x
2
-6x-3 funqcia, romelic gamo-
iTvleba [-2;5,8] monakveTze h=0,02 bijiT. SeadgineT
programa, romelic gansazRvravs am funqciis dade-
biTi mniSvnelobebis saSualo ariTmetikuls.
5. SeadgineT Semdegi mwkrivis elementebis jamis
gamoTvlis programa:
100
1
...
3
1
2
1
1 + + + + = s
.
6. SeadgineT
x
x
y
cos
=
funqciis mniSvnelobaTa cxrilis
gamoTvlis programa, Tu x argumenti [-10;25] inter-
valSi icvleba h=0,1 bijiT.

7. mocemulia
x e
x
x
y
x
sin
1
2
|
.
|

\
|

+
=
funqcia, romelic ga-
moiTvleba [-2,3;3] monakveTze h=0,005 bijiT. Seadgi-
neT programa, romelic gamoTvlis y funqciis ara-
uaryofiTi mniSvnelobebis namravls.
8. SeadgineT programa, romelic monetis 20-jer agde-
bis SemTxvevaSi gamoTvlis TviToeuli mxaris mosv-
lis albaTobas.
9. SeadgineT programa, romelic gamoTvlis aTi mos-
wavlisgan Semdgar klasSi moswavleTa moswrebis
saSualo Sedegs 100-quliani sistemiT. (Sefaseba
warmoebs 1-dan 100-mde qulaTa diapazonSi mTeli
tipis ricxviTi monacemebis gamoyenebiT).
10. SeadgineT programa, romelic beWdavs mniSvneloba-
Ta Semdeg cxrils:

107

# 10# 100# 1000#
1 10 100 1000
2 20 200 2000
3 30 300 3000
4 40 400 4000
5 50 500 5000

11. SeadgineT programa, romelic gamoTvlis e maTema-
tikuri konstantis mniSvnelobas Semdegi formulis
safuZvelze:


!
1
...
! 3
1
! 2
1
! 1
1
1
n
e + + + + + =

12. SeadgineT programa, romelic beWdavs Semdeg su-
raTs:
* * * * * * * * * *
* * * * * * * * *
* * * * * * * *
* * * * * * *
* * * * * *
* * * * *
* * * *
* * *
* *
*
13. SeadgineT programa, romelic gamoTvlis 20 nebismi-
eri arauaryofiTi ricxvis kvadratebis jams.
14. SeadgineT programa, romelic gamoTvlis klaviatu-
ridan Seyvanili 15 dadebiTi ricxvis jamidan miRe-
buli kvadratuli fesvis mniSvnelobas. Tu klavia-
turidan moxdeba uaryofiTi ricxvis akrefa, gamo-
TvliTi procesi SewyviteT.




108

Tavi X
masivebi
10.1. zogadi cnebebi masivebze
masivi warmoadgens egm-is mexsierebaSi arsebuli
mimdevrobiTi ujredebis jgufs, romelTac gaaCniaT
saerTo saxeli da erTidaigive tipi. yoveli masivi xa-
siaTdeba zomiT da ganzomilebiT.
masivSi Semavali elementebis raodenoba gansazRv-
ravs mis zomas. TiToeul elements SeiZleba gaaCndes
erTi an meti indeqsi, rac ganapirobebs masivis ganzo-
milebis gansazRvras.
Tu masivSi Semaval yovel elements gaaCnia TiTo
indeqsi, mas erTganzomilebiani masivi anu veqtori
ewodeba, xolo Tu masivSi yoveli elementi or-
indeqsiania, mas organzomilebiani masivi anu matrica
ewodeba.
nax. 24-ze warmodgenilia mTelricxvuli masivi
identifikatoriT "C", romelic Sedgeba aTi elementi-
sagan. nebismier elementze mimarTva SesaZlebelia masi-
vis saxelisa da elementis indeqsis miTiTebiT. es uka-
naskneli moTavsebulia kvadratul frCxilebSi da
warmoadgens elementis poziciis nomers masivSi.
daprogramebis ena C++-Si yovel masivs gaaCnia nu-
lovani elementi, anu rogorc wesi, nebismieri masivis
pirveli elementis indeqsi nulis tolia. aqedan gamom-
dinare, "C" masivis pirveli elementi aRiniSneba, ro-
gorc C[0], meore - rogorc C[1], mesame - C[2] da a.S. "C"
masivis i-uri elementi aRiniSneba, rogorc C[i-1].
masivis elementis indeqsi mTeli tipis ricxvia, an
gamosaxuleba, romlis Sedegi aseve mTeli tipisaa. ma-
galiTad, Tu davuSvebT, rom cvladi a=5, xolo cvla-
di b=2, maSin operatori C[a+b]+=2, masivis C[7] elemen-
tis mimdinare mniSvnelobas miumatebs ors.
movaxdinoT nax. 24-ze warmodgenili masivis anali-
zi:
109


C[0] -10
C[1] 4
C[2] 35
C[3] 45
C[4] 0
C[5] 52
C[6] 100
C[7] -18
C[8] 9
C[9] 25






masivis saxeli anu identifikatoria "C". misi Semad-
geneli aTi elementi aRniSnulia, rogorc C[0], C[1],
C[2],,C[9]; sadac C[0] elementis mniSvneloba udris -
10-s, C[1] elementis mnivneloba udris 4-s da a.S. bolo
C[9] elementis mniSvneloba 25-s.
saWiroa aRiniSnos, rom arsebobs mkveTri gansxvave-
ba Semdeg or ganmartebas Soris: a) "masivis meSvide
elementi" da b) "masivis elementi nomeri Svidi". rad-
gan masivis pirveli elementis indeqsi nulis tolia,
amitom "masivis meSvide elementis" indeqsi udris
eqvss; maSin, rodesac "masivis elementi nomeri Svidi"
sinamdvileSi mocemuli masivis merve elements warmo-
adgens.
amgvarad, masivi aris struqtura, romelic monacem-
Ta saxiT moicavs erTmaneTTan dakavSirebul erTida-
imave tipis mqone elementebs.


masivis nulova-
ni elementis
mniSvneloba
masivis
elementis
indeqsi
nax. 24.



110

10.2. masivTa aRwera
egm-is mexsierebaSi yoveli masivi ikavebs garkveul
moculobas. masivi, msgavsad nebismieri sxva obieqtisa,
programaSi gamoyenebamde unda iqnas gacxadebuli, ra-
Ta kompilatorma winaswar moaxdinos misTvis kompiu-
teris mexsierebaSi saWiro moculobis gamoyofa. am
mizniT programistma aucilebelia miuTiTos masivSi
Semavali elementebis tipi, maTi raodenoba da masivis
identifikatori. amdenad, nax. 24-ze warmodgenili masi-
vi aRiwereba Semdegi saxiT:
int C[10];
SesaZlebelia erTi da imave tipis mqone elemente-
bisgan Semdgari ramdenime masivis erTdroulad aRwe-
rac. magaliTad:
int b[100], a[25];
am SemTxvevaSi aRiwereba asi mTelricxva elementis-
gan Semdgari b masivi da amave tipis ocdaxuTi elemen-
tisgan Semdgari a masivi.
masivebi SeiZleba gacxaddes sxva tipis mqone mona-
cemTa Senaxvis mizniTac. ase magaliTad, simboluri
striqonis Sesanaxad SeiZleba gamoyenebul iqnas char
tipis masivi.
masivis elementebs sawyisi mniSvnelobebi SeiZleba
mieniWos misi gacxadebis dros. am process elementebis
inicializireba ewodeba. aRniSnul SemTxvevaSi masivis
elementebis mniSvnelobebi Tavsdeba figurul frCxi-
lebSi da erTimeorisgan mZimiT gamoiyofa. magaliTad:
int A[7]={1, 2, 5, 10, 0, -5, 8};
Tu masivSi arsebuli elementebis raodenoba aR-
moCndeba meti mniSvnelobaTa raodenobaze, darCenili
elementebi avtomaturad iReben sawyis nulovan mniSv-
nelobebs. magaliTad:
int A[10]={ 0 };
aRniSnuli operatori sawyis nulovan mniSvnelobas
cxadi saxiT aniWebs A masivis pirvel elements, xolo
darCenili cxra elementi aracxadi saxiT iRebs am
111

mniSvnelobas. unda aRiniSnos, rom masivis gacxadebis
procesSi misi elementebi avtomaturad ar iReben sa-
wyis nulovan mniSvnelobebs. programistma am dros
pirvel elements mainc unda mianiWos nulovani mniSv-
neloba, raTa darCenili elementebi avtomaturad ga-
nuldes.
magaliTi 10.1. ganvixiloT programa, romelic masiv-
Ta elementebs ori gziT aniWebs sawyis mniSvnelobebs:
A masivis elementebis inicializireba warmoebs masivis
aRweris procesSi, xolo B masivis elementebi for cik-
luri struqturis gamoyenebiT iReben sawyis mniSvne-
lobebs. programis dasasruls orive masivis ele-
mentebi veqtorebis saxiT ibeWdeba.
#include <iostream>
#include <iomanip>
main( )
{
int A[10]={1, -3, 25, 17, 18, 95, 90, 70, -60, 10};
int B[10];
for(int i=0; i<10; i++)
{
cout<<"B["<<i<<"]=";
cin>>B[i]; }
cout<<endl<<"Array A: "<<endl;
for(int i=0; i<10; i++)
cout<<setw(5)<<A[i];
cout<<endl<<"Array B: "<<endl;
for(int i=0; i<10; i++)
cout<<setw(5)<<B[i];
cout<<endl;
return 0;}
Tu masivSi Semavali elementebis raodenoba aRmoCn-
deba naklebi mniSvnelobaTa raodenobaze, es gamoiw-
vevs sintaqsuri saxis Secdomas programaSi. magali-
Tad:
int M[5]={8, -9, 0, -12, 25, 7}; // sintaqsuri Secdomaa.
112

inicializirebis procesSi Tu ar aris miTiTebuli
masivis zoma, maSin elementebis raodenoba utoldeba
maTsave sawyis mniSvnelobaTa raodenobas. magaliTad:
int N[ ]={1, 2, 3, 4, 5};
am SemTxvevaSi iqmneba xuTi elementisgan Semdgari
masivi.
rogorc zemoT avRniSneT, masivSi Semavali elemen-
tebis ricxvi gansazRvravs mis zomas. amdenad, masivis
zoma mudmivi sididea da sasurvelia programebSi is
aRiweros masivTa gacxadebamde. ase magaliTad:
const int size=10; // masivis zoma ganisazRvra, rogorc
// mTeli tipis mudmivi sidide.
int A[size]; // aRiwera mTelricxva masivi "A"
// zomiT size.


10.3. erTganzomilebian masivTa gamoyenebis
magaliTebi
im SemTxvevaSi, rodesac saWiroa raime y=f(x) funqci-
is mniSvnelobaTa jamis gamoTvla argumentebis sxvada-
sxva mniSvnelobebis SemTxvevaSi, mizanSewonilia cik-
luri struqturis algoriTmis gamoyeneba, sadac auci-
lebelia gaviTvaliswinoT jamis dagroveba, romlis
sarealizaciod gamoiyeneba formula: s=s+y
i
. aRniSnul
operaciamde saWiroa s cvlads mivaniWoT nulovani
mniSvneloba (s=0), winaaRmdeg SemTxvevaSi Sejamebis Se-
degi damaxinjdeba, radgan jams daemateba s cvladis
is mniSvneloba, romelic mas gaaCnda ciklis Sesrule-
bamde. analogiurad warmoebs namravlis dagrovebac, im
gansxvavebiT, rom am SemTxvevaSi gamoiyeneba formula:
s=sy
i
, xolo s-is sawyisi mniSvneloba unda aviRoT er-
Tis toli (s=1).
magaliTi 10.2. SevadginoT programa, romelic aTi
mTeli tipis mniSvnelobis mqone elementisgan Semdgar
A masivis elementebs mianiWebs sawyis luw mniSvnelo-
113

bebs, gamoTvlis maT saSualo ariTmetikuls, namravls
da dabeWdavs sawyis masivsa da miRebul Sedegebs.

amoxsna:
// jamisa da namravlis dagroveba masivSi
#include <iostream>
#include <iomanip>
main( )
{
const int size=10; // masivis zoma
int A[size]; // masivis gacxadeba
int S=0; // S cvladSi inaxeba elementebis jami
unsigned long M=1; // M cvladSi inaxeba elementebis
// namravli
for(int i=0; i<size; i++)
{
A[i]=2+2*i;
S+=A[i];
M*=A[i];
}
S/=size;
cout<<"Current array: "<<endl;
for(int i=0; i<size; i++)
cout<<setw(5)<<A[i];
cout<<endl<<"Average="<<S<<endl;
cout<<"Multiple="<<M<<endl;
return 0;}

Sedegebi:
Current array:
2 4 6 8 10 12 14 16 18 20
Average=11
Multiple=3715891200

magaliTi 10.3. SevadginoT programa, romelic oci
elementisgan Semdgar B masivis elementebs mianiWebs
nebismier mTel mniSvnelobebs, gamoTvlis mocemuli
114

masivis kentindeqsiani da amavdroulad luwi mniSv-
nelobis mqone elementebis kvadratebis jams, dabeW-
davs sawyis masivs da miRebul Sedegs.
amoxsna: rogorc cnobilia, nebismieri mTeli
ricxvi luwia, Tu igi orze unaSTod iyofa. amdenad,
amocanis gadasawyvetad saWiroa gamoviyenoT mTel-
ricxva gayofis Sedegad miRebuli naSTis povnis
operacia (%), rameTu, mTeli tipis luwi ricxvi or-
ze gayofis Sedegad iZleva nulovan naSTs, xolo
amave tipis kenti ricxvis orze gayofis Sedegad mi-
Rebuli naSTis mniSvneloba erTis tolia.

#include <iostream >
#include <iomanip>
#include <math>
main( )
{
const int size=20;
int B[size];
long S=0;
for(int i=0; i<size; i++)
{
cout<<"B["<<i<<"]=";
cin>>B[i];
if (i%2 = =1 && B[i]%2 = =0)
S+=pow(B[i], 2);
}
cout<<endl<<"Current array: "<<endl;
for(int i=0; i<size; i++)
cout<<setw(5)<<B[i];
cout<<endl<<"S="<<S;
cout<<endl;
return 0;
}

magaliTi 10.4. SevadginoT programa, romelic nebis-
mieri tipis TxuTmeti elementisgan Semdgar A masivSi
115

moZebnis maqsimaluri da minimaluri mniSvnelobis mqo-
ne elementebs, dabeWdavs sawyis masivs da miRebul Se-
degebs.

amoxsna:
#include <iostream>
#include <iomanip>
main( )
{
const int size=15;
float A[size], max, min;
for(int i=0; i<size; i++)
{
cout<<"A["<<i<<"]=";
cin>>A[i];}
max=A[0];
min=A[0];
for(int i=0; i<size; i++)
{
if(max<=A[i])
max=A[i];
if(min>=A[i])
min=A[i];
}
cout<<endl<<"Current array: "<<endl;
for(int i=0; i<size; i++)
cout<<setw(5)<<A[i];
cout<<endl<<"Maximum="<<max<<endl;
cout<<"Minimum="<<min<<endl;
return 0;
}
magaliTi 10.5. SevadginoT programa, romelic wai-
kiTxavs mocemuli aTelementiani A masividan ricxviT
mniSvnelobebs da warmoadgens masivs Sesabamis histro-
gramasTan erTad.


116

amoxsna:
//histrogramis beWdvis programa
#include <iostream>
#include <iomanip>
main( )
{
const int size=10;
int A[size];
for(int i=0; i<size; i++)
A[i]=i+1;
cout<<"Item"<<setw(8)<<"Count"<<setw(10)<<"Histro"<<endl;
for(int i=0;i<size;i++)
{
cout<<setw(3)<<i<<setw(8)<<A[i]<<" ";
for(int j=1; j<=A[i]; j++)
cout<<setw(4)<<'*';
cout<<endl;
}
return 0;
}

Sedegi:




Item Count Histro
0 1 *
1 2 * *
2 3 * * *
3 4 * * * *
4 5 * * * * *
5 6 * * * * * *
6 7 * * * * * * *
7 8 * * * * * * * *
8 9 * * * * * * * * *
9 10 * * * * * * * * **
117

10.4. simboluri masivebi
aqamde Cven ganvixilavdiT mxolod mTelricxva ma-
sivebs, Tumca arsebobs masivTa sxva tipebic. amjerad
gavecnoT striqonTa Senaxvis SemTxvevebs simbolur ma-
sivebSi.
ase magaliTad: striqoni "hello" sinamdvileSi warmo-
adgens simboloTa masivs. aRniSnuli saxis masivebs ki
gaaCniaT garkveuli specifikuri Taviseburebani. Semde-
gi aRwera:
char string1[ ]= "first";
string1 masivis elementebs sawyisi mniSvnelobis sa-
xiT aniWebs "first" striqonSi Semaval calkeul simbo-
loebs. mocemuli masivis zomas ki kompilatori stri-
qonis sigrZidan gamomdinare gansazRvravs. aRsaniSna-
via, rom striqoni "first" Seicavs xuT simbolos damate-
buli striqonis dabolovebis specialuri simbolo,
romelsac nulovani simbolo ewodeba. amgvarad, masivi
string1 Sedgeba eqvsi elementisagan. nulovani simbolos
warmodgena xdeba \0 simboluri konstantas gamoyene-
biT. yvela striqoni swored am simboloTi sruldeba.
simboluri masivi SeiZleba warmodgenil iqnas cal-
keuli simboluri konstantebisgan Semdgari siis saxiT
masivis elementebis inicializirebis dros. magaliTad:
char string1[ ]= { f, i, r, s, t, \0};
radgan striqoni warmoadgens simboloTa masivs, am-
denad SesaZlebloba gvaqvs calkeul simboloze mi-
marTva movaxdinoT Semdegi saxiT: string1[0] aris simbo-
lo f, xolo string1[3] - simbolo s da a.S.
striqonis Seyvana simbolur masivSi SesaZlebelia
uSualod klaviaturis gamoyenebiTac. magaliTad, brZa-
neba char string2[20] qmnis simbolur masivs, romelSic
inaxeba maqsimum cxrameti simbolo da nulovani simbo-
lo; xolo operatori:
cin>>string2;
mocemuli masivis elementebs simboluri saxis mniSvne-
lobebs aniWebs klaviaturidan. striqonis saxiT war-
118

modgenili simboluri masivi SeiZleba davbeWdoT cout
operatoris gamoyenebiT:
cout<<string2<<endl;
amasTan, msgavsad cin operatorisa, cout operatoric
ar "zrunavs" simboluri masivis zomaze da striqonSi
arsebuli simboloebi ibeWdeba nulovan simbolomde.
magaliTi 10.6. ganvixiloT programa, romelic stri-
qonis saxiT warmoadgens simbolur masivs.

amoxsna:
#include <iostream>
main( )
{
char string1[20], string2[ ]="Welcome to C++!";
cout<<"Input string1: ";
cin>>string1;
cout<<"string1="<<string1<<endl;
cout<<"string2="<<string2<<endl;
for(int i=0; string1[i]!= \0; i++)
cout<<string1[i]<< ;
cout<<endl;
return 0;}
im SemTxvevaSi, Tu string1 masivis elementebs mivani-
WebT "hello" striqonis simboloebs, miviRebT Semdegi
saxis Sedegs:
Input string1: hello
string1=Hello
string2=Welcome to C++!
H e l l o

savarjiSoebi:

1. SeadgineT programa, romelic A=(A
0
, A
1
,,A
10
) masivis
elementebs mianiWebs nebismier mniSvnelobebs, ga-
moTvlis masivis dadebiTi elementebis naxevarjams
da uaryofiTi mniSvnelobis mqone elementebis sa-
Sualo ariTmetikuls.
119

2. SeadgineT programa, romelic B=(B
0
, B
1
,,B
17
) masivis
elementebs mianiWebs erTidan dawyebuli kent mniSv-
nelobebs zrdadobis mixedviT da dabeWdavs miRe-
bul masivs Sesabamis histrogramasTan erTad.
3. SeadgineT programa, romelic A=(A
0
, A
1
,,A
19
) masivis
dadebiT elementebs Soris moZebnis udidesi mniSv-
nelobis mqone elements da uaryofiTi mniSvnelo-
bis mqone elementebs Soris - umcires elements.
4. SeadgineT programa, romelic gamoTvlis M=(M
0
,
M
1
,,M
12
) masivis luwindeqsiani elementebis namrav-
lsa da kentindeqsiani elementebis kubebis jams.
5. SeadgineT programa, romelic gamoTvlis N=(N
0
,
N
1
,,N
20
) masivis moduliT udidesi da moduliT um-
ciresi elementebis namravls.
6. SeadgineT programa, romelic gamoTvlis C=(C
0
,
C
1
,,C
14
) masivis luwindeqsiani da amavdroulad
arauaryofiTi mniSvnelobebis mqone elementebis sa-
Sualo ariTmetikuls.
7. SeadgineT programa, romelic b=(b
0
, b
1
,,b
19
) masivis
dadebiT elementebs Soris moZebnis umcires ele-
mentsa da mis indeqss.
8. mocemulia ori veqtori: A=(A
0
, A
1
,,A
9
) da B=(B
0
,
B
1
,,B
9
). SeadgineT programa, romelic moZebnis am
veqtorTa umciresi mniSvnelobebis elementebs So-
ris udidess.

9. SeadgineT programa, romelic masivisa da Calagebu-
li ciklebis gamoyenebiT warmoadgens Semdeg
suraTs:
* * * * * * *
* * * * * *
* * * * *
* * * *
* * *
* *
*
120

Tavi XI
masivis elementebis daxarisxeba
11.1. martivi gadanacvlebis meTodi
monacemTa daxarisxeba gansazRvruli wesiT zrda-
dobis an klebadobis mixedviT Tavisi arsiT kombina-
toruli amocanebis klass miekuTvneba. specialistTa
azriT, kompiuteruli drois daaxloebiT 25% sistema-
turad ixarjeba daxarisxebis amocanebze. amitom aR-
niSnuli algoriTmebi gansakuTrebul yuradRebas imsa-
xureben.
rogorc wesi, yoveli organizacia axdens amaTuim
monacemTa daxarisxebas, xolo xSir SemTxvevebSi saWi-
ro xdeba monacemTa mniSvnelovani moculobis daxa-
risxeba. gamomdinare zemoT Tqmulidan, Cven ganvixi-
lavT erTganzomilebian masivebSi monacemTa daxaris-
xebis ramdenime meTods, vinaidan aucileblobis Sem-
TxvevaSi yovelTvis SesaZlebelia organzomilebiani
masivebis erTganzomilebian masivebze dayvana indeqse-
bis gadaTvlis gziT.
ganvixiloT martivi gadanacvlebis algoriTmi da
Sesabamisi programa C++-ze.
davuSvaT, mocemulia erTganzomilebiani masivi
a=(a
0
, a
1
,,a
n-1
), sadac n=10. saWiroa movaxdinoT masivis
elementebis daxarisxeba zrdadobis mixedviT. martivi
gadanacvlebis algoriTmis arsi mdgomareobs SemdegSi:
(ixileT nax. 25) Sedardeba veqtoris mezobeli elemen-
tebis wyvili: a
i
da a
i+1
; Tu a
i
a
i+1
, gadavdivarT elemente-
bis Semdegi wyvilis Sedarebaze da a.S. veqtoris bolo
elementamde. im SemTxvevaSi, Tu a
i
>a
i+1
, adgili aqvs
elementebis gadaadgilebas, risTvisac Semogvaqvs dama-
tebiTi cvladi. amis Semdeg gadavdivarT momdevno
elementebis Sedarebaze. algoriTmi iTvaliswinebs
erTgvari k mTvlelis gamoyenebas, romelic afiqsirebs
elementebis gadanacvlebaTa ricxvs masivis elemente-
bis erTjeradi daTvalierebis dros.
121





































ki
ara
ara ki
ki ara
dasawyisi
a
i
, n
k=0
i=0
a
i
>a
i+1
temp=a
i
a
i
= a
i+1
a
i+1
=temp
k=k+1
i=i+1
1
1
i<n-1

k=0

a
i

dasasruli
nax 25.
122

yoveli daTvalierebis Semdeg saWiroa mTvlelSi
arsebuli informaciis gaanalizeba. Tu k0, niSnavs,
rom veqtoris elementebis gadaadgilebas hqonda adgi-
li daTvalierebis dros da e.i. masivi jer mTlianad
daxarisxebuli ar aris. maSasadame, aucilebelia gar-
daqmnili masivis xelaxali daTvaliereba. es procesi
grZeldeba manamde, sanam k0, xolo rodesac k gau-
toldeba nuls (k=0), imis mimaniSnebelia, rom daTva-
lierebis dros elementebis gadanacvlebas adgili ar
hqonia da masivi mTlianad daxarisxebulia.
mocemuli algoriTmis Sesabamis programas aqvs
Semdegi saxe:
//martivi gadanacvlebis meTodiT masivis daxarisxeba
//zrdadobiT
#include <iostream>
#include <iomanip>
main( )
{
const int n=10;
float a[n], temp;
int k;
for(int i=0; i<n; i++)
{
cout<<"a["<<i<<"]=";
cin>>a[i];
}
cout<<endl<<"Current array:"<<endl;
for(int i=0; i<n; i++)
cout<<setw(5)<<a[i];
do
{
k=0;
for(int i=0; i<n-1; i++)
{
if(a[i]>a[i+1])
{
123

temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
k++;
}}
}while (k!=0);
cout<<endl<<"Sorted array:"<<endl;
for(int i=0; i<n; i++)
cout<<setw(5)<<a[i];
cout<<endl;
return 0;
}


11.2 buStisebri daxarisxebis meTodi
ganvixiloT aTi elementisgan Semdgari A masivi da
movaxdinoT misi elementebis dalageba zrdadobis mi-
xedviT buStisebri daxarisxebis meTodis gamoyenebiT.
daxarisxebis aRniSnul meTods "CaZirvis" meTodsac
uwodeben, radgan masivis umciresi mniSvneloba, msgav-
sad wyalSi haeris buStisa, sul zeviT (masivis dasa-
wyisisken) miiwevs, xolo udidesi mniSvneloba sul uf-
ro uaxlovdeba wylis fskers (masivis bolos), anu ad-
gili aqvs mis erTgvar "CaZirvas".
aRniSnuli meTodi saWiroebs masivis ramdenime da-
Tvalierebas. yovel etapze, msgavsad martivi gadanacv-
lebis meTodisa, adgili aqvs masivis wyvili mezobeli
a
i
da a
i+1
elementebis Sedarebas da aqac isini gadaad-
gildebian mxolod im SemTxvevaSi, rodesac sruldeba
piroba: a
i
>a
i+1
; xolo Tu a
i
a
i+1
, mowmdeba masivis momdev-
no mezobeli wyvili da a.S. bolo elementamde. (ixi-
leT nax. 26).
gansxvavebiT martivi gadanacvlebis meTodisa, aq ar
gamoiyeneba k mTvleli da pirvelive etapis dasasruls
masivis udidesi mniSvnelobis mqone elementi garanti-
124

rebulad ikavebs masivis bolos Tavis adgils da masi-
vis morigi daTvalierebisas is aRar ganixileba.
momdevno etapze Semdegi udidesi mniSvnelobis mqo-
ne elementi Tavsdeba saWiro adgilas masivSi da pro-
cesi grZeldeba manam, sanam ar moxdeba masivis elemen-
tebis sruli daxarisxeba zrdadobis mixedviT.
mocemuli algoriTmis Sesabamis programas aqvs
Semdegi saxe:
//masivis dalageba zrdadobiT buStisebri
//daxarisxebis meTodis gamoyenebiT
#include <iostream>
#include <iomanip>
main( )
{
const int n=10;
float A[n], temp;
for(int i=0; i<n; i++)
{
cout<<"A["<<i<<"]=";
cin>>A[i];
}
cout<<endl<<"Current Array:"<<endl;
for(int i=0; i<n; i++)
cout<<setw(5)<<A[i];
cout<<endl;
for(int m=1; m<n; m++)
for(int i=0; i<n-1; i++)
if(A[i]>A[i+1])
{
temp=A[i];
A[i]=A[i+1];
A[i+1]=temp;}
cout<<endl<<"Sorted array:"<<endl;
for(int i=0; i<n; i++)
cout<<setw(5)<<A[i];
cout<<endl;
return 0;}
125





































ki
ara
ara ki
ki ara
dasawyisi
a
i
, n
m=1
i=0
a
i
>a
i+1
temp=a
i
a
i
= a
i+1
a
i+1
=temp
m=m+1
i=i+1
1
1
i<n-1

a
i

dasasruli
nax. 26.
m<n

126

amgvarad, Tu masivi Sedgeba n raodenobis elementi-
sagan, misi daxarisxebisTvis saWiroa n-1 raodenobis
etapis gamoyeneba da TviToeul etapze n-1 raodenobis
Sedarebis operaciis ganxorcieleba. aRniSnuli meTo-
di sakmaod martivia daprogramebis TvalsazrisiT, mag-
ram Tavad daxarisxebis procesi mimdinareobs xangrZ-
livi drois manZilze, rac didi zomis masivebis Sem-
TxvevaSi aSkaraa da aRniSnuli meTodis nakls warmo-
adgens.


11.3. daxarisxebis kombinirebuli meTodi
daxarisxebis kombinirebuli meTodi moicavs marti-
vi gadanacvlebisa da buStisebri daxarisxebis meTod-
Ta upiratesobebs.
ganvixiloT aTi elementisgan Semdgari A masivis
dalagebis procesi zrdadobis mixedviT aRniSnuli me-
Todis gamoyenebiT.
msgavsad "CaZirvis" algoriTmisa, aqac adgili aqvs
masivis mezobeli elementebis wyvil-wyvilad Sedare-
bas da saWiroebis SemTxvevaSi maT gadaadgilebas.
aqac, iseve, rogorc martivi gadanacvlebis meTod-
Si, gamoiyeneba erTgvari k mTvleli; magram daxarisxe-
bis kombinirebuli meTodis upiratesoba mdgomareobs
SemdegSi:
aq ganixileba daxarisxebis procesis dasrulebis
ori SesaZlo varianti, rac mniSvnelovnad aCqarebs
elementebis daxarisxebis process:
a) daxarisxebis dasruleba yvela iteraciis gavliT;
b) daxarisxebis dasruleba Sedarebis yvela operaciis
Sesrulebamde. es aris ciklebidan alternatiuli
gamosvlis SesaZlebloba SemTxvevisaTvis, rodesac
k mTvlelis mniSvneloba utoldeba nuls (k=0).
ganxiluli algoriTmis blok-sqema naCvenebia nax.
27-ze, xolo Sesabamis programas aqvs Semdegi saxe:

127

//daxarisxebis kombinirebuli meTodi
#include <iostream>
#include <iomanip>
main( )
{
const int n=10;
float A[n], temp;
int i, l, k;
for(i=0; i<n; i++){
cout<<"A["<<i<<"]=";
cin>>A[i];
}
cout<<endl<<"Current array:"<<endl;
for(i=0; i<n; i++)
cout<<setw(5)<<A[i];
for(l=1; l<=n-1; l++)
{
k=0;
for(i=0; i<n-l; i++)
{
if(A[i]>A[i+1])
{
temp=A[i];
A[i]=A[i+1];
A[i+1]=temp;
k++;
}}
if(k= =0)
break;
}
cout<<endl<<"Sorted array:"<<endl;
for(i=0; i<n; i++)
cout<<setw(5)<<A[i];
cout<<endl;
return 0;
}

128





































ki
ara
ki
ara
ara ki
ki ara
dasawyisi
a
i
, n
k=0
i=0
a
i
>a
i+1
temp=a
i
a
i
= a
i+1
a
i+1
=temp
l=l+1
i=i+1
1
1
i<n-l

a
i

dasasruli
nax. 27.
k=0

l=1
k=k+1
ln-1

129

Tavi XII
Zieba masivebSi
12.1. wrfivi Ziebis meTodi
xSir SemTxvevaSi programistebs muSaoba uwevT mo-
nacemTa did moculobasTan, romelic warmodgenilia
masivebis saxiT. zogjer saWiroa ganisazRvros, Sei-
cavs Tu ara masivi amaTuim mniSvnelobis mqone ele-
ments. aRniSnul process ewodeba Zieba masivSi. arse-
bobs saWiro mniSvnelobis mqone elementis Ziebis ori
meTodi:
1. martivi wrfivi Ziebis meTodi;
2. ormagi Ziebis anu dixotomiis meTodi.
wrfivi Ziebis meTodis arsi mdgomareobs SemdegSi:
winaswar moicema gansazRvruli mniSvnelobis mqone
cvladi da is TanmimdevrobiT Sedardeba masivis yvela
elementis mniSvnelobas. Tu masivis romelime elemen-
tis mniSvneloba daemTxveva mocemuli cvladis
mniSvnelobas, programa gamoitans Sesabamisi cvladis
indeqss; winaaRmdeg SemTxvevaSi programa dasruldeba
SetyobinebiT: "We didnt find this item", rac niSnavs, rom
saWiro elementi masivSi ver moiZebna.
amgvarad, Ziebis procesi aRniSnuli meTodis gaTva-
liswinebiT grZeldeba manamde, sanam ar Semowmdeba ma-
sivis yvela elementi da ar moiZebneba maT Soris ise-
Ti, romlis mniSvnelobac toli iqneba mocemuli
cvladis mniSvnelobis (cxadia, Tu aseTi elementi ma-
sivSi saerTod arsebobs).
aRniSnuli meTodi martivia daprogramebis Tval-
sazrisiT, magram didi zomis masivebis SemTxvevaSi xa-
siaTdeba araefeqturobiT.
davuSvaT, mocemulia masivi A[15] da k cvladi. saWi-
roa wrfivi Ziebis meTodiT movZebnoT masivis is ele-
menti, romlis mniSvnelobac emTxveva k cvladis mniSv-
nelobas. amocanis gadawyvetis Sesabamisi algoriTmis
blok-sqema warmodgenilia nax. 28-ze, romlis mixedviT
130

daprogramebis ena C++-ze Cawerilia saTanado progra-
ma.


































ara
ara
ki
ara ki
dasawyisi
A
i
, n, k,
P
i=0, S=0
A
i
=k
P=i
P
S=S+1
i=i+1

ki
1
S=0
I tem
didnt
find
dasasruli
nax. 28
i<n
1
131

//wrfivi Ziebis meTodi
#include <iostream>
main( )
{
const int n=15;
float A[n], k;
int s=0, p;
for(int i=0; i<n; i++)
{
cout<<"A["<<i<<"]=";
cin>>A[i];
}
cout<<\n k=";
cin>>k;
for(int i=0; i<n; i++)
{
if(A[i]= =k)
{
p=i;
cout<<"It's item No "<<p<<endl;
s++;
}
}
if(s= =0)
cout<<"This item didn't find!"<<endl;
cout<<"The problem is over!"<<endl;
return 0;
}

12.2. dixotomiis meTodi
ganvixiloT oci elementisgan Semdgari A masivi da
dixotomiis anu ormagi Ziebis meTodiT movZebnoT saWi-
ro mniSvnelobis mqone elementi masSi.
aRniSnuli meTodis arsi mdgomareobs SemdegSi:
132

aucilebeli piroba dixotomiis meTodis muSaobisa
aris masivTa daxarisxeba, e.i. ormagi Ziebis procesi
xorcieldeba mxolod daxarisxebul masivebSi.
davuSvaT, rom A masivis elementebi dalagebulia
zrdadobis mixedviT. algoriTmi iTvaliswinebs masivis
Sua elementis moZebnas, romlis mniSvnelobac unda Se-
dardes winaswar mocemuli cvladis mniSvnelobas; Tu
maTi mniSvnelobebi daemTxva, es niSnavs, rom saWiro
elementi moiZebna masivSi da Ziebis procesi wydeba. wi-
naaRmdeg SemTxvevaSi, Tu cvladis mniSvneloba aRmoCn-
deba naklebi masivis Sua elementis mniSvnelobaze, Zie-
ba warmoebs masivis pirvel naxevarSi, xolo Tu cvla-
dis mniSvneloba gadaaWarbebs masivis Sua elementis
mniSvnelobas, Zieba xorcieldeba sawyisi masivis meore
naxevarSi.
amdenad, Ziebis pirvelive etapze adgili aqvs masi-
vis ganaxevrebas, Semdeg miRebuli naxevrebidan erT-
erTis ignorirebis gziT da masivis meore naxevris Su-
aze gayofiT Zieba warmoebs sawyisi masivis meoTxedSi
da a.S. procesi grZeldeba manamde, sanam masivis erT-
erTi naxevris Sua elementis mniSvneloba ar daemTxve-
va mocemuli cvladis mniSvnelobas, an sanam saWiro
elementi ar moiZebneba.
amgvarad, marTalia, dixotomiis meTodi winaswar
moiTxovs masivTa daxarisxebas, magram sanacvlod Zie-
bis process aCqarebs yovel etapze sawyisi da miRebu-
li masivebis ganaxevrebis gziT.
programaSi gamoiyeneba Semdegi cvladebi: middle
aRniSnavs masivis Sua elementis indeqss, Low masivis
sawyisi elementis indeqss, High - masivis bolo elemen-
tis indeqss; s cvladi, romlis mixedviT ganisazRv-
reba arsebobs Tu ara saZiebeli mniSvnelobis mqone
elementi masivSi, k saZiebeli mniSvnelobis cvladi.
zemoT aRniSnuli algoriTmis Sesabamis programas
aqvs Semdegi saxe:

133

// dixotomiis meTodi
#include <iostream>
#include <iomanip>
main( )
{
const int n=20;
float A[n], k;
int middle, Low, High, s=0;
for(int i=0; i<n; i++)
{
A[i]=2*i;
cout<<setw(4)<<A[i];
}
cout<<\n Input Key=";
cin>>k;
Low=0;
High=n-1;
while(Low<=High)
{
middle=(Low+High)/2;
if(k= =A[middle])
{
cout<<"It's item No "<<middle<<endl;
s++;
break;
}
else
if(k<A[middle])
High=middle-1;
else
Low=middle+1;
}
if(s= =0)
cout<<"We didn't find this item"<<endl;
cout<<"The problem is over";
cout<<endl;
return 0; }
134

amgvarad, SegviZlia davaskvnaT, rom mcire zomis ma-
sivebSi daprogramebis simartivis TvalsazrisiT sa-
Wiro mniSvnelobis mqone elementis mosaZebnad savse-
biT sakmarisia wrfivi Ziebis meTodis gamoyeneba, xo-
lo didi zomis masivebSi kompiuteruli drois mniSv-
nelovani danaxarjebis gamo misi gamoyeneba ar aris
mizanSewonili da aseT SemTxvevebSi mivmarTavT dixo-
tomiis meTods, romelic gacilebiT mcire drois Sua-
ledSi iZleva Sedegs, oRond iTxovs masivTa winaswar
daxarisxebas, risTvisac SeiZleba gamoyenebul iqnas
Cven mier zemoT ganxilul meTodTagan nebismieri maT-
gani.


savarjiSoebi:
1. mocemulia masivi A=(A
0
, A
1
, , A
19
). SeadgineT prog-
rama, romelic moaxdens masivis elementebis
daxarisxebas klebadobis mixedviT martivi gada-
nacvlebis meTodis gamoyenebiT.
2. mocemulia masivi B=(B
0
, B
1
, , B
9
). SeadgineT prog-
rama, romelic moaxdens masivis elementebis
daxarisxebas klebadobiT buStisebri daxarisxe-
bis meTodis gamoyenebiT.
3. mocemulia masivi C=(C
0
, C
1
, , C
14
). SeadgineT prog-
rama, romelic moaxdens masivis elementebis
dalagebas klebadobis mixedviT daxarisxebis
kombinirebuli meTodis gamoyenebiT.
4. mocemulia masivi A=(A
0
, A
1
, , A
9
) da k cvladi.
SeadgineT programa, romelic masivis elementebs
zrdadobis mixedviT mianiWebs erTidan kent
mniSvnelobebs da wrfivi Ziebis meTodiT moZebnis
k cvladis mniSvnelobis toli mniSvnelobis
mqone elements masivSi, Tu ki aseTi arsebobs.
5. mocemulia masivi A=(A
0
, A
1
, , A
19
) da k cvladi.
SeadgineT programa, romelic moaxdens A masivis
daxarisxebas klebadobis mixedviT "CaZirvis" me-
135

TodiT da dixotomiis meTodiT moZebnis k
cvladis mniSvnelobis mqone elements masivSi.
6. mocemulia masivi B=(B
0
, B
1
, , B
14
) da p cvladi.
SeadgineT programa, romelic daaxarisxebs
masivis elementebs zrdadobiT kombinirebuli me-
Todis gamoyenebiT da ormagi Ziebis meTodiT
moZebnis p cvladis mniSvnelobis mqone Sesabamis
elements masivSi.
7. mocemulia masivi A=(A
0
, A
1
, , A
19
). SeadgineT prog-
rama, romelic daaxarisxebs masivis elementebs
zrdadobiT, gansazRvravs miRebuli masivis Sua
elementis mniSvnelobasa da indeqss.
8. mocemulia masivi C=(C
0
, C
1
, , C
12
). SeadgineT prog-
rama, romelic daaxarisxebs masivis elementebs
klebadobiT da gamoTvlis sawyisi da miRebuli
masivebis Sua elementebis mniSvnelobebis nam-
ravls.
9. mocemulia masivi D=(D
0
, D
1
, , D
16
). SeadgineT prog-
rama, romelic daaxarisxebs masivis elementebs
zrdadobiT da gamoTvlis miRebuli masivis ele-
mentebis kvadratebis jams, Tu daxarisxebuli ma-
sivis Sua elementis mniSvneloba kentia.
10. mocemulia masivi X=(X
0
, X
1
, , X
9
). SeadgineT prog-
rama, romelic daaxarisxebs masivis elementebs
klebadobiT da gamoTvlis miRebuli masivis luw-
indeqsiani elementebis saSualo ariTmetikuls,
Tu daxarisxebuli masivis Sua elementis mniSvne-
loba luwia.







136

Tavi XIII
mravalganzomilebiani masivebi
13.1. matricebi
daprogramebis ena C++-Si masivebs SeiZleba gacan-
des ramdenime indeqsi. mravalganzomilebiani masivebis
tipiuri warmomadgenelia erTgvar mniSvnelobaTa
cxrilebi, romlebic informacias moicaven striqoneb-
sa da svetebSi.
imisaTvis, rom am cxrilebSi ganisazRvros esaTuis
elementi, saWiroa misi ori indeqsis miTiTeba. pirveli
maTgani striqonis nomeria, xolo meore im svetis
nomeri, romelTa gadakveTazec imyofeba elementi.
im masivebs an cxrilebs, romelTa calkeul ele-
mentze misamarTad saWiroa ori indeqsis gamoyeneba,
organzomilebiani masivebi anu matricebi ewodebaT. aR-
saniSnavia, rom mravalganzomilebian masivebSi
elementebs SeiZleba gaaCndes orze meti indeqsic.
nax. 29-ze warmodgenilia organzomilebiani a masivi,
romelic moicavs sam striqonsa da oTx svets. am Sem-
TxvevaSi amboben, rom saqme gvaqvs matricasTan ganzo-
milebiT sami oTxze.
a masivis yoveli elementi ganisazRvreba misi saxe-
liT da Caiwereba Semdegi saxiT: a[i][j], sadac a - masi-
vis identifikatoria, xolo i da j - indeqsebi, romle-
bic erTmniSvnelovnad gansazRvraven a masivis yovel
elements. unda aRiniSnos, rom matricis rigiT pirvel
elements, msgavsad veqtorebisa, gaaCnia nulovani in-
deqsebi.
mravalganzomilebiani masivebis elementebi iseve
iReben sawyis mniSvnelobebs, rogorc erTganzomilebi-
ani masivis elementebi maTi gacxadebis dros. magali-
Tad, B[2][2] matricis inicializireba SesaZlebelia Sem-
degi saxiT:
int B[2][2]={ {1, 2}, {3, 4} };
137

elementTa mniSvnelobebis dajgufeba xdeba striqo-
nebSi da isini Tavsdeba figurul frCxilebSi. amgva-
rad, B[0][0] da B[0][1] elementebs eniWebaT Sesabamisad
erTisa da oris toli mniSvnelobebi, xolo B[1][0] da
B[1][1] elementebs Sesabamisad samisa da oTxis toli
mniSvnelobebi.
Tu matricis inicializireba xdeba Semdegi saxiT:
int B[2][2]={ {1}, {3, 4} };
es niSnavs, rom B[0][0] elementi iRebs erTis tol
mniSvnelobas, xolo B[0][1] avtomaturad nuldeba;
B[1][0] elements eniWeba samis, xolo B[1][1] elements
oTxis toli mniSvneloba.

sveti 0 sveti 1 sveti 2 sveti 3
striqoni 0 a[0][0] a[0][1] a[0][2] a[0][3]
striqoni 1 a[1][0] a[1][1] a[1][2] a[1][3]
striqoni 2 a[2][0] a[2][1] a[2][2] a[2][3]






nax. 29.

ganvixiloT programa, sadac sami organzomilebiani
masivis elementebs eniWebaT konkretuli mniSvnelobebi
da ciklurad xdeba maTi ekranze dabeWdva.

//sawyis mniSvnelobaTa miniWeba mravalganzomile-
//bian masivebSi
#include <iostream>
#include <iomanip>
main( )
{
int array1[2][3]={{1, 2, 3},{4, 5, 6}};
striqonis indeqsi
svetis indeqsi
masivis saxeli
138

int array2[2][3]={1, 2, 3, 4, 5};
int array3[2][3]={{1, 2},{4}};
cout<<"Array1:"<<endl;
for(int i=0; i<2; i++)
{
for(int j=0; j<3; j++)
cout<<setw(4)<<array1[i][j];
cout<<endl;}
cout<<"Array2:"<<endl;
for(int i=0; i<2; i++)
{
for(int j=0; j<3; j++)
cout<<setw(4)<<array2[i][j];
cout<<endl;
}
cout<<"Array3:"<<endl;
for(int i=0; i<2; i++)
{
for(int j=0; j<3; j++)
cout<<setw(4)<<array3[i][j];
cout<<endl;}
return 0;}

Sedegebi:
Array1:
1 2 3
4 5 6
Array2:
1 2 3
4 5 0
Array3:

1 2 0
4 0 0
aRsaniSnavia, rom egm-is mexsierebaSi masivis yvela
elementi mimdevrobiT inaxeba, miuxedavad maTi indeqse-
bis raodenobisa. organzomilebian masivebSi ki pirve-
139

li striqoni Tavsdeba meore striqonis win. aq yoveli
striqoni SeiZleba ganxiluli iqnas, rogorc erTgan-
zomilebiani masivi.

13.2. organzomilebiani masivebis gamoyenebis
magaliTebi
magaliTi 13.1. mocemulia aTi studentisgan Semdgari
jgufi, romelTagan TviToeuli studenti abarebs oTx
gamocdas. maTi Sefaseba warmoebs asquliani sistemiT.
SevadginoT programa, romelic studentebs aniWebs yo-
vel gamocdaSi konkretul qulebs, iTvlis TviToeuli
studentis saSualo Sedegs, jgufSi gansazRvravs sa-
ukeTeso da yvelaze cud Sedegebs.
amoxsna: msgavsad veqtorebisa, matricebSic sasur-
velia striqonebisa da svetebis raodenoba winaswar
ganisazRvros konstantebis saxiT. am SeniSvnis gaTva-
liswinebiT dasmuli amocanis amoxsnis programa Sem-
degia:

//jgufuri maCveneblebis amocana
#include <iostream>
#include <iomanip>
main( )
{
const int students=10;
const int exams=4;
int array[students][exams];
int max, min, k, p, m, n;
float average[students];
for(int i=0; i<students; i++)
{
for(int j=0; j<exams; j++)
{
cout<<"array["<<i<<"]["<<j<<"]=";
cin>>array[i][j];
}}
140

cout<<endl<<"Current array:"<<endl;
for(int i=0; i<students; i++)
{
for(int j=0; j<exams; j++)
cout<<setw(5)<<array[i][j];
cout<<endl;
}
max=array[0][0];
min=array[0][0];
for(int i=0; i<students; i++)
{
average[i]=0;
for(int j=0; j<exams; j++)
{
average[i]+=array[i][j];
if(max<=array[i][j])
{
max=array[i][j];
k=i;
p=j;
}
if(min>=array[i][j])
{
min=array[i][j];
m=i;
n=j;
}}
cout<<"average["<<i<<"]="<<average[i]/exams<<endl;
}
cout<<"max="<<max<<endl;
cout<<"Maximum's indices are array["<<k<<"]["<<p<<"]"<<
endl;
cout<<"min="<<min<<endl;
cout<<"Minimum's indices are array["<<m<<"]["<<n<<"]"<<
endl;
return 0;
}
141

magaliTi 13.2. mocemulia kvadratuli matrica
a[4x4]. SevadginoT programa, romelic moaxdens matri-
cis transponirebas da dabeWdavs sawyis da miRebul
matricebs.
amoxsna: rogorc cnobilia, Tu [a
ij
]
mxn
matricaSi
n=m, maSin aseT matricas kvadratul matricas uwode-
ben. xolo a matricis transponirebulia matrica, rom-
lis striqonebs Sesabamisad a matricis svetebi Sead-
genen, xolo svetebs ki Sesabamisad a matricis stri-
qonebi. a matricis transponirebuli matrica warmod-
genilia, rogrc: a
t
anu maTematikuri TvalsazrisiT es
matricebi Semdegi saxiT Caiwereba:

;




33 32 31 30
23 22 21 20
13 12 11 10
03 02 01 00
a a a a
a a a a
a a a a
a a a a
a =

33 23 13 03
32 22 12 02
31 21 11 01
30 20 10 00




a a a a
a a a a
a a a a
a a a a
a
t
=


rogorc Canaweridan Cans, matricis transponirebis
dros sawyisi matricis mTavar diagonalze arsebuli
elementebi: , , ,
33 22 11 00
a a a a ucvlelad rCeba Tav-Tavis
adgilebze.
yovelive zemoT Tqmulis gaTvaliswinebiT dasmuli
amocanis gadawyvetis programa C++-ze iRebs Semdeg sa-
xes:

//matricis transponireba
#include <iostream>
#include <iomanip>
main( )
{
const int rows=4;
const int columns=4;
142

int a[rows][columns], temp;
cout<<"Input array:"<<endl;
for(int i=0; i<rows; i++)
{

for(int j=0; j<columns; j++)
{
cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];}}
cout<<\n Current array:"<<endl;
for(int i=0; i<rows; i++)
{
for(int j=0; j<columns; j++)
cout<<setw(5)<<a[i][j];
cout<<endl;}
for(int i=0; i<rows; i++)
{
for(int j=i+1; j<columns; j++)
{
temp=a[i][j];
a[i][j]=a[j][i];
a[j][i]=temp;}}
cout<<\nTransposed array:"<<endl;
for(int i=0; i<rows; i++)
{
for(int j=0; j<columns; j++)
cout<<setw(5)<<a[i][j];
cout<<endl;}
return 0;}

magaliTi 13.3. mocemulia kvadratuli matrica
a[4x4]. SevadginoT programa, romelic dabeWdavs
moduliT umcires elements matricaSi da am elementis
Semcveli striqonis elementebs.

amoxsna:

143

#include <iostream>
#include <iomanip>
#include <math>
main( )
{
const int rows=4;
const int columns=4;
float a[rows][columns], min;
int k, p;
cout<<"Input array:"<<endl;
for(int i=0; i<rows; i++)
{
for(int j=0; j<columns; j++)
{
cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];}}
cout<<\nCurrent array:"<<endl;
for(int i=0; i<rows; i++)
{
for(int j=0; j<columns; j++)
cout<<setw(5)<<a[i][j];
cout<<endl;}
min=fabs(a[0][0]);
for(int i=0; i<rows; i++)
{
for(int j=0; j<columns; j++)
{
if(min>=fabs(a[i][j]))
{
min=a[i][j];
k=i;
p=j;}
}}
cout<<"min="<<min<<endl;
cout<<"Indices of minimum item=["<<k<<"]["<<p<<"]"<<
endl;
for(int j=0; j<columns; j++)
144

cout<<setw(5)<<a[k][j];
cout<<endl;
return 0;
}

magaliTi 13.4. mocemulia matrica a[3x5]. SevadginoT
programa, romelic Seucvlis adgilebs matricis pir-
vel da maqsimaluri mniSvnelobis mqone elementis Sem-
cvel striqonebs da dabeWdavs maqsimaluri mniSvnelo-
bis elements, misi striqonis nomers, sawyis da miRe-
bul matricebs.

amoxsna:

#include <iostream>
#include <iomanip>
main( )
{
const int rows=3;
const int columns=5;
float a[rows][columns], max, temp;
int i, j, k;
cout<<"Input array:"<<endl;
for(i=0; i<rows; i++)
{
for(j=0; j<columns; j++)
{
cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];}}
cout<<\nCurrent array:"<<endl;
for(i=0; i<rows; i++)
{
for(j=0; j<columns; j++)
cout<<setw(5)<<a[i][j];
cout<<endl;}
max=a[0][0];
for(i=0; i<rows; i++)
145

{
for(j=0; j<columns; j++)
{
if(max<=a[i][j])
{
max=a[i][j];
k=i;}
}}
i=0;
cout<<"max="<<max<<endl;
cout<<"Index of row="<<k<<endl;
for(j=0; j<columns; j++)
{
temp=a[i][j];
a[i][j]=a[k][j];
a[k][j]=temp;}
cout<<endl<<"New array:"<<endl;
for(i=0; i<rows; i++)
{
for(j=0; j<columns; j++)
cout<<setw(5)<<a[i][j];
cout<<endl;}
return 0;
}

savarjiSoebi:
1. mocemulia matrica A[5x5]. SeadgineT programa, ro-
melic matricis uaryofiTi mniSvnelobis mqone
elementebs Secvlis erTiT da gamoTvlis miRebuli
matricis elementebis saSualo ariTmetikuls.
2. mocemulia kvadratuli matrica B[4x4]. SeadgineT
programa, romelic dabeWdavs matricis moduliT
udidesi mniSvnelobis mqone elements da am elemen-
tis Semcvel svets.
3. mocemulia matrica C[2x4]. SeadgineT programa, ro-
melic gamoTvlis matricis dadebiTi elementebis
146

jams, uaryofiTi mniSvnelobis mqone elementebis
namravls da moZebnis maT Soris umcires Sedegs.
4. mocemulia kvadratuli matrica m[3x3]. SeadgineT
programa, romelic adgilebs Seucvlis im svetsa
da striqons, romelTa gadakveTazec imyofeba mat-
ricis udidesi mniSvnelobis mqone elementi.
5. mocemulia kvadratuli matrica N[4x4]. SeadgineT
programa, romelic gamoTvlis matricis elemente-
bis jamebs svetebis mixedviT da dabeWdavs im sve-
tis elementebs, romelTa jamic maqsimaluria.
6. mocemulia kvadratuli matrica B[3x3]. SeadgineT
programa, romelic gamoTvlis matricis elemente-
bis namravls striqonebis mixedviT da dabeWdavs im
striqonis elementebs, romelTa namravlic minima-
luria.
7. mocemulia kvadratuli matrica C[3x3]. SeadgineT
programa, romelic moaxdens matricis transponire-
bas da dabeWdavs C
t
matricas.
8. mocemulia matrica B[3x4]. SeadgineT programa, ro-
melic adgilebs Seucvlis matricis meore svetsa
da moduliT umciresi mniSvnelobis mqone elemen-
tis Semcvel svets.
9. mocemulia matrica M[3x5]. SeadgineT programa, ro-
melic gamoTvlis matricis kentindeqsebiani elemen-
tebis saSualo ariTmetikuls da danarCeni elemen-
tebis namravls.
10. mocemulia kvadratuli matrica a[4x4]. SeadgineT
programa, romelic gamoTvlis matricis luwi mniS-
vnelobis elementebis kubebis jams da danarCeni
elementebis naxevarjams.
11. mocemulia ori kvadratuli matrica: a[4x4] da b[4x4].
SeadgineT programa, romelic gamoTvlis TviToeu-
li matricis arauaryofiTi elementebis saSualo
ariTmetikuls, moZebnis maT Soris udidess da da-
beWdavs miRebul Sedegebs.
147

12. mocemulia kvadratuli matrica m[5x5]. SeadgineT
programa, romelic gamoTvlis matricis im elemen-
tebis namravlsa da saSualo ariTmetikuls, romel-
Tac gaaCniaT luwi mniSvnelobis striqonis indeq-
sis nomrebi da kenti mniSvnelobis svetis indeqsis
nomrebi.
13. mocemulia kvadratuli matrica d[4x4]. SeadgineT
programa, romelic gamoTvlis matricis luwi mniS-
vnelobis mqone kentindeqsiani elementebis kvadra-
tebis jams da daTvlis im elementebis raodenobas,
romlebic aRniSnul pirobas ar akmayofileben.



13.3. kombinirebuli amocanebi veqtorebsa
da matricebze
rogorc cnobilia, ) ,... , (
2 1 m
x x x x = veqtor-striqo-
nis namravli A[mxn] matricaze ewodeba n ganzomilebis
iseT ) ,... , (
2 1 n
c c c c = veqtor-striqons, romlis elemen-
tebi warmoadgens x veqtor-striqonis elementebis A ma-
tricis Sesabamis svetebSi ganlagebul elementebze
namravlTa jamebs.
veqtor-striqonis matricaze gamravleba SesaZlebe-
lia im SemTxvevaSi, roca matricis striqonebis raode-
noba veqtoris komponentebis ricxvis tolia.
magaliTi 13.5. mocemulia veqtori ) , , (
2 1 0
x x x x = da
matrica:
(
(
(

=
21 20
11 10
01 00
a a
a a
a a
a
. SevadginoT programa, romelic
gamoTvlis x veqtoris a matricaze namravls.
amoxsna: maTematikurad a matricis x veqtorze nam-
ravli miiRebs Semdeg saxes:
148

) , (
21 2 11 1 01 0 20 2 10 1 00 0
a x a x a x a x a x a x c + + + + =

//matricis namravli veqtor-striqonze
#include <iostream>
#include <iomanip>
main( )
{
const int rows=3;
const int columns=2;
float x[rows], a[rows][columns], c[columns];
cout<<"Input matrix a:"<<endl;
for(int i=0; i<rows; i++){
for(int j=0; j<columns; j++)
{
cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];}}
cout<<\n Input vector x:"<<endl;
for(int i=0; i<rows; i++)
{
cout<<"x["<<i<<"]=";
cin>>x[i];
}
for(int j=0; j<columns; j++)
{
c[j]=0;
for(int i=0; i<rows; i++)
c[j]+=x[i]*a[i][j];
}
cout<<\nCurrent matrix a:"<<endl;
for(int i=0; i<rows; i++)
{
for(int j=0; j<columns; j++)
cout<<setw(5)<<a[i][j];
cout<<endl; }
cout<<"Current vector x:"<<endl;
for(int i=0; i<rows; i++)
cout<<setw(5)<<x[i];
149

cout<<endl<<"Result:"<<endl;
for(int j=0; j<columns; j++)
cout<<setw(5)<<c[j];
cout<<endl;
return 0;
}
A[mxn] matricis namravli n-ganzomilebian veqtor-
svetze ewodeba Semdegi saxis m-ganzomilebian veqtor-
svets:

(
(
(
(

+ + +
+ + +
+ + +
=
(
(
(
(

(
(
(
(

n mn m m
n n
n n
n mn m m
n
n
u a u a u a
u a u a u a
u a u a u a
u
u
u
a a a
a a a
a a a
...
... .......... .......... ..........
...
...
.
.
...
...... ..........
...
...
2 2 1 1
2 2 22 1 21
1 2 12 1 11
2
1
2 1
2 22 21
1 12 11


matricis veqtor-svetze gamravleba SesaZlebelia
im SemTxvevaSi, roca matricis svetebis raodenoba veq-
toris komponentebis ricxvis tolia.

magaliTi 13.6. mocemulia matrica a[2x3] da veqtor-
sveti:
(
(
(

=
2
1
0
x
x
x
x
SevadginoT programa, romelic gamoTvlis
a matricis x veqtor-svetze namravls.

amoxsna:

//matricis namravli veqtor-svetze
#include <iostream>
#include <iomanip>
main( ){
const int rows=2;
150

const int columns=3;
float x[columns], a[rows][columns], c[rows];
cout<<"Input matrix a:"<<endl;
for(int i=0; i<rows; i++)
{
for(int j=0; j<columns; j++)
{
cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];
}}
cout<<\nInput vector x:"<<endl;
for(int j=0; j<columns; j++)
{
cout<<"x["<<j<<"]=";
cin>>x[j];
}
for(int i=0; i<rows; i++)
{
c[i]=0;
for(int j=0; j<columns; j++)
c[i]+=a[i][j]*x[j];
}
cout<<\nCurrent matrix a:"<<endl;
for(int i=0; i<rows; i++)
{
for(int j=0; j<columns; j++)
cout<<setw(5)<<a[i][j];
cout<<endl; }
cout<<"Current vector x:"<<endl;
for(int j=0; j<columns; j++)
cout<<setw(5)<<x[j];
cout<<\nResult:"<<endl;
for(int i=0; i<rows; i++)
cout<<setw(5)<<c[i]<<endl;
return 0;}

151

magaliTi 13.7. mocemulia kvadratuli matrica
B[4x4]. SevadginoT programa, romelic moZebnis maqsima-
luri mniSvnelobis elementebs matricis aramTavari
diagonalis zemoT da qvemoT da dabeWdavs miRebul
Sedegebs.

amoxsna:
#include <iostream>
#include <iomanip>
main( )
{
const int rows=4;
const int columns=4;
float B[rows][columns], max1, max2;
cout<<"Input matrix B:"<<endl;
for(int i=0; i<rows; i++)
{
for(int j=0; j<columns; j++)
{
cout<<"B["<<i<<"]["<<j<<"]=";
cin>>B[i][j];}}
cout<<\nCurrent matrix B:"<<endl;
for(int i=0; i<rows; i++){
for(int j=0; j<columns; j++)
cout<<setw(5)<<B[i][j];
cout<<endl;}
max1=B[0][0];
max2=B[1][3];
for(int i=0; i<rows; i++){
for(int j=0; j<columns; j++){
if((i+j<rows-1) && (max1<=B[i][j]))
max1=B[i][j]; }}
for(int i=0; i<rows; i++)
{
for(int j=0; j<columns; j++){
if((i+j>rows-1) && (max2<=B[i][j]))
max2=B[i][j];
152

}}
cout<<"max1="<<max1<<endl;
cout<<"max2="<<max2<<endl;
return 0;}

savarjiSoebi:
1. mocemulia TxuTmeti elementisgan Semdgari ori
veqtori: ) ,... , (
14 1 0
x x x x = da
) ,... , (
14 1 0
y y y y =
. Se-
adgineT programa, romelic gamoTvlis am veqtorTa
namravls.
2. mocemulia p ricxvi da matrica B[3x4]. SeadgineT
programa, romelic gamoTvlis B matricis p
ricxvze namravls.
3. mocemulia ori matrica: A[4x5] da B[5x3]. SeadgineT
programa, romelic gamoTvlis A da B matricebis
namravls.
4. mocemulia ) , , , (
3 2 1 0
x x x x x = veqtor-striqoni da ma-
trica B[4x4]. SeadgineT programa, romelic gamo-
Tvlis x veqtor-striqonis namravls B matricaze.
5. mocemulia U=
(
(
(
(

3
2
1
0
u
u
u
u
veqtor-sveti da matrica C[3x4].
SeadgineT programa, romelic gamoTvlis C matri-
cis U veqtor-svetze namravls.
6. mocemulia kvadratuli matrica B[3x3]. SeadgineT
programa, romelic gamoTvlis matricis elemente-
bis kubebis jams garda im elementebisa, romlebic
ganlagebulia matricis mcire diagonalze.
7. mocemulia kvadratuli matrica A[4x4]. SeadgineT
programa, romelic gamoTvlis matricis moduliT
udidesi da moduliT umciresi elementebis jams da
miRebul Sedegebs Seadarebs matricis mTavar dia-
gonalze moTavsebuli elementebis modulebis jams.
153

8. mocemulia kvadratuli matrica M[4x4]. SeadgineT
programa, romelic gamoTvlis matricis mcire dia-
gonalis zemoT moTavsebuli elementebis kvadrate-
bis jams da danarCeni elementebis saSualo ariTme-
tikuls.
9. mocemulia kvadratuli matrica N[5x5]. SeadgineT
programa, romelic moZebnis matricis mTavar diago-
nalze moTavsebul udides da mcire diagonalze
moTavsebul umcires elementebs.
10. mocemulia ori matrica: a[2x3] da b[2x3]. SeadgineT
programa, romelic gamoTvlis am matricebis ara-
uaryofiTi elementebis jamebs da dabeWdavs maT
Soris udidess.
11. SeadgineT programa, romelic dabeWdavs A[3x4] ma-
tricis im svetis nomersa da elementebs, romelTa
jami aris maqsimaluri.
12. SeadgineT programa, romelic gamoTvlis A[4x4]
kvadratuli matricis normas. (matricis norma gamo-
iTvleba formuliT:

=
=
4
1
max
j
ij
a A
).
13. SeadgineT programa, romelic gamoTvlis A[5x5]
kvadratuli matricis kentindeqsiani striqonis
elementebs Soris absoluturi sididiT udidess.
14. SeadgineT programa, romelic A[4x4] kvadratuli
matricis uaryofiT elementebs Secvlis erTiT da
gamoTvlis miRebuli matricis elementebis kvadra-
tebis jams.
15. SeadgineT programa, romelic moZebnis M[5x5] kvad-
ratuli matricis luwnomriani svetis elementebs
Soris umciress.
16. mocemulia ori matrica: A[4x4] da B[4x4]. SeadgineT
programa, romelic gamoTvlis A
t
+ B
t
, sadac A
t
da B
t

warmoadgens mocemuli matricebis transponirebul
matricebs.
154

17. mocemulia ori matrica: M[5x5] da N[5x5]. SeadgineT
programa, romelic gamoTvlis kM+pN, sadac k da p
mocemuli ricxvebia.
18. SeadgineT programa, romelic C[6x6] kvadratuli
matricis I da III svetebs da II da V svetebs Seucv-
lis adgilebs, dabeWdavs sawyis da miRebul matri-
cebs.
19. SeadgineT programa, romelic gamoTvlis A[5x5]
kvadratuli matricis nulisagan gansxvavebuli
luwindeqsiani komponentebis namravls.
20. SeadgineT programa, romelic gamoTvlis
, R e z
R
+ =
sadac R aris A[5x5] kvadratuli matri-
cis uaryofiTi komponentebis saSualo ariTmeti-
kuli.
21. SeadgineT programa, romelic gamoTvlis A[5x5]
kvadratuli matricis kenti mniSvnelobis mqone da-
debiTi elementebis naxevarjams.
22. SeadgineT programa, romelic gamoTvlis B[3x5] mat-
ricis luwi mniSvnelobis mqone kentindeqsebiani
elementebis namravls.
23. SeadgineT programa, romelic gamoTvlis M[5x5]
kvadratuli matricis MmTavari diagonalis elemen-
tebis saSualo ariTmetikuls da miRebul Sedegs
Seadarebs mcire diagonalis elementebis saSualo
ariTmetikulTan.
24. SeadgineT programa, romelic gamoTvlis D[4x5] mat-
ricis kentnomriani svetisa da luwnomriani stri-
qonis mqone elementebis jamidan kvadratuli fes-
vis mniSvnelobas.
25. mocemulia sami kvadratuli matrica: A[4x4], B[4x4]
da C[4x4]. SeadgineT programa, romelic gamoTvlis
Semdegi gamosaxulebis mniSvnelobas: (A+B)*C da da-
beWdavs sawyis matricebsa da miRebul saboloo Se-
degs.

155

Tavi XIV
programuli modulebi C++ -Si
14.1. funqciebi
funqciebsa da klasebs daprogramebis ena C++-Si,
programul modulebs uwodeben. rogorc wesi, progra-
mebi C++-ze iqmneba standartuli da axali funqciebis,
aseve arsebuli da axali klasebis gaerTianebis gziT.
zemoT Tqmulidan gamomdinare, funqciebi saSuale-
bas iZleva gamoviyenoT moduluri daprogrameba, e.i.
modulebis saSualebiT SevadginoT programebi.
funqcia warmoadgens brZanebaTa jgufs, romelsac
aqvs konkretuli saxeli, anu identifikatori, xolo am
jgufSi miTiTebuli brZanebebis Sesruleba SesaZlebe-
lia mxolod funqciis gamoZaxebis Sedegad.
C++-Si ganasxvaveben momxmareblis mier Seqmnili
funqciebis or ZiriTad saxes:
1. funqciebi, romlebic asrulebs ra gamoTvliT ope-
raciebs, miRebul Sedegebs abrunebs programis Zi-
riTad nawilSi (rogorc wesi, main funqciaSi);
2. funqciebi, romlebic asrulebs ra sxvadasxva saxis
manipulaciebs, miRebul Sedegebs ar abrunebs prog-
ramis ZiriTad nawilSi, radgan saWiroebis SemTxve-
vaSi Tavad SeuZlia maTi dabeWdva.
funqciis gansazRvra (function definition) ewodeba misi
programuli kodis im nawils, romelSic aRiwereba Se-
sasrulebeli moqmedebebi. igi moicavs saTaursa da
funqciis tans. zogad SemTxvevaSi funqciis gansaz-
Rvras aqvs Semdegi saxe:
funqciis saTauri
{
funqciis tani;
}
funqciis saTauri (function header) moicavs:
156

dasabrunebeli Sedegis tips, xolo funqciebisTvis,
romlebic miRebul Sedegebs ar abrunebs, am Sem-
TxvevaSi mieTiTeba tipi void, rac niSnavs cariels,
daukavebels;
funqciis saxels (identifikators), aseve erTmane-
Tisgan mZimeebiT gamoyofili parametrebisa da maTi
tipebis sias, rac Tavsdeba mrgval frCxilebSi.
amasTan, yoveli parametris win iwereba misi tipi
(uparametrebo funqciis SemTxvevaSi mrgval
frCxilebSi arsebuli sivrce carieli rCeba).
funqciis tani (function body) moicavs kods, romelic
sruldeba funqciis gamoZaxebis dros. es aris erTi an
ramdenime brZanebis Semcveli programuli kodis frag-
menti, romlis sazRvrebi Ria da daxurul figurul
frCxilebs Soris Tavsdeba.
funqciis gansazRvrisas aRwerili cvladebi ganixi-
leba rogorc lokaluri cvladebi, anu maTi gansaz-
Rvris are Tavad funqciaa, rac niSnavs, rom yvela es
cvladi cnobilia mxolod im funqciisTvis, romelSic
moxda maTi aRwera.
funqciaTa umravlesobas aqvs parametrebi, romle-
bic iseve ganixileba, rogorc lokaluri monacemebi
(Tumca, rogorc zemoT aRvniSneT, arsebobs uparamet-
rebo funqciebic).
imisaTvis, rom Sesruldes funqciaSi aRwerili
brZanebebi (moqmedebebi), saWiroa funqciis gamoZaxeba
(function call), romlis Caweris sintaqsi Semdegia:
funqciis saxeli (argumentebis sia);
funqciis argumentebis siaSi arsebuli monacemebis
tipebi da raodenoba savsebiT unda Seesabamebodes
funqciis parametrebis siis monacemTa tipebsa da rao-
denobas. funqciis gamoZaxeba umetes SemTxvevaSi xor-
cieldeba main funqciaSi, sadac winaswar unda iqnes
aRwerili funqciis parametrebis Sesabamisi argumen-
tebi da is cvladebi, romelTac eniWeba funqciis mier
dabrunebuli Sedegebi (cxadia, es im SemTxvevaSi, Tu
157

ki funqcia axdens miRebuli rezultatebis dabrune-
bas).
im funqciaTa tani, romlebic main funqciaSi ab-
runebs gamoTvlis Sedegebs, aucileblad unda Seicav-
des erTs mainc return operators, romelic gvaZlevs
miRebul Sedegs.
funqciis parametrebsa da argumentebs Soris gan-
sxvavebis sailustraciod mivmarToT cxovrebiseul ma-
galiTs:
warmovidginoT, rom avtori (Cven SemTxvevaSi, prog-
ramisti) wers piesas (funqcias), romelSic mravali
rolia (parametrebi). amasTan, avtorisTvis ucnobia, Tu
romeli msaxiobi (argumenti) ganasaxierebs piesaSi war-
modgenil ama Tu im rols. bunebrivia, erTi da igive
roli SeiZleba Seasrulos sxvadasxva msaxiobma. ana-
logiurad, rodesac vqmniT funqcias, cxadia, winaswar
ar viciT, Tu romeli obieqtebi warmogvidgeba misi ar-
gumentebis saxiT. Sesabamisad, Cven vsaubrobT e.w. fiq-
tiur obieqtebze, romelTac parametrebi ewodeba
(parameters). rodesac piesa speqtaklis saxiT idgmeba
TeatrSi (e.i. adgili aqvs funqciis gamoZaxebas), kon-
kretul rolebs (parametrebs) asruleben konkretuli
msaxiobebi (argumentebi). maSasadame, funqciis gamoZaxe-
bis dros parametrebi icvleba maTi Sesabamisi realu-
ri obieqtebiT, romelTac Cven argumentebs (arguments)
vuwodebT. amasTan, aucilebelia, rom parametrebisa da
argumentebis raodenoba da tipebi erTmaneTs Seesabame-
bodes.
momxmareblis mier Seqmnili funqciis identifika-
toris SerCeva xdeba cvladebis identifikatorebis
analogiurad, mTavari da sasurvelia, rom funqciis
saxeli Seesabamebodes mis daniSnulebas programaSi.
funqciis tani ganixileba, rogorc konkretuli bloki,
anu Sedgenili operatori, romelic moicavs aseve mo-
nacemTa aRweras. cvladebi SeiZleba aRiweros nebismi-
er blokSi, xolo blokebi SesaZlebelia iyos Calage-
158

bulic (rTuli). nebismier SemTxvevaSi, funqciis aR-
wera sxva funqciis tanSi dauSvebelia, xolo gamoZaxe-
ba dasaSvebi. aseve, ar SeiZleba funqciis gamoZaxeba
mis gansazRvramde, garda im SemTxvevisa, rodesac pro-
gramaSi gamoiyeneba funqciis prototipi, romelic sa-
Sualebas mogvcems funqcia jer gamoviZaxoT, xolo
Semdeg aRvweroT.
nebismieri programa, sasurvelia, SevadginoT ro-
gorc mcire funqciebis erToblioba. es saSualebas
mogvcems gacilebiT martivad ganvaxorcieloT pro-
gramis gamarTvisa da modifikaciis procesebi.
arsebobs ramdenime saintereso mizezi imisaTvis,
rom programebi avagoT funqciebis safuZvelze. ker-
Zod, midgoma "gaTiSe da ibatone", programis SemuSa-
vebis process marTvads xdis, amasTan funqciis saxiT
gaformebuli kodi SesaZlebelia Zalze martivad Se-
sruldes programis sxvadasxva adgilas funqciis ga-
moZaxebiT da bolos, funqciebis meSveobiT SeiZleba
programuli kodebis ganmeorebiT gamoyeneba, anu arse-
buli funqciebis, rogorc standartuli blokebis ga-
moyeneba axali programebis Seqmnis mizniT, rac obieq-
tur-orientirebadi daprogramebis ganviTarebis Ziri-
Tad faqtors warmoadgens.
ganvixiloT ramdenime amocana, romelTac gada-
vwyvetT momxmareblis mier Seqmnili funqciebis gamo-
yenebiT.
magaliTi 14.1. SevadginoT programa, romelic gamo-
Tvlis erTidan aTamde mTeli tipis ricxvebis kvadra-
tebis mniSvnelobebs (programa warmovadginoT or va-
riantad).

amoxsna (I varianti)
//1-dan 10-mde ricxvebis kvadratebis mniSvnelobebis
gamoTvla
#include <iostream>
#include <iomanip>
159

int square(int y) // function header
{
return y*y; // function body
}
main( )
{
for(int x=1; x<=10; x++)
cout<<setw(5)<<square(x); // function call
cout<<endl;
return 0;
}

Sedegi
1 4 9 16 25 36 49 64 81 100

amoxsna (II varianti)
//1-dan 10-mde ricxvebis kvadratebis mniSvnelobebis
gamoTvla
#include <iostream>
#include <iomanip>
void square(int y) // function header
{
cout<<setw(5)<< y*y; // function body
}
main( )
{
for(int x=1; x<=10; x++)
square(x); // function call
cout<<endl;
return 0;}
rogorc vxedavT, amocanis amoxsnis I variantSi ga-
moyenebulia funqcia, romelic axdens miRebuli Sede-
gebis dabrunebas, xolo meore variantSi - funqcia,
romelic Sedegebs ar abrunebs, Tumca Tavad beWdavs
miRebul rezultatebs, rac ciklurad xorcieldeba
160

main funqciaSi. cxadia, orive SemTxvevaSi erTi da igi-
ve Sedegi miiReba.
magaliTi 14.2. SevadginoT programa, romelic gamo-
Tvlis
2 3
1 ...
2 3
n
x x x
s x
n
= + + + + +
usasrulo mwkrivis
pirveli n wevris jams, sadac n=10 (programa warmovad-
ginoT or variantad).
amoxsna (I varianti)
// usasrulo mwkrivis pirveli n wevris jamis gamo-
Tvla
#include <iostream>
double function(float x, int n) // function header
{
float p=1, s=1;
for(int i=1; i<n; i++)
{
p*=x; // function body
s+=p/i;
}
return s;
}
main( )
{
double k;
float y;
int m;
cout<<"x=";
cin>>y;
cout<<"n=";
cin>>m;
k=function(y,m); // function call
cout<<"\n result="<<k<<endl;
return 0;
}
amoxsna (II varianti)
161

// usasrulo mwkrivis pirveli n wevris jamis gamo-
Tvla
#include <iostream>
void function(float x, int n) // function header
{
float p=1, s=1; // function body
for(int i=1; i<n; i++)
{
p*=x;
s+=p/i;
}
cout<<"\n result="<<s<<endl;
}
main( )
{
float y;
int m;
cout<<"x=";
cin>>y;
cout<<"n=";
cin>>m;
function(y,m); // function call
return 0;}

magaliTi 14.3. SevadginoT programa, romelic gamo-
Tvlis
2
0 ax bx c + + = kvadratuli gantolebis fesvebs
a, b da c koeficientebis nebismieri mniSvnelobebis
dros.
amoxsna
//kvadratuli gantolebis amoxsna funqciis
gamoyene- biT
#include <iostream>
#include <math>
void gantoleba(float a, float b, float c)
{
float x, x1, x2, d;
162

if(a!=0)
{
d=b*b-4*a*c;
cout<<"d="<<d<<endl;
if(d>0)
{
x1=(-b-sqrt(d))/(2*a);
x2=(-b+sqrt(d))/(2*a);
cout<<"x1="<<x1<<endl;
cout<<"x2="<<x2<<endl;
}
else
{
if(d= =0)
{
x=-b/(2*a);
cout<<"x="<<x<<endl;
}
else
cout<<"Two complex roots."<<endl;
}}
else {
if(b!=0)
{
x=-c/b;
cout<<"x="<<x<<endl;
}
else
{
if(c!=0)
cout<<"No solution."<<endl;
else
cout<<"Any solution."<<endl;}
}
}
main( )
{
163

float m, n, k;
cout<<"a=";
cin>>m;
cout<<"b=";
cin>>n;
cout<<"c=";
cin>>k;
gantoleba(m, n, k);
return 0;
}
amrigad, Cven mier warmodgenil yvela magaliTSi
momxmareblis mier Seqmnili funqciebi jer ganisaz-
Rvra, xolo Semdeg moxda maTi gamoZaxeba. axla ki gan-
vixilavT SemTxvevebs, sadac adgili eqneba Tavdapir-
velad funqciaTa gamoZaxebas, Semdeg ki maT gansaz-
Rvras. aRniSnuli procedurebis Catarebis saSualebas
iZleva funqciaTa prototipebi.

14.2. funqciebis prototipebi
funqciis prototipi warmoadgens daprogramebis ena
C++-is erT-erT mniSvnelovan da amavdroulad gansaku-
Trebul Taviseburebas. igi kompilators awvdis erT-
gvar informacias funqciis dasabrunebeli Sdegebisa
da parametrebis tipebis, maTi raodenobisa da mimdev-
robis Sesaxeb. kompilatori prototips iyenebs fun-
qciis gamoZaxebis sisworis Sesamowmeblad. C enis ad-
reuli versiebi ar asrulebda aRniSnuli saxis Semo-
wmebas, ris gamoc funqciaTa gamoZaxebis dros daSve-
bul Secdomebs kompilatori ver aRmoaCenda. prototi-
pebma ki aRmofxvra es nakli.
funqciis prototipis gansazRvra garkveulwilad
axlosaa funqciis saTauris gansazRvrasTan, magram
misgan imiT gansxvavdeba, rom ara aqvs tani da ar saWi-
roebs funqciis parametrebis identifikatorebis Cawe-
ras, rameTu, kompilatori axdens maT ignorirebas.
164

prototipis gansazRvra (gansxvavebiT funqciis saTau-
risgan) aucileblad sruldeba wertil-mZimiT. funqci-
is parametrebis tipebi erTmaneTisgan mZimeebiT gamoi-
yofa da funqciis saxelis Semdeg Tavsdeba mrgval
frCxilebSi.
amgvarad, funqciis prototipis gansazRvris zogadi
saxe Semdegia:
Sedegis tipi (an void) funqciis saxeli (parametrTa
tipebi);
unda aRvniSnoT, rom dokumentirebis TvalsazrisiT
SesaZlebelia funqciis prototipSi gamoyenebul iqnes
parametrebis identifikatorebi, Tumca, kompilatoris-
Tvis amas aranairi mniSvneloba ar aqvs. funqciis pro-
totipis dasasruls wertil-mZimis ararseboba sintaq-
suri xasiaTis Secdomad iTvleba. funqciis gamoZaxeba,
romelic ar Seesabameba Tavis prototips, aseve iwvevs
sintaqsur Secdomas. igi maSinac iCens Tavs, Tuki pro-
totipi ar Seesabameba funqciis gansazRvras.
maSasadame, funqciis prototipi, misi saTauri da
gamoZaxeba unda Seesabamebodes erTmaneTs parametrebi-
sa da argumentebis tipebis, raodenobis, Tanamimdevro-
bisa da dasabrunebeli Sedegebis tipebis mixedviT.
funqciis saTaurisgan gansxvavebiT, prototipis aRwera
programis nebismier adgilze SeiZleba funqciis gamo-
Zaxebamde (sxva funqciaSic ki).
magaliTi 14.4. SevadginoT programa, romelic fun-
qciis saSualebiT nebismier sam cvlads Soris gansaz-
Rvravs maqsimaluri mniSvnelobis cvlads (programa
warmovadginoT or variantad funqciis prototipis ga-
moyenebiT).
amoxsna (I varianti)
//sam cvlads Soris maqsimaluris gansazRvra
#include <iostream>
float maximum(float, float, float); // prototipe
main( )
165

{
float x, y, z, k;
cout<<"a=";
cin>>x;
cout<<"b=";
cin>>y;
cout<<"c=";
cin>>z;
k=maximum(x,y,z); // function call
cout<<"\n maximum="<<k<<endl;
return 0;
}
float maximum(float a, float b, float c) // function header
{
float max=a; // function body
if(max<=b)
max=b;
if(max<=c)
max=c;
return max;
}
amoxsna (II varianti)
//sam cvlads Soris maqsimaluris gansazRvra
#include <iostream>
void maximum(float, float, float); // prototipe
main( )
{
float x, y, z, k;
cout<<"a=";
cin>>x;
cout<<"b=";
cin>>y;
cout<<"c=";
cin>>z;
maximum(x,y,z); // function call
return 0;
166

}
void maximum(float a, float b, float c) // function header
{
float max=a; // function body
if(max<=b)
max=b;
if(max<=c)
max=c;
cout<<"\n maximum="<< max<endl;}
magaliTi 14.5. SevadginoT programa, romelic evkli-
des algoriTmis safuZvelze funqciis saSualebiT gan-
sazRvravs ori mTeli dadebiTi a da b ricxvis udides
saerTo gamyofs (programa warmovadginoT or varian-
tad funqciis prototipis gamoyenebiT).
amoxsna (I varianti)
// evklides algoriTmi
#include <iostream>
int Evklide(int, int); //prototipe
main( )
{
int a, b, c;
cout<<"a=";
cin>>a;
cout<<"b=";
cin>>b;
c=Evklide(a,b);
cout<<"\n Result="<<c<<endl; // function call
return 0;
}
int Evklide(int m, int n) // function header
{
while(m!=n) // function body
{
if(m>n)
m=m-n;
else n=n-m;
167

}
return m;}
amoxsna (II varianti)
// evklides algoriTmi
#include <iostream>
void Evklide(int, int); // prototipe
main( )
{
int a, b, c;
cout<<"a=";
cin>>a;
cout<<"b=";
cin>>b;
Evklide(a,b); // function call
return 0;
}
void Evklide(int m, int n) // function header
{
while(m!=n) // function body
{
if(m>n)
m=m-n;
else
n=n-m;
}
cout<<"\n Result="<<m<<endl;
}
rogorc vxedavT, funqciis prototipi saukeTeso sa-
Sualebaa kompilatorisTvis funqciis gamoZaxebis pro-
cesSi daSvebuli Secdomebis gamosavlenad da amasTan,
igi uflebas gvaZlevs jer gamoviZaxoT funqcia, xolo
Semdeg ganvsazRvroT. sagulisxmoa is faqti, rom da-
programebis karg stilad iTvleba, rodesac progra-
mebSi mivmarTavT funqciaTa prototipebs.

168

Tavi XV
r e k u r s i a
15.1. rekursiuli funqciebi
wina TavSi ganvixileT funqciebi, romelTa gamoZa-
xebac xorcieldeboda sxva funqciebis meSveobiT. aris
SemTxvevebi, rodesac programebSi sasargebloa iseTi
funqciebis gamoyeneba, romelTac SeuZlia sakuTari
Tavis gamoZaxeba. aRniSnuli saxis funqciebs, rekursi-
uli ewodeba.
ganvixiloT rekursiis cneba. zogad SemTxvevaSi, re-
kursiuli amocana calkeul etapebad iyofa. amocanis
gadasawyvetad xdeba rekursiuli funqciis gamoZaxeba,
romelmac "icis", Tu rogor amoxsnas amocanis umarti-
vesi nawili, e.w. sabazo amocana. Tu funqciis gamoZaxe-
ba xdeba mxolod sabazo amocanis gadawyvetis mizniT,
maSin igi ubralod abrunebs miRebul Sedegs, xolo
ufro rTuli amocanis gadasawyvetad, igi amocanas or
nawilad yofs. amasTan, erTi nawilis amoxsna funqciam
icis, xolo meorisa ara. rekursia rom Sesruldes,
amocanis meore nawili sawyisi amocanis msgavsi unda
iyos, magram ufro gamartivebuli. radgan es axali
amocana sawyisi amocanis msgavsia, funqcia axdens sa-
kuTari Tavis axali aslis gamoZaxebas im mizniT, rom
muSaoba daiwyos SedarebiT martiv problemaze. am
process rekursiuli gamoZaxeba, anu rekursiis biji
ewodeba da igi aucileblad unda Seicavdes return
operators, xolo mis mier dabrunebuli Sedegi saWi-
roa gaerTiandes amocanis im nawilTan, romlis amox-
snac funqcias SeuZlia. Semdeg ki formirdeba sabo-
loo Sedegi da igi ubrundeba funqciis gamoZaxebis
sawyis adgils (xSirad main funqcias). rekursiis bijma
SesaZloa gamoiwvios araerTi rekursiuli gamoZaxeba,
radgan funqcia yovel axal qveamocanas or nawilad
dayofs. rekursiis procesis dasrulebisaTvis aucile-
belia sawyisi amocana dayvanil iqnes sabazomde.
169

rekursiis arsis ukeT gasagebad ganvixiloT amo-
cana.
magaliTi 15.1. rekursiuli gziT gamovTvaloT erTi-
dan aTamde mTeli, arauaryofiTi ricxvebis faqtoria-
lebis mniSvnelobebi.
amoxsna
maTematikidan cnobilia, rom mTeli, arauaryofiTi
n ricxvis faqtoriali gamoiTvleba Semdegi formu-
liT:
! *( 1) *( 2) *...*1, n n n n =
amasTan, 1!=1 da 0!=1. maSa-
sadame, Tu n=5, maSin 5!=5*4*3*2*1=120.
nebismieri arauaryofiTi, mTeli n ricxvis faqtori-
alis gamoTvla iteraciuli gziT (ararekursiulad)
SeiZleba ciklis for operatoris saSualebiT:
factorial=1;
for(int i=n; i>=1; i - -)
factorial*=i;
rekursiuli gziT amocanis gadasawyvetad ki viye-
nebT Semdeg formulas:
! *( 1)! n n n =
cxadia, 5!=5*4!
Sesabamisad:
5!=5*4*3*2*1 anu 5!=5*(4*3*2*1)=5*4!
5-is faqtorialis mniSvnelobis gamoTvlis procesi
naCvenebia 30 naxazze, xolo rekursiuli gamoZaxebis
Tanamimdevroba _ 31 naxazze.
axla ki mivubrundeT dasmul amocanas da gadav-
wyvitoT igi rekursiuli factorial funqciis gamoyenebiT.
aRniSnuli funqcia Tavdapirvelad amowmebs rekursiis
dasrulebis pirobas, anu, Tu n cvladis mniSvneloba
erTis toli aRmoCndeba, es niSnavs, rom sawyisi amoca-
na dayvanilia sabazomde da maSasadame, factorial fun-
qcia abrunebs erTs; Sesabamisad, programa sruldeba.
xolo, Tu n>1, maSin warmoebs funqciis rekursiuli
gamoZaxeba Semdegi saxiT:
return n*factorial(n-1);
170

5!
5*4!
4*3!
3*2!
2*1!
1
nax. 30
5!
5*4!
4*3!
3*2!
2*1!
1
nax. 31
bunebrivia, factorial(n-1)-is gamoTvla ufro martivi
amocanaa, vidre sawyisi factorial(n)-isa.




















//110 mTeli ricxvebis faqtorialebis mniSvnelobe-
bis gamoTvla.
#include <iostream>
#include <iomanip>
unsigned long factorial(unsigned long); // prototipe
main( )
{
for(int i=1; i<=10; i++)
cout<<setw(2)<<i<<"!="<<factorial(i)<<endl;
return 0;
}
unsigned long factorial(unsigned long n)
{ if(n<=1)
return 1;
171

else
return n*factorial(n-1);}

Sedegebi
1!=1
2!=2
3!=6
4!=24
5!=120
6!=720
7!=5040
8!=40320
9!=362880
10!=3628800
factorial funqciis gansazRvraSi miTiTebulia, rom
mas parametris saxiT aqvs unsigned long tipis monacemi
da igi amave tipis Sedegs abrunebs. es faqti gamowve-
ulia imiT, rom factorial funqcia did mniSvnelobebs
imdenad swrafad gamoimuSavebs, rom zusti Sedegebis
misaRebad saWiroa kompiuteris mexsierebis rac SeiZ-
leba meti moculoba gamoviyenoT.
magaliTi 15.2. rekursiuli gziT gamovTvaloT fibo-
naCis ricxviTi mimdevrobis nebismieri n wevris mni-
Svneloba.
amoxsna
maTematikidan cnobilia, rom fibonaCis ricxviTi
mimdevroba 0-iT da 1-iT iwyeba da xasiaTdeba im Tvise-
biT, rom mimdevrobis yoveli momdevno wevris mniSvne-
loba wina ori wevris mniSvnelobaTa jamis tolia.
bunebaSi fibonaCis ricxviTi mimdevroba spiralis fo-
rmas aRwers da maTematikurad aqvs Semdegi saxe:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, . . .
rekursiuli gziT fibonaCis ricxviTi mimdevroba
SeiZleba ganisazRvros Semdegnairad:
Fibonacci(0)=0;
Fibonacci(1)=1;
172

Fibonacci(n)= Fibonacci(n-1)+ Fibonacci(n-2).
// fibonaCis mimdevrobis n wevris mniSvnelobis gan-
sazRvra.
#include <iostream>
unsigned long Fibonacci(unsigned long); // prototipe
main( )
{ unsigned long result, number;
cout<<"n=";
cin>>number;
result=Fibonacci(number);
cout<<"\n Result="<<result<<endl;
return 0;
}
unsigned long Fibonacci(unsigned long n)
{
if(n==0 || n==1)
return n;
else
return Fibonacci(n-1)+Fibonacci(n-2);
}

magaliTi 15.3. rekursiuli gziT gamovTvaloT
y
z x =

gamosaxulebis mniSvneloba, sadac x da y nebismieri
mTeli ricxvebia.
amoxsna
// z=x^y gamosaxulebis amoxsna.
#include <iostream>
unsigned long function(int, int); // prototipe
main( )
{
int x, y;
unsigned long z;
cout<<"x=";
cin>>x;
cout<<"y=";
cin>>y;
173

z=function(x, y);
cout<<"\n"<<x<<"^"<<y<<"="<<z<<endl;
return 0;}
unsigned long function(int a, int b)
{ if(b==0)
return 1;
if(b==1)
return a;
else
return a*function(a, b-1);}

aRniSnul magaliTSi gaTvaliswinebulia is garemo-
eba, rom nebismieri ricxvi nul xarisxSi udris erTs,
xolo pirvel xarisxSi Tavis Tavs. swored, es ori
piroba warmoadgens rekursiuli gamoZaxebebis dasru-
lebis pirobebs, radgan igi ganixileba, rogorc saba-
zo amocanebi.

15.2. rekursiebi da iteraciebi
wina paragrafSi ganvixileT ori funqcia (factorial da
Fibonacci), romelTa realizeba SesaZlebelia rogorc
rekursiuli, ise iteraciuli gziT. axla SevadaroT es
ori midgoma da ganvsazRvroT, romel konkretul si-
tuaciaSi romeli midgomis gamoyenebaa sasurveli.
rogorc iteracia, ise rekursia emyareba mmarTvel
struqturebs, kerZod, iteracia iyenebs gameorebis
(ciklur) struqturas, xolo rekursia amorCevis (pi-
robiT) struqturas. orive maTgani moicavs gameore-
bebs: iteracia iyenebs gameorebis struqturas cxadi
saxiT, xolo rekursia _ gameorebis realizebas axdens
funqciis xelaxali gamoZaxebebis gziT. iteraciac da
rekursiac amowmebs mimdinare cikluri procesis da-
srulebis pirobebs: iteraciebi dasruldeba, rodesac
ciklis piroba aRmoCndeba mcdari, xolo rekursiebi
roca moxdeba sawyisi amocanis sabazoze dayvana. amas-
174

Tan, orive maTgani TandaTanobiT uaxlovdeba dasru-
lebis moments: iteraciis dros adgili aqvs ciklis
mTvlelis mniSvnelobis cvlilebas manam, sanam ciklis
Sesrulebis piroba mcdari ar gaxdeba; rekursiis Sem-
TxvevaSi gamartivebuli amocanis Seqmnis procesi mim-
dinareobs manam, sanam ar miiReba sabazo amocana. re-
kursiebi, iseve rogorc iteraciebi, SeiZleba usasru-
lod gagrZeldes: usasrulo iteraciuli cikli war-
moiqmneba im SemTxvevaSi, Tu ciklis dasrulebis piro-
ba arasdros aRmoCndeba mcdari. usasrulo rekursia
ki Tavs iCens maSin, rodesac rekursiis biji ver ax-
dens sawyisi amocanis sabazoze dayvanas.
rekursia mravali uaryofiTi TvisebiT xasiaTdeba.
ase, magaliTad, funqciis gamoZaxebebis rekursiuli me-
qanizmis ganmeorebiTi Sesruleba iwvevs procesoruli
droisa da kompiuteris mexsierebis saWiro moculobis
mniSvnelovan zrdas. yoveli rekursiuli gamoZaxeba ga-
napirobebs funqciis axali aslis Seqmnas, rac aseve
moiTxovs mexsierebis damatebiTi moculobis gamoyo-
fas. iteraciebi, rogorc wesi, ar aris dakavSirebuli
funqciebTan da miT umetes, maT gamoZaxebebTan, ris
gamoc isini ar moiTxoven kompiutruli droisa da mex-
sierebis damatebiT danaxarjebs. bunebrivia ismeba kiT-
xva: ra saWiroa maSin rekursia? programistebs miaCni-
aT, rom rekursiul midgomas garkveuli upiratesoba
aqvs iteraciulTan SedarebiT, kerZod is, rom rekur-
sia ukeT warmoadgens dasmul amocanas da mis Sede-
gebs, amasTan, igi gacilebiT TvalsaCinoa da progra-
mis gamarTvis TvalsazrisiT SedarebiT ioli. amocane-
bis iteraciuli gziT gadawyveta ki aracxadi saxiT
mimdinareobs.
aRsaniSnavia, rom nebismieri amocana, romelic gada-
wydeba rekursiulad, aseve savsebiT SesaZlebelia
amovxsnaT iteraciis gamoyenebiT.
amgvarad, im SemTxvevaSi, Tu aucilebelia progra-
mis maRali efeqturoba (meti swrafqmedeba da kompiu-
175

teris mexsierebis ekonomia), sasurvelia mivmarToT
amocanaTa gadawyvetis iteraciul midgomas, xolo me-
ti TvalsaCinoebis moTxovnis SemTxvevaSi rekursi-
uls.

savarjiSoebi:
1. SeadgineT programa, romelic momxmareblis mier
Seqmnili funqciis saSualebiT y funqciis yvela
mniSvnelobas gamoTvlis Semdegi gamosaxulebis sa-
fuZvelze:

3 2
0,3 2(cos 1) 1, 2 3, y x x x x = + +

sadac x argumenti [-3;3] diapazonSi icvleba h=0,4
bijiT (programa warmoadgineT or variantad fun-
qciis prototipis gamoyenebiT).
2. SeadgineT programa, romelic momxmareblis mier
Seqmnili funqciebis saSualebiT gamoTvlis Semde-
gi gamosaxulebis mniSvnelobas:
2
2
2
3
5 5
max{ , * },
sin ( )
ln( ), ,
, 2,5; 0, 691; 7,98
p a
C D C D
y ap
C y p D
e
y p x a a x p
+

+
= + =
= + = = =
Tu
sadac

(programa or variantad warmoadgineT funqciis
prototipis gamoyenebiT).
3. SeadgineT programa, romelic momxmareblis mier
Seqmnili funqciis saSualebiT y funqciis mniSvne-
lobas gamoTvlis Semdegi gamosaxulebis safu-
Zvelze:

2
ln , 0
* * ;
sin , z 0,
z z
z x B tgx y
z
>

= =

s

Tu
Tu

sadac x=4,5; B=15 (programa or variantad warmoad-
gineT funqciis prototipis gamoyenebiT).
4. SeadgineT programa, romelic rekursiuli gziT
gamoTvlis nebismieri mTeli arauaryofiTi ricxvis
176

faqtorialis mniSvnelobas (igive amocana gadawyvi-
teT iteraciuli xerxiT).
5. SeadgineT programa, romelic rekursiuli gziT
gamoTvlis fibonaCis ricxviTi mimdevrobis pirveli
TxuTmeti wevris mniSvnelobas.
6. SeadgineT programa, romelic rekursiuli gziT
gamoTvlis a-dan b-mde mTeli tipis dadebiTi
mniSvnelobis mqone ricxvebis kvadratebis jams
(igive amocana gadawyviteT iteraciuli xerxiT).
7. SeadgineT programa, romelic rekursiuli gziT
gamoTvlis m-dan n-mde mTeli tipis dadebiTi
mniSvnelobis ricxvebis namravls (igive amocana ga-
dawyviteT iteraciuli xerxiT).
8. SeadgineT programa, romelic momxmareblis mier
Seqmnili funqciis gamoyenebiT SemTxveviTi ricxve-
bis generaciis gziT gamoimuSavebs mTeli tipis sam
SemTxveviT ricxvs erTidan ormocamde diapazonSi
da moZebnis maT Soris minimalur mniSvnelobas.
9. SeadgineT programa, romelic momxmareblis mier
Seqmnili funqciis gamoyenebiT gamoTvlis
2 3
1 ...
1! 2! 3! !
n
a a a a
y
n
= + + + + +
usasrulo mwkrivis pirveli
n wevris jams, sadac n=15 (programa or variantad
warmoadgineT).
10. SeadgineT programa, romelic momxmareblis mier
Seqmnili funqciis saSualebiT gamoTvlis nebismie-
ri ori mTeli arauaryofiTi a da b ricxvis umci-
res saerTo jerads (programa warmoadgineT or va-
riantad funqciis prototipis gamoyenebiT).
11. rekursiuli funqciebis gamoyenebiT SeadgineT pro-
grama, romelic gamoTvlis x-dan y-mde mTeli tipis
ricxvebis namravls im SemTxvevaSi, Tu x da y luwi
ricxvebia, xolo winaaRmdeg SemTxvevaSi
y
x gamo-
saxulebis mniSvnelobas.

177

Tavi XVI
funqciebisa da maTi parametrebis saxesxvaobebi
16.1. uparametrebo funqciebi
daprogramebis ena C++-Si gamoiyeneba uparametrebo
funqciebic, romelTa gansazRvris SemTxvevaSi funqci-
is saxelwodebis Semdeg mrgval frCxilebSi paramet-
rebis adgilas Tavsdeba koduri sityva void an igi rCe-
ba carieli. magaliTad, Canaweri
void print( );
miuTiTebs, rom print funqcia ar saWiroebs
argumentebs da igi ar axdens miRebuli Sedegebis
dabrunebas.
ganvixiloT uparametrebo funqciebis gamoyenebis
martivi magaliTi, sadac adgili aqvs teqsturi Setyo-
binebis dabeWdvas.
magaliTi 16.1. uparametrebo funqciebis gansazRvri-
sa da gamoyenebis ori SesaZlebloba.
amoxsna
#include <iostream>
void f1( ); // prototipe
void f2(void); // prototipe
main( )
{
f1( );
f2( );
return 0;
}
void f1( )
{
cout<<Welcome to C++<<endl;
}
void f2(void )
{
cout<<Welcome to Visual C++<<endl;
178

}
programis Sesrulebaze gaSvebis Sedegad miiReba
Semdegi saxis informacia:
Welcome to C++
Welcome to Visual C++


16.2. inline funqciebi
cnobilia, rom nebismieri funqciis gamoZaxeba
dakavSirebulia damatebiT droiT danaxarjebTan. am
situaciis Tavidan acilebis mizniT C++-Si gamoiyeneba
erTgvari SesaZlebloba inline funqciebis saxiT.
specifikacia inline, romelic Tavsdeba funqciis mier
dasabrunebeli Sedegis tipis miTiTebamde funqciis
gansazRvris dros, kompilators "urCevs" moaxdinos
funqciis kodis aslis generireba programis saWiro
adgilze, amiT Tavidan aicilos funqciis gamoZaxeba
da masTan dakavSirebuli droiTi danaxarjebi.
aRsaniSnavia, rom inline specifikacias mizanSewoni-
lia mivmarToT mxolod mcire zomisa da xSirad gamo-
yenebadi funqciebis SemTxvevaSi, radgan, marTalia igi
amcirebs programis Sesrulebis dros, magram samagi-
erod SeuZlia mniSvnelovnad gazardos misi zoma. mxe-
dvelobaSia misaRebi is faqtic, rom kompilatorma Se-
iZleba ignorireba gaukeTos aRniSnul specifikacias
da, rogorc wesi, igi xSirad asec iqceva, garda im Sem-
Txvevisa, rodesac saqme gvaqvs mcire zomis funqcieb-
Tan.
magaliTi 16.2. inline specifikaciis mqone funqciis
gamoyenebiT SevadginoT programa, romelic gamoTvlis
kubis moculobas.
amoxsna
#include <iostream>
inline float Cube( float S){
179

return S*S*S;}
main ( )
{
float side, size;
cout<<"S=";
cin>>side;
size=Cube(side);
cout<<"\n Size="<<size;
cout<<endl;
return 0;
}


16.3. damisamarTeba da damisamarTebiT gadacemuli
parametrebi
daprogramebis mraval enaSi arsebobs funqciebze
mimarTvis ori SesaZlebloba:
1. funqciis gamoZaxeba parametrebis mniSvnelobebis
mixedviT;
2. funqciis gamoZaxeba damisamarTebiT gadacemuli pa-
rametrebis mixedviT.
rodesac ama Tu im funqciis gamoZaxebisas adgili
aqvs argumentis gadacemas Sesabamisi parametris mni-
Svnelobis mixedviT, iqmneba argumentis asli, romlis
cvlileba, bunebrivia, gamoZaxebis operatorSi ar moq-
medebs argumentis originalis mniSvnelobaze. fun-
qciis aseTi gamoZaxebis nakli ki isaa, rom Tu funqci-
aSi gadaicema monacemTa didi raodenoba, maSin maTi
aslebis Seqmnam SesaZloa gamoiwvios mniSvnelovani
droiTi danaxarjebi. amitom, rodesac aucilebelia
aRniSnuli saxis danaxarjebis Tavidan acileba, fun-
qciaSi saWiroa parametrebi gadavceT damisamarTebiT.
am SemTxvevaSi funqciis gamoZaxebis operatori mas
180

saSualebas aZlevs pirdapiri gziT mimarTos fun-
qciaSi gadacemul monacemebs da saWiroebis SemTxve-
vaSi Secvalos kidec maTi originalebis mniSvnelobe-
bi.
amgvarad, damisamarTebiT gadacemuli parametri
warmoadgens Sesabamisi argumentis fsevdonims.
rodesac esa Tu is parametri damisamarTebiT
gadaicema funqciaSi, misi prototipisa da Tavad
funqciis gansazRvris dros damisamarTebiT
gadacemuli parametris tipis miTiTebis Semdeg iwereba
ampersendis (&) simbolo. ase, magaliTad:
int &count;
aRniSnuli Canaweri miuTiTebs, rom cvladi count
warmoadgens damisamarTebas int (mTeli) tipis monacemze.
funqciis gamoZaxebis SemTxvevaSi ki sakmarisia Sesaba-
misi cvladis saxelis miTiTeba da igi gadaicema dami-
samarTebiT. yovelive zemoT Tqmulis gaTvaliswinebiT,
ganvixiloT magaliTi.
magaliTi 16.3. SevadginoT programa, romelic gamo-
Tvlis nebismieri mTeli tipis mniSvnelobis ricxvis
kvadrats. amasTan, programaSi gamoviyenoT ori fun-
qcia, romelTagan pirvel funqciaSi parametri
gadaicema mniSvnelobiT, xolo meoreSi damisamarTe-
biT da gavaanalizoT miRebuli Sedegebi.
amoxsna
#include <iostream>
void function1(int); //prototipe
void function2(int &); //prototipe
main( )
{
int a, b;
cout<<"a="; cin>>a;
cout<<"b="; cin>>b;
function1(a);
function2(b);
181

cout<<"\n Real situation:"<<endl;
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
return 0;
}
void function1(int x)
{
x=x*x;
cout<<"\n x="<<x<<endl;
}
void function2(int &y)
{
y=y*y;
cout<<"\n y="<<y<<endl;
}
Tu davuSvebT, rom a=5 da b=7, maSin programis Se-
srulebaze gaSvebis Sedegad miviRebT:
a=5
b=7
x=25
y=49
Real situation:
a=5
b=49
gavaanalizoT miRebuli Sedegebi: function1 fun-
qciaSi x parametri gadacemul iqna mniSvnelobiT, ami-
tom aRniSnuli funqciis gamoZaxebis Sedegad Seicvala
x parametris Sesabamisi a argumentis aslis mniSvne-
loba, xolo misi originali ucvleli darCa. function2
funqciaSi ki, radgan y parametri gadaica damisamarTe-
biT, amitom misi Sesabamisi b argumentis asli ar
Seqmnila da cvlileba ganicada Tavad argumentis ori-
ginalma.


182

16.4. sxvadasxva raodenobis parametrebisa da
argumentebis mqone funqciebi
rogorc wesi, funqcias gamoZaxebis dros gadaecema
TiToeuli argumentis konkretuli mniSvneloba, rac
imas niSnavs, rom funqcias viZaxebT imdeni argumentiT,
ramdeni parametric aris warmodgenili mis gansaz-
RvraSi. Tumca, aris SemTxvevebi, rodesac funqciis ga-
moZaxebis procesSi ama Tu im arguments ar vaniWebT
konkretul mniSvnelobas, e.i. funqcias viZaxebT nakle-
bi raodenobis argumentebiT da am dros funqciaSi
avtomaturad gadaicema aRniSnuli argumentis Sesaba-
misi parametris mniSvneloba, romelic winaswar unda
iqnes gansazRvruli. im argumentis Sesabamisi paramet-
ri, romlis mniSvnelobac avtomaturad eniWeba mas,
funqciis gansazRvris dros unda moTavsdes parametre-
bis siaSi yvelaze marjvniv. amgvari moqmedebebi SesaZ-
loa ganvaxorcieloT inline specifikaciis mqone fun-
qciebzec.
magaliTi 16.4. SevadginoT programa, romelic mom-
xmareblis mier Seqmnili funqciis gamoyenebiT
gamoTvlis paralelepipedis moculobas. amasTan,
funqciis gamoZaxeba ganvaxorcieloT jer argumentebis
gareSe, xolo Semdeg _ erTi, ori da sami argumentiT.
amoxsna
#include <iostream>
inline function(int lenght=1, int width=1,int height=1)
{
return lenght* width* height;}
main( )
{
cout<<"Result1="<<function( )<<endl;
cout<<"Result2="<<function(10)<<endl;
cout<<"Result3="<<function(10,5)<<endl;
cout<<"Result4="<<function(10,5,2)<<endl;
return 0;}
Sedegebi:
183

Result1=1
Result2=10
Result3=50
Result4=100



16.5. funqciaTa gadatvirTva
C++ saSualebas gvaZlevs ama Tu im programaSi gan-
vsazRvroT erTi da imave saxelis mqone ramdenime fun-
qcia, oRond mxolod im SemTxvevaSi, Tuki funqciebs
eqneba parametrebis gansxvavebuli nakrebi (sul mcire,
parametrebis gansxvavebuli tipebi). aRniSnul Tvisebas,
funqciaTa gadatvirTva ewodeba. imisaTvis, rom kompi-
latorma gansazRvros, gadatvirTvis SemTxvevaSi rome-
li funqcia gamoiZaxos, igi iZulebulia gaanalizos
argumentebis tipebi, raodenoba da maTi mimdevroba.
funqciaTa gadatvirTva ZiriTadad gamoiyeneba pro-
gramaSi erTsa da imave saxelis ramdenime funqciis
Sesaqmnelad, romelTa meSveobiT amoixsneba msgavsi
amocanebi da aqvs monacemTa gansxvavebuli tipebi.
magaliTi 16.5. SevadginoT programa, romelic mom-
xmareblis mier Seqmnili funqciebis gamoyenebiT gamo-
Tvlis kvadratis farTobs. amasTan, gamoviyenoT funq-
ciaTa gadatvirTvis SesaZlebloba.
amoxsna
#include <iostream>
void Square(int x)
{
cout<<"Result1="<<x*x<<endl;
}
void Square(double y)
{
cout<<"Result2="<<y*y<<endl;
}
184

main( )
{
int a;
double b;
cout<<"x="; cin>>a;
cout<<"y="; cin>>b;
Square(a);
Square(b);
return 0;
}
aRniSnul programaSi gamoyenebul iqna erTsa da
imave saxelis (Square) ori funqcia, magram radgan maT
gansxvavebuli tipis parametrebi hqondaT, amitom kom-
pilators ar gasWirvebia maTi gamoZaxeba.

16.6. funqciaTa Sablonebi
funqciaTa gadatvirTva, rogorc wesi, gamoiyeneba
msgavsi operaciebis Sesasruleblad sxvadasxva tipis
monacemebze, xolo, Tu operaciebi monacemTa yoveli
tipisaTvis identuria, isini SesaZlebelia gacilebiT
kompaqturad ganvaxorcieloT funqciaTa Sablonebis
gamoyenebiT. ganvixiloT misi arsi: programisti
gansazRvravs funqciis erTaderT Sablons. eyrdnoba
ra funqciis gamoZaxebis dros gamoyenebul argumentTa
tipebs, C++ avtomaturad axorcielebs sxvadasxva fun-
qciis generirebas monacemTa TiToeuli tipis damuSa-
vebis mizniT. amgvarad, erTaderTi Sablonis aRwera
iwvevs gadawyvetilebaTa mTeli jgufis gansazRvras.
funqciis Sablonis gansazRvra iwyeba koduri sit-
yviT template (Sabloni), romelsac moyveba funqciis pa-
rametrebis formaluri tipebis sia. es ukanaskneli Ta-
vsdeba "< >" frCxilebSi. yovel formalur tips win
uswrebs koduri sityva class. parametrebis formaluri
185

tipebi warmoadgens monacemTa Sedgenil an momxmareb-
lis mier gansazRvrul tipebs. isini gamoiyeneba fun-
qciis argumentebisa da dasabrunebeli Sedegis tipebis
mosacemad, aseve funqciis tanSi saWiro cvladebis aR-
weris mizniT. Sablonis Semdeg, rogorc wesi, gani-
sazRvreba Tavad funqcia. Sablonis aRwerisas gamoye-
nebuli yoveli formaluri parametri erTxel mainc
unda iqnes warmodgenili funqciis parametrebis siaSi.
amasTan, formaluri parametris yoveli saxeli unda
iyos unikaluri (sxvebisgan gansxvavebuli). SegviZlia
davaskvnaT, rom Sablonebi realurad asrulebs fun-
qciis kodis generirebis saSualebaTa rols.
magaliTi 16.6. SevadginoT programa, romelic fun-
qciis Sablonis gamoyenebiT gamoTvlis nebismieri ti-
pis sami cvladis kvadratebis jams.
amoxsna
#include <iostream>
#include <math>
template <class T>
T amount (T value1, T value2, T value3)
{
T sum=pow(value1,2)+ pow(value2,2)+pow(value3,2);
return sum;
}
main( )
{
int a,b,c,d;
float m,n,k,p;
double x,y,z,f;
cout<<" Enter numbers of type int:";
cin>>a>>b>>c;
cout<<" Enter numbers of type float:";
cin>>m>>n>>k;
cout<<" Enter numbers of type double:";
cin>>x>>y>>z;
d=amount(a,b,c);
186

p=amount(m,n,k);
f=amount(x,y,z);
cout<<"\n Result1="<<d<<endl;
cout<<" Result2="<<p<<endl;
cout<<" Result3="<<f<<endl;
return 0;}
aRniSnul programaSi funqciis SablonSi gamoyene-
bulia erTaderTi formaluri parametri T, rogorc
monacemTa tipi, romelic funqciis sxvadasxva gamoZaxe-
bisas int, float da double tipebiT icvleba.

savarjiSoebi:
1. SeadgineT programa, romelic momxmareblis mier
Seqmnili uparametrebo funqciis gamoyenebiT gamoT-
vlis
z s =
gamosaxulebis mniSvnelobas, sadac s
warmoadgens
3 2
( 2 3 7)cos y x x x x = + +
funqciis uaryo-
fiTi mniSvnelobebis kvadratebis jams. x argumenti
ki icvleba [-2;3] diapazonSi h=0.2 bijiT.
2. SeadgineT programa, romelic momxmareblis mier
Seqmnili uparametrebo funqciis gamoyenebiT gamoT-
vlis
2
x x
y e e

=
funqciis dadebiTi mniSvnelobebis
namravls, sadac x argumenti [-0,6;1,7] diapazonSi
icvleba h=0.25 bijiT.
3. SeadgineT programa, romelic inline specifikaciis
mqone funqciis gamoyenebiT gamoTvlis Semdegi
gamosaxulebis mniSvnelobas:
{ }
2 2
3
,
, , cos *sin ,
2
5,8; 1, 22; 0,1.
x y
max B - C, D- C
a
B a x y C e D xy x
x
a x y
+
= + = =
= = =
Tu
sadac

187

4. SeadgineT programa, romelic inline specifikaciis
mqone funqciis gamoyenebiT gamoTvlis Semdegi
gamosaxulebis mniSvnelobas:
{ }
( )
3
2 3 2
,
1
sin( 1) , ,
cos( 3)
( 12) , 2,8; 7, 66; 9, 012.
min B - D, D
B c D=ln c c
cx
c y x a x y a
= + + +
+
= + + = = =
Tu
sadac

5. SeadgineT programa, romelic momxmareblis mier
Seqmnili funqciis gamoyenebiT gamoTvlis samkuTxe-
dis farTobs heronis formulis safuZvelze.
amasTan, funqciaSi nebismieri ori parametri gadae-
ciT damisamarTebiT, xolo darCenili parametri
mniSvnelobiT.
6. SeadgineT programa, romelic momxmareblis mier
Seqmnili funqciis gamoyenebiT gamoTvlis
0 ax b + =

wrfivi gantolebis fesvebs a da b koeficientebis
nebismieri mniSvnelobebis dros. amasTan, a paramet-
ri funqciaSi gadaeciT mniSvnelobiT, xolo b para-
metri damisamarTebiT.
7. SeadgineT programa, romelic momxmareblis mier
Seqmnili funqciis gamoyenebiT gamoTvlis Semdegi
gamosaxulebis mniSvnelobas:
2
25
sin( 5); , 2,19.
( 5)
x
z R R x
x
t
+
= = =
+
sadac

amasTan, funqcia gamoiZaxeT jer argumentebis gare-
Se, xolo Semdeg _ erTi argumentiT.
8. SeadgineT programa, romelic momxmareblis mier
Seqmnili funqciis gamoyenebiT gamoTvlis Semdegi
gamosaxulebis mniSvnelobas:
{ }
2
2
3 5
min , , ,
sin , ln , 2 ,
1
1,57; 12,5.
b z b
A D C
z b z
A D z b C e
b
b z
+
| |
+
= = + =
|
+
\ .
= =
Tu
sadac

188

amasTan, funqcia gamoiZaxeT jer argumentebis
gareSe, xolo Semdeg _ erTi da ori argumentiT.
9. SeadgineT programa, romelic funqciaTa gadatvir-
Tvis gamoyenebiT gamoTvlis nebismieri sami ric-
xvis kubebis jamidan kvadratuli fesvis mniSvnelo-
bas.
10. SeadgineT programa, romelic funqciaTa gadatvir-
Tvis gamoyenebiT gamoTvlis SemTxveviTi ricxvebis
generaciis gziT erTidan asamde diapazonSi generi-
rebuli nebismieri oTxi mTeli ricxvis saSualo
ariTmetikuls.
11. SeadgineT programa, romelic funqciis Sablonis
gamoyenebiT gamoTvlis nebismiri sami ricxvis nam-
ravlidan kvadratuli fesvis mniSvnelobas. funqcia
gamoiZaxeT int, long da double tipis monacemebisTvis.
12. SeadgineT programa, romelic funqciis Sablonis
gamoyenebiT gamoTvlis marTkuTxedis perimetrs
float da double tipis monacemebisTvis.
















189

Tavi XVII
masivebi da funqciebi
17.1. erTganzomilebiani masivebis
gadacema funqciebSi
xSir SemTxvevaSi SesaZlebelia da saWiroc aris
ama Tu im funqciaSi argumentis saxiT gadavceT masivi.
aseT dros sasurvelia masivis zomac erT-erTi argu-
mentis saxiT warmovadginoT funqciaSi, rac am ukanask-
nels saSualebas miscems masivSi arsebuli elemente-
bis raodenoba winaswar gansazRvros. cxadia, rom masi-
vis zoma funqciis prototipis an mis aRweramde SeiZ-
leba ganisazRvros rogorc globaluri saxis mTeli
tipis mudmivi sidide (radgan masivis elementebis rao-
denoba, anu misi zoma ucvlelia).
daprogramebis ena C++-is kompilatori masivebs av-
tomaturad gadascems funqciebSi parametrebis damisa-
marTebis gziT, rac niSnavs, rom gamoZaxebul funqci-
ebs saSualeba eZlevaT Secvalon sawyis masivebSi ar-
sebuli elementebis mniSvnelobebi. amasTan, mTlianad
masivi, rogorc funqciis parametri, gadaicema damisa-
marTebiT, xolo misi calkeuli elementi mniSvnelo-
biT. masivis saxeli ki sxva araferia, Tu ara misi ri-
giT pirveli (nulovani) elementis misamarTi kompiute-
ris mexsierebaSi. radgan funqcias gadaecema masivis
sawyisi misamarTi, amitom misTvis cnobilia, Tu sad
inaxeba masivi. aqedan gamomdinare cxadia, rom rodesac
funqcia axdens Tavis tanSi masivis elementebis modi-
ficirebas, amiT igi cvlis masivis realur elementebs.
ganvixiloT im funqciis prototipi, romelSic pa-
rametrebis saxiT gadacemulia erTganzomilebiani
masivi (veqtori) da misi zoma:
void modifyArray(int [ ], const int); //prototipe
aRniSnuli prototipis mixedviT Tu vimsjelebT,
saqme gvaqvs funqciasTan, romlis saxelia modifyArray.
190

amasTan, funqcias pirveli parametris saxiT gaaCnia
mTelricxva masivi, xolo meore parametris saxiT mi-
si zoma (mTeli tipis mudmivi sisdide). arc erTi para-
metris saxeli prototipSi miTiTebuli ar aris, rad-
gan kompilatori mainc moaxdenda maT ignorirebas,
Tumca dokumentirebis TvalsazrisiT SesaZlebeli iyo
maTi saxelebis Cawera.
vinaidan funqciis aRwera iwyeba koduri sityviT
void, es niSnvas, rom funqcia ar axdens miRebuli Sede-
gebis dabrunebas.
zemoT ganxiluli prototipis Sesabamisi funqciis
aRweras aqvs Semdegi saxe:
void modifyArray(int A [ ], const int size)
{
function body;
}
am SemTxvevaSi funqciaSi miTiTebulia rogorc
erTganzomilebiani mTelricxva masivis
identifikatori (A), ise misi zomis dasaxelebac (size)
da bunebrivia, aq ganixileba funqciis tanic (function
body).
imisaTvis, rom movaxdinoT zemoT warmodgenili
funqciis gamoZaxeba, pirvel rigSi saWiroa mivuTiToT
funqciis saxeli, xolo Semdeg _ mrgval frCxilebSi
moTavsebuli da erTmaneTisgan mZimiT gamoyofili ar-
gumentebis identifikatorebi. maSasadame, mocemuli
funqciis gamoZaxebis SemTxvevaSi gveqneba Semdegi Cana-
weri:
modifyArray(array, size);
funqciaSi pirveli argumentis saxiT ganixileba is
realuri masivi array, romelic funqciis aRwerisas ga-
moyenebul A masivs (parametrs) Seesabameba, xolo meo-
re argumenti (size) warmoadgens mocemuli masivis zo-
mas. aRsaniSnavia, rom masivi identifikatoriT array un-
da Sedgebodes imave tipis elementebisgan, romlebisga-
191

nac Sedgeba A masivi da igi funqciis gamoZaxebamde
aucileblad unda iqnes aRwerili.
arsebobs situaciebi, rodesac funqciaSi paramet-
ris saxiT warmodgenili masivis zoma ar ganixileba,
rogorc globaluri monacemi. am SemTxvevaSi aucile-
belia realuri masivis zoma funqciis gamoZaxebamde
aRiweros Tundac, lokaluri monacemis saxiT.
magaliTi 17.1. SevadginoT programa, romelic mom-
xmareblis mier Seqmnili funqciis gamoyenebiT
aTelementiani mTelricxva masivis elementebs erTidan
20-mde ricxviT diapazonSi mianiWebs mTeli tipis Sem-
TxveviT mniSvnelobebs da miRebuli masivis elementebs
histrogramasTan erTad dabeWdavs.
amoxsna
#include <iostream>
#include <iomanip>
#include <stdlib>
void function(int [ ], const int); //prototipe
main( )
{
const int size=10;
int A[size];
cout<<"Current Array and Histro:"<<endl;
function(A, size);
return 0;
}
void function(int B[ ], const int n)
{
srand(time(NULL));
for(int i=0; i<n; i++)
{
B[i]=1+rand( )%20;
cout<<setw(3)<<i<<setw(5)<<B[i];
for(int j=1; j<=B[i]; j++)
cout<<setw(3)<<"*";
cout<<endl;}}
192


Sedegebi
Current Array and Histro:
0 7 * * * * * * *
1 7 * * * * * * *
2 17 * * * * * * * * * * * * * * * * *
3 17 * * * * * * * * * * * * * * * * *
4 7 * * * * * * *
5 3 * * *
6 14 * * * * * * * * * * * * * *
7 3 * * *
8 8 * * * * * * * *
9 9 * * * * * * * * *
vinaidan programaSi gamoyenebulia SemTxveviTi ri-
cxvebis generatori, romlis Sesabamisi funqcia srand()
argumentis saxiT iRebs kompiuteris sistemur dros
(time(NULL)), amitom programis yovel gaSvebaze sxvada-
sxva SesaZlo varianti miiReba.
magaliTi 17.2. SevadginoT programa, romelic mom-
xmareblis mier Seqmnili funqciebis gamoyenebiT TxuT-
meti elementisgan Semdgar mTelricxva masivis elemen-
tebs mianiWebs luw mniSvnelobebs (dawyebuls oridan)
zrdadobis mixedviT, daaxarisxebs maT klebadobiT
martivi gadanacvlebis meTodiT da dabeWdavs sawyis
da miRebul masivebs.
amoxsna
#include <iostream>
#include <iomanip>
void function(int [ ], const int); //prototipe
void print(int [ ], const int); //prototipe
void sort(int [ ], const int); //prototipe
main( )
{
const int size=15;
int A[size];
cout<<"Current array:"<<endl;
193

function(A, size);
print(A,size);
cout<<"\n Sorted array:"<<endl;
sort(A, size);
print(A,size);
return 0;
}
void function(int B[ ], const int n)
{
for(int i=0; i<n; i++)
B[i]=2*i+2;
}
void print(int B[ ], const int n)
{
for(int i=0; i<n; i++)
cout<<setw(4)<<B[i];
}
void sort(int B[ ], const int n)
{
int k;
do
{
k=0;
for(int i=0; i<n-1; i++)
if(B[i]<B[i+1])
{
int p=B[i];
B[i]=B[i+1];
B[i+1]=p;
k++;
}
}while(k!=0);
}

Sedegebi
Current array:
2 4 6 8 10 12 14 16 18 20 22 24 26 28 30
194

Sorted array:
30 28 26 24 22 20 18 16 14 12 10 8 6 4 2
aRniSnul programaSi gamoyenebulia sami funqcia:
function( ), print( ) da sort( ), romelTagan pirveli (funqcia
function) masivis elementebs zrdadobis mixedviT ani-
Webs luw mniSvnelobebs, meore (funqcia print) beWdavs
sawyis da miRebul masivebs, xolo mesame (funqcia sort)
sawyisi masivis elementebs klebadobis mixedviT axa-
risxebs martivi gadanacvlebis meTodiT.
magaliTi 17.3. SevadginoT programa, romelic mom-
xmareblis mier Seqmnili funqciebis gamoyenebiT oci
elementisgan Semdgar masivis elementebs mianiWebs ne-
bismier MmTeli tipis SemTxveviT mniSvnelobebs erTi-
dan 150-mde ricxviT diapazonSi, dixotomiis meTodiT
moZebnis saWiro elements masSi, dabeWdavs sawyis da
daxarisxebul masivebs da saZiebeli elementis indeqss.
amoxsna
#include <iostream>
#include <iomanip>
#include <stdlib>
const int size=20;
void function(int [ ], const int); //prototipe
void print(int [ ], const int); //prototipe
void sort(int [ ], const int); //prototipe
int binarySearch(int [ ], const int, int, int, int); //prototipe
main( )
{
int A[size], key, result;
cout<<"Current array:"<<endl;
function(A, size);
print(A, size);
cout<<"\n Sorted array:"<<endl;
sort(A, size);
print(A, size);
cout<<"\n SearchKey=";
195

cin>>key;
result=binarySearch(A, size, key, 0, size-1);
if(result!=-1)
cout<<"\n Total Result="<<result<<endl;
else
cout<<"\n The element is not found."<<endl;
return 0;
}
void function(int B[ ], const int size)
{
srand(time(NULL));
for(int i=0; i<size; i++)
B[i]=1+rand( )%150;
}
void print(int B[ ], const int size)
{
for(int i=0; i<size; i++)
cout<<setw(4)<<B[i];
}
void sort(int B[ ], const int size)
{
for(int m=1; m<=size-1; m++)
{
int k=0;
for(int i=0; i<size-1; i++)
{
if(B[i]>B[i+1])
{
int p=B[i];
B[i]=B[i+1];
B[i+1]=p;
k++;}
}
if(k= =0)
break;
}
}
196

int binarySearch(int B[ ], const int size, int key1, int Low, int
High)
{
int middle;
while(Low<=High)
{
middle=(Low+High)/2;
if(key1= =B[middle])
return middle;
else
{
if(key1<B[middle])
High=middle-1;
else
Low=middle+1;
}
}
return -1;
}
Sedegebi
Current array:
1 36 86 96 22 62 21 100 103 124 93 22 48 73 135
38 126 133 113 81

Sorted array:
1 21 22 22 36 38 48 62 73 81 86 93 96 100 103
113 124 126 133 135

SearchKey=100

Total Result=13
zemoT ganxilul programaSi gamoyenebulia momxma-
reblis mier Seqmnili oTxi funqcia, romelTagan pir-
veli (funqcia function) SemTxveviTi ricxvebis generaci-
is gziT sawyisi masivis elementebs aniWebs erTidan
150-mde diapazonSi mTeli tipis SemTxveviT mniSvnelo-
197

bebs srand() funqciis saSualebiT, meore (funqcia print)
beWdavs sawyis da miRebul masivebs, mesame (funqcia
sort) axarisxebs masivis elementebs zrdadobis mixed-
viT kombinirebuli daxarisxebis meTodiT, xolo meoT-
xe (funqcia binarySearch) dixotomiis meTodiT saWiro
mniSvnelobis elements moZebnis daxarisxebul masivSi.
programaSi saZiebeli mniSvnelobis saxiT ganixileba
SemTxveva, rodesac key=100.


17.2. mravalganzomilebiani masivebis
gadacema funqciebSi
momxmareblis mier Seqmnil funqciebSi parametris
saxiT SesaZlebelia warmodgenil iqnes rogorc erT-
ganzomilebiani, ise mravalganzomilebiani masivebic.
cnobilia, rom, Tu funqciaSi parametris saxiT ga-
dacemulia erTganzomilebiani masivi, maSin funqciis
aRweris, iseve rogorc funqciis prototipis gansaz-
Rvrisas parametrebis siaSi arsebuli kvadratuli
frCxilebi carieli rCeba da masivis zoma calke para-
metris saxiT ganixileba. analogiurad, rodesac fun-
qciis erT-erT parametrs warmoadgens mravalganzomi-
lebiani masivi, misi pirveli indeqsis (striqonis) miTi-
Teba saWiro ar aris, xolo sxva danarCeni indeqsebis
Cawera aucilebelia. indeqsebis ganzomilebas kompila-
tori iyenebs kompiuteris mexsierebis im ujredebis
gansazRvrisaTvis, romlebSic Tavsdeba mravalganzomi-
lebiani masivis elementebi. egm-is mexsierebaSi ki ma-
sivis yvela elementi, miuxedavad indeqsebis raodeno-
bisa, mimdevrobiTaa ganlagebuli. organzomilebian ma-
sivSi pirveli striqoni yovelTvis meore striqonis
win inaxeba mexsierebaSi. es ki kompilators saSuale-
bas aZlevs funqcias erTgvari Setyobineba misces imis
Taobaze, Tu rogor aris elementebi masivSi ganlage-
buli. organzomilebian masivSi yoveli striqoni rea-
198

lurad warmoadgens erTganzomilebian masivs. imisaT-
vis, rom funqciam gansazRvros elementis adgilmdeba-
reoba ama Tu im striqonSi, man zustad unda "icodes",
Tu ramdeni elementia moTavsebuli TiToeul striqon-
Si.
amgvarad, rodesac xdeba mimarTva elementze
A[1][2], funqciam "icis", rom aRniSnul elementamde
saWiroa egm-is mexsierebaSi A masivis pirveli striqo-
nis sami elementis gamotoveba da Semdeg mimarTva meo-
re striqonis mesame elementze (radgan organzomilebi-
an masivebSi pirvel elements aqvs rogorc striqonis,
aseve svetis aRmniSvneli nulovani indeqsebi).
rogorc wesi, Tu organzomilebiani masivi (matrica)
ganixileba funqciis erT-erT parametrad, maSin misi
svetebisa da striqonebis raodenobis aRmniSvneli mo-
nacemebi ganisazRvreba, rogorc mTeli tipis globa-
luri saxis mudmivi sidideebi.
warmovadginoT im funqciis prototipi, romelSic
erT-erTi parametris saxiT gadacemulia organzomile-
biani masivi (matrica):
void function(int [ ][columns]); //prototipe
zemoT gansazRvruli prototipis Sesabamisi fun-
qciis aRweras aqvs Semdegi saxe:
void function(int A [ ][columns])
{
function body;
}
mocemuli funqciis gamoZaxebis SemTxvevaSi gveqneba
Semdegi Canaweri:
function(array);
sadac array im realuri matricis (argumentis) iden-
tifikatoria, romelmac funqciis gamoZaxebis dros Se-
cvala misi fiqtiuri parametri - A masivi.
magaliTi 17.4. SevadginoT programa, romelic mom-
xmareblis mier Seqmnili funqciebis gamoyenebiT A[4x4]
kvadratuli matricis elementebs mianiWebs nebismier
199

mniSvnelobebs, dabeWdavs mocemul matricas da gamo-
Tvlis: matricis elementebis jams, saSualo ariTmeti-
kuls, namravls da moZebnis masSi maqsimaluri da mini-
maluri mniSvnelobis mqone elementebs.
amoxsna
#include <iostream>
#include <iomanip>
const int rows=4;
const int columns=4;
void function(float [ ][columns]); //prototipe
void print(float [ ][columns]); //prototipe
void sum_average(float [ ][columns]); //prototipe
void mult(float [ ][columns]); //prototipe
void max_min(float [ ][columns]); //prototipe
main( )
{
float A[rows][columns];
function(A);
cout<<"\n Current matrix:"<<endl;
print(A);
sum_average(A);
mult(A);
max_min(A);
return 0;
}
void function(float B[ ][columns])
{
for(int i=0; i<rows; i++)
for(int j=0; j<columns; j++)
{
cout<<"A["<<i<<"]["<<j<<"]=";
cin>>B[i][j];
}
}
void print(float B[ ][columns])
{
200

for(int i=0; i<rows; i++)
{
for(int j=0; j<columns; j++)
cout<<setw(5)<<B[i][j];
cout<<endl;}}
void sum_average(float B[ ][columns])
{
float s=0;
for(int i=0; i<rows; i++)
for(int j=0; j<columns; j++)
s+=B[i][j];
cout<<"\n Sum="<<s<<endl;
cout<<"Average="<<s/(rows*columns)<<endl;
}
void mult(float B[ ][columns])
{
double m=1;
for(int i=0; i<rows; i++)
for(int j=0; j<columns; j++)
m*=B[i][j];
cout<<" mult="<<m<<endl;
}
void max_min(float B[ ][columns])
{
float max=B[0][0], min=B[0][0];
for(int i=0; i<rows; i++)
for(int j=0; j<columns; j++)
{
if(max<=B[i][j])
max=B[i][j];
if(min>=B[i][j])
min=B[i][j];
}
cout<<"Max="<<max<<endl;
cout<<"Min="<<min<<endl;
}
201

magaliTi 17.5. SevadginoT programa, romelic mom-
xmareblis mier Seqmnili funqciebis gamoyenebiT A[5x5]
kvadratuli matricis elementebs erTidan 100-mde ric-
xviT diapazonSi mianiWebs mTeli tipis fsevdoSemTxve-
viT mniSvnelobebs, moaxdens matricis transponirebas,
gamoTvlis sawyis da transponirebul matricebSi
striqonebis mixedviT elementebis jamebs da dabeWdavs
aRniSnul matricebsa da miRebul Sedegebs.
amoxsna
#include <iostream>
#include <iomanip>
#include <stdlib>
const int rows=5;
const int columns=5;
void function(int [ ][columns]); //prototipe
void print(int [ ][columns]); //prototipe
void transpose(int [ ][columns]); //prototipe
void sum(int [ ][columns]); //prototipe
main( )
{
int A[rows][columns];
cout<<"Current matrix:"<<endl;
function(A);
print(A);
cout<<"\n RESULTS-1:"<<endl;
sum(A);
cout<<endl;
cout<<"\n Transposed matrix:"<<endl;
transpose(A);
print(A);
cout<<"\n RESULTS-2:"<<endl;
sum(A);
return 0;
}
void function(int B[ ][columns])
{
202

for(int i=0; i<rows; i++)
for(int j=0; j<columns; j++)
B[i][j]=1+rand( )%100;
}
void print(int B[ ][columns])
{for(int i=0; i<rows; i++)
{
for(int j=0; j<columns; j++)
cout<<setw(5)<<B[i][j];
cout<<endl;
}
}
void transpose(int B[ ][columns])
{
for(int i=0; i<rows; i++)
for(int j=i+1; j<columns; j++)
{
int p=B[i][j];
B[i][j]=B[j][i];
B[j][i]=p;
}
}
void sum(int B[ ][columns])
{
int s[rows];
for(int i=0; i<rows; i++)
{
s[i]=0;
for(int j=0; j<columns; j++)
s[i]+=B[i][j];
cout<<setw(5)<<s[i];
}
}
Sedegebi
Current matrix:
47 31 83 91 57
18 96 16 49 27
203

5 59 72 80 93
61 13 22 64 48
20 42 91 86 15

RESULTS-1:
309 206 309 208 254

Transposed matrix:
47 18 5 61 20
31 96 59 13 42
83 16 72 22 91
91 49 80 64 86
57 27 93 48 15

RESULTS-2:
151 241 284 370 240
aRniSnul programaSi gamoyenebulia matricis tran-
sponirebis algoriTmi, romelic dawvrilebiT ganxi-
lulia amave saxelmZRvanelos II nawilSi.
magaliTi 17.6. mocemulia ori matrica: A[2x3] da
B[2x3]. SevadginoT programa, romelic momxmareblis mi-
er Seqmnili funqciebis gamoyenebiT matricebis elemen-
tebs mianiWebs nebismier mniSvnelobebs, moZebnis maT
moduliT minimaluri mniSvnelobis elementebs, ga-
moTvlis am elementebis naxevarjams da dabeWdavs sa-
wyis matricebsa da miRebul Sedegebs.
amoxsna
#include <iostream>
#include <iomanip>
#include <math>
const int rows=2;
const int columns=3;
void function(float [ ][columns]); //prototipe
void print(float [ ][columns]); //prototipe
float minimum(float [ ][columns]); //prototipe
void sum(float, float); //prototipe
204

main( )
{ float A[rows][columns], B[rows][columns], res1, res2;
cout<<"Enter a matrix A:"<<endl;
function(A);
cout<<"\n Enter a matrix B:"<<endl;
function(B);
cout<<"\n The Current matrix A:"<<endl;
print(A);
cout<<"\n The Current matrix B:"<<endl;
print(B);
res1=minimum(A);
res2=minimum(B);
cout<<"\n Result-1="<<res1<<endl;
cout<<"\n Result-2="<<res2<<endl;
sum(res1, res2);
return 0;
}
void function(float M[ ][columns])
{
for(int i=0; i<rows; i++)
for(int j=0; j<columns; j++)
{
cout<<"array ["<<i<<"]["<<j<<"]=";
cin>>M[i][j];
}
}
void print(float M[ ][columns])
{
for(int i=0; i<rows; i++)
{
for(int j=0; j<columns; j++)
cout<<setw(5)<<M[i][j];
cout<<endl;
}
}
float minimum(float M[ ][columns])
{
205

float min=fabs(M[0][0]);
for(int i=0; i<rows; i++)
for(int j=0; j<columns; j++)
if(min>=fabs(M[i][j]))
min=fabs(M[i][j]);
return min;
}
void sum(float a, float b)
{
cout<<\n Total Result=<<(a+b)/2<<endl;
}
warmodgenil programaSi gamoyenebulia oTxi fun-
qcia, romelTagan erT-erTi (funqcia minimum) axdens
miRebuli Sedegis dabrunebas main( ) funqciaSi. radgan
aRniSnuli funqciis gamoZaxeba programaSi xorciel-
deba orjer (erTxel A matricis SemTxvevaSi, meored
B matricis SemTxvevaSi), amitom Sedegebi brundeba
orjer da ganixileba, rogorc sum() funqciis argumen-
tebi.

savarjiSoebi:
1. SeadgineT programa, romelic momxmareblis mier
Seqmnili funqciebis gamoyenebiT A[15] veqtoris
elementebs mianiWebs nebismier mniSvnelobebs, da-
beWdavs mas histrogramasTan erTad da wrfivi Zie-
bis meTodiT moZebnis saWiro elements mocemul
veqtorSi.
2. SeadgineT programa, romelic momxmareblis mier
Seqmnili funqciebis gamoyenebiT B[18] veqtoris
elementebs, dawyebuli 55-dan, klebadobis mixedviT
mianiWebs kent mniSvnelobebs, mas daaxarisxebs "buS-
tisebri daxarisxebis" meTodiT zrdadobis mi-
xedviT da dabeWdavs sawyis da miRebul veqtorebs.
206

3. SeadgineT programa, romelic momxmareblis mier
Seqmnili funqciebis gamoyenebiT M[22] veqtoris
elementebs mianiWebs nebismier mniSvnelobebs, gamo-
Tvlis veqtoris dadebiTi elementebis naxevarjams
da uaryofiTi mniSvnelobis elementebis saSualo
ariTmetikuls.
4. SeadgineT programa, romelic momxmareblis mier
Seqmnili funqciebis gamoyenebiT D[20] erTganzomi-
lebiani masivis elementebs mianiWebs mTeli tipis
SemTxveviT mniSvnelobebs erTidan 60-mde ricxviT
diapazonSi, gamoTvlis mocemuli masivis luwindeq-
siani elementebis kvadratebis jams da kentindeqsi-
ani elementebis namravls.
5. mocemulia ori veqtori: A[16] da B[16]. SeadgineT
programa, romelic momxmareblis mier Seqmnili
funqciebis gamoyenebiT, aRniSnuli veqtorebis ele-
mentebs mianiWebs nebismier mniSvnelobebs, moZebnis
maT udides elementebs da miRebuli Sedegebidan
dabeWdavs minimalurs.
6. SeadgineT programa, romelic momxmareblis mier
Seqmnili funqciebis gamoyenebiT C[3x3] kvadratuli
matricis elementebs mianiWebs nebismier mniSvnelo-
bebs, uaryofiT elementebs Secvlis maTive kvadra-
tebiT, dabeWdavs sawyis da miRebul matricebs da
gamoTvlis miRebuli matricis elementebis saSua-
lo ariTmetikuls.
7. SeadgineT programa, romelic momxmareblis mier
Seqmnili funqciebis gamoyenebiT S[7x7] kvadratuli
matricis elementebs erTidan 80-mde ricxviT diapa-
zonSi mianiWebs mTeli tipis SemTxveviT mniS-
vnelobebs, moaxdens matricis transponirebas, gamo-
Tvlis sawyis da transponirebul matricebSi svete-
bis mixedviT elementebis namravls da dabeWdavs
aRniSnul matricebsa da miRebul Sedegebs.
8. SeadgineT programa, romelic momxmareblis mier
Seqmnili funqciebis gamoyenebiT A[4x4] kvadratuli
207

matricis elementebs mianiWebs nebismier mniSvnelo-
bebs da adgilebs Seucvlis mocemuli matricis im
svetsa da striqons, romelTa gadakveTazec imyofe-
ba matricis udidesi mniSvnelobis elementi.
9. mocemulia ori matrica: A[3x4] da B[3X4]. SeadgineT
programa, romelic momxmareblis mier Seqmnili
funqciebis gamoyenebiT aRniSnuli matricebis ele-
mentebs mianiWebs nebismier mniSvnelobebs, gamo-
Tvlis TiToeuli matricis arauaryofiTi elemente-
bis jams, moZebnis maT Soris umciress da dabeW-
davs sawyis matricebsa da miRebul Sedegebs.
10. SeadgineT programa, romelic momxmareblis mier
Seqmnili funqciebis gamoyenebiT B[5x5] kvadratul
matricaSi gamoTvlis im elementebis namravlsa da
saSualo ariTmetikuls, romelTac striqonis kenti
mniSvnelobis da svetis luwi mniSvnelobis indeqse-
bi aqvs.



















208

literatura

1. Deitel,P.,Deitel,H. C++ how to program-7th ed. (+CD), 2011.
2. .. . . _.
-, 2001.
3. . ++. . -: ,
1999.
4. gaCeCilaZe l. algoriTmizaciis safuZvlebi. sa-
qarTvelos universiteti. 2011.

























209

s a r C e v i

gv.

Tavi I. informatikis ganviTarebis mokle mimoxilva. . .3
1.1. informaciis cneba. . . . . . . . . . . . . . . . . . . . . 3
1.2. informaciis damuSaveba. . . . . . . . . . . . . . . . . . 4
1.3. informaciis gamosaxva ricxviTi sidideebis
saSualebiT. . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4. avtomatizaciis pirveli mcdeloba. saangariSo
dafa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.5. teqnikuri saangariSo mowyobiloba. . . . . . . . . .7
1.6. pirveli gamomTvleli manqanebi. . . . . . . . . . . . 8
Tavi II. algoriTmizaciis zogadi cnebebi. . . . . . . 10
2.1. amocanebis gadawyvetis ZiriTadi etapebi. . . . . 10
2.2. algoriTmis cneba. . . . . . . . . . . . . . . . . . . . . .12
2.3. algoriTmebis ZiriTadi Tvisebebi. . . . . . . . . . 16
Tavi III. algoriTmebis gamosaxvis formebi. . . . . . . 19
3.1. sityvieri forma. . . . . . . . . . . . . . . . . . . . . . 19
3.2. grafikuli forma. . . . . . . . . . . . . . . . . . . . . 22
3.3. algoriTmebis warmodgenis cxriluri forma. 28
Tavi IV. algoriTmebis struqtura. . . . . . . . . . . . 33
4.1. wrfivi struqturis algoriTmebi. . . . . . . . . . 33
4.2. ganStoebuli struqturis algoriTmebi. . . . . . 40
4.3. cikluri struqturis algoriTmebi. . . . . . . . . 48
Tavi V. manqanuri enebi, asemblerisa da maRali
donis daprogramebis enebi. . . . . . . . . . . . . 53
5.1. daprogramebis tipiuri garemo. . . . . . . . . . . . 55
5.2. monacemTa tipebi. . . . . . . . . . . . . . . . . . . . . . 57
210

5.2.1. cvladebi. . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.2.2. konstantebi. . . . . . . . . . . . . . . . . . . . . . . . . 60
Tavi VI. operaciebi C++-Si. . . . . . . . . . . . . . . . . 62
6.1. ariTmetikuli operaciebi. . . . . . . . . . . . . . . . 62
6.2. Sedarebis operaciebi. . . . . . . . . . . . . . . . . . . 62
6.3. logikuri operaciebi. . . . . . . . . . . . . . . . . . . 63
6.4. miniWebis operacia. . . . . . . . . . . . . . . . . . . . . 64
6.5. inkrementisa da dekrementis operaciebi. . . . . 64
6.6. terneruli operacia. . . . . . . . . . . . . . . . . . . 65
6.7. maTematikuri funqciebis biblioTeka <math>. . 66
6.8. programis Sedgenis struqtura. . . . . . . . . . . . 68
Tavi VII. mmarTveli struqturebi . . . . . . . . . . . . . . 71
Tavi VIII. pirobiTi gadasvlis operatorebi . . . . . . . 76
8.1. amorCevis struqtura if. . . . . . . . . . . . . . . . . . 76
8.2. amorCevis struqtura if/else. . . . . . . . . . . . . . . 78
8.3. mravaljeradi amorCevis struqtura switch. . . . 82
8.4. upirobo gadasvlis operatori goto. . . . . . . . . 87
Tavi IX. cikluri struqturebi. . . . . . . . . . . . . . . 90
9.1. gameorebis struqtura while. . . . . . . . . . . . . . . 90
9.2. gameorebis struqtura do/while. . . . . . . . . . . . . .94
9.3. gameorebis struqtura for. . . . . . . . . . . . . . . . 97
9.4. Calagebuli pirobebi da ciklebi. . . . . . . . . . 101
9.5. cikluri struqturebidan alternatiuli
gamosvlis SesaZlebloba. operatorebi: break
da continue. . . . . . . . . . . . . . . . . . . . . . . . . . 103
Tavi X. masivebi. . . . . . . . . . . . . . . . . . . . . . . . . 108
10.1. zogadi cnebebi masivebze. . . . . . . . . . . . . . . . 108
10.2. masivTa aRwera. . . . . . . . . . . . . . . . . . . . . . . 110
211

10.3. erTganzomilebian masivTa gamoyenebis
magaliTebi. . . . . . . . . . . . . . . . . . . . . . . . . 112
10.4. simboluri masivebi. . . . . . . . . . . . . . . . . . . 117
Tavi XI. masivis elementebis daxarisxeba. . . . . . . . . 120
11.1. martivi gadanacvlebis meTodi. . . . . . . . . . . . 120
11.2. buStisebri daxarisxebis meTodi. . . . . . . . . . 123
11.3. daxarisxebis kombinirebuli meTodi. . . . . . . . 126
Tavi XII. Zieba masivebSi. . . . . . . . . . . . . . . . . . . 129
12.1. wrfivi Ziebis meTodi. . . . . . . . . . . . . . . . . . 129
12.2. dixotomiis meTodi. . . . . . . . . . . . . . . . . . . . 131
Tavi XIII. mravalganzomilebiani masivebi. . . . . . . . . .136
13.1. matricebi. . . . . . . . . . . . . . . . . . . . . . . . . . . 136
13.2. organzomilebiani masivebis gamoyenebis
magaliTebi. . . . . . . . . . . . . . . . . . . . . . . . . . 139
13.3. kombinirebuli amocanebi veqtorebsa da
matricebze. . . . . . . . . . . . . . . . . . . . . . . . . . 147
Tavi XIV. programuli modulebi C++-Si. . . . . . . . . 155
14.1. funqciebi. . . . . . . . . . . . . . . . . . . . . . . . . . 155
14.2. funqciebis prototipebi. . . . . . . . . . . . . . . . .163
Tavi XV. rekursia. . . . . . . . . . . . . . . . . . . . . . . . 168
15.1. rekursiuli funqciebi. . . . . . . . . . . . . . . . . . 168
15.2. rekursiebi da iteraciebi. . . . . . . . . . . . . . . 173
Tavi XVI. funqciebisa da maTi parametrebis
saxesxvaobebi . . . . . . . . . . . . . . . . . . . . . . . . 177
16.1. uparametrebo funqciebi. . . . . . . . . . . . . . . . . 177
16.2. inline funqciebi. . . . . . . . . . . . . . . . . . . . . . . 178
16.3. damisamarTeba da damisamarTebiT gadacemuli
parametrebi. . . . . . . . . . . . . . . . . . . . . . . . . . 179
212

16.4. sxvadasxva raodenobis parametrebisa da
argumentebis mqone funqciebi. . . . . . . . . . . . 182
16.5. funqciaTa gadatvirTva. . . . . . . . . . . . . . . . . 183
16.6. funqciaTa Sablonebi. . . . . . . . . . . . . . . . . . 184
Tavi XVII. masivebi da funqciebi. . . . . . . . . . . . . . . .189
17.1. erTganzomilebiani masivebis gadacema
funqciebSi. . . . . . . . . . . . . . . . . . . . . . . . . . . 189
17.2. mravalganzomilebiani masivebis gadacema
funqciebSi. . . . . . . . . . . . . . . . . . . . . . . . . . . 197
literatura. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208























213




























gamomcemloba saqarTvelos universiteti, Tbilisi,
m. kostavas 77a.

You might also like