Lecture 7 20108

You might also like

You are on page 1of 47

ВИРТУАЛ ТЕХНОЛОГИЙН ТЭНХИМ,

Е-НЭЭЛТТЭЙ ИНСТИТУТ

Алгоритм ба програмчлал

Лекц - 7

www.emust.edu.mn
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
U.CS101- Алгоритм ба програмчлал

Сэдэв: Алгоритмууд ба технологиуд, Матриц,


нэг хэмжээст матриц түүний боловсруулалт

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


www.emust.edu.mn
Агуулга:

01 Алгоритм ба технологи
01
02
02 Матриц

03 Нэг хэмжээст матриц

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


www.emust.edu.mn
Алгоритм ба технологи
Алгоритм гэдэг нь компьютерийн техник хангамжийн адил технологи юм. Бүхэл
системийн гүйцэтгэл нь хурдтай техник хангамжийг сонгодогтой ижил үр ашигтай
алгоритмыг сонгохоос хамаарна. Компьютерийн технологит гарч буй бусад хурдацтай
ахиц дэвшлүүд нь мөн алгоритмын хувьд бас гарч өөрчлөлтийг авчирч байна.
Бусад дэвшилтэт технологиудыг харгалзан үзвэл орчин үеийн компьютеруудад
алгоритм чухал болсоор байгаа билээ. Тухайлбал :
• цагийн өндөр өсөлт бүхий техник хангамж,
• өгөгдөл боловсруулах шат дамжлага,
• нэг процессороор олон үйлдэл хийх архитектурууд,
• ашиглахад хялбар, график хэрэглэгчийн интерфейсүүд(GUIs),
• обьект хандалтат системүүд
• дотоод болон өргөн хэмжээний сүлжээ

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Алгоритм ба технологи
• Хэрэглээний түвшинд алгоритмын агуулга ил байхыг шаарддаггүй зарим нэг
программууд байдаг ч (ж.нь., зарим энгийн вэб-д суурилсан аппликешнууд), ихэнх
нь алгоритмын агуулгын хэм хэмжээ шаардлагатай болдог.
• Жишээлбэл, нэг байршилаас нөгөө байршил руу яаж аялахыг тогтоодог вэб-д
суурилсан үйлчилгээг авч үзье.
- Эдгээрийг хэрэгжүүлэхэд хурдтай техник хангамж,
- График хэрэглэгчийн интерфейс,
- Өргөн хэрэглээний сүлжээн,
- Обьектын байрлалаас мөн хамаарах боломжтой.
Гэсэн хэдий ч, тодорхой үйл ажиллагаануудад алгоритм бас шаардлагатай байдаг.
Тухайлбал зам олох (магадгүй хамгийн дөт зам гэсэн алгоритмыг ашиглах байх),
газрын зураг гаргах болон хаягийг засварлах гэх мэт.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Алгоритм ба технологи
Цаашилбал, хэрэглээний түвшинд алгоритмын агуулга шаарддаггүй
аппликешнүүд хүртэл алгоритмээс бүхэлдээ хамаардаг.
• Тухайн аппликешн нь хурдтай техник хангамжаас хамаардаг уу?
• Техник хангамжийн дизайн нь алгоритмыг ашигладаг байсан. Тухайн
аппликешнууд график хэрэглэгчийн интерфейсээс шалтгаалдаг уу?
• Аливаа GUI –н дизайн алгоритмээс хамаардаг. Тухайн аппликешн сүлжээнээс
хамаардаг уу?
• Сүлжээний шугам мөн алгоритмээс бүхэлдээ хамаарна. Тухайн аппликешн
машин кодноос өөр хэл дээр бичигдсэн байдаг уу?
• Үндсэндээ хөрвүүлэгч, хэлмэрч, эвлүүлэгч боловсруулалт хийж, алгоритмыг
өргөн хэрэглэхэд бэлэн болгодог.
• Алгоритмууд нь орчин үеийн компьютеруудад ашиглагддаг ихэнх
технологиудын цөм юм.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Алгоритм ба технологи
Мөн түүнчлэн, компьютеруудын хүчин чадлууд байнгын өсөн нэмэгдэж, бид
өмнө нь байгаагүй том асуудлуудыг шийдвэрлэхийн тулд тэдгээрийг
ашигладаг.
• Оруулах эрэмбэлэлт болон нэгтгэх эрэмбэлэлтийн хоорондын дээрх
харьцуулалтаас харахад алгоритмуудын үр ашгийн хувьд гарах ялгаанууд
илүү тод байгаа нь бодлогын хэмжээнээс шалтгаалдаг байна.
• Алгоритмын мэдлэг болон аргуудын суурийг тавих нь шинэ суралцагчаас
үнэнхүү чадварлаг программистийг ялгах нэг шинж чанар мөн.
• Орчин үеийн тооцооллын технологиор, алгоритмын талаар нэг их
мэдэхгүйгээр зарим даалгаваруудыг биелүүлж чадах хэдий ч алгоритмын
сайн суурь мэдлэгийн тусламжтайгаар та илүү ихийг хийж чадна.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Матриц буюу массив(нэг хэмжээст)

Ижил төрлийн төгсгөлөг тоон элементүүдийн дарааллыг нэг


хэмжээст матриц гэнэ.

* Программчлалын хэлний хувьд массив гэж нэрлэгдэнэ.


* Массивийн элемент бүр нь элементийн дугаарыг заагч индекстэй
байна.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Матриц буюу массив

* Матриц нь ижил төрлийн олон утгыг хадгалдаг.


* Матрицын элементэд нь хандахын тулд тусгай дугаараар
хандана.
* Матрицын элемент бүр тодорхой дугаартай байна.
* Матрицыг тодорхойлохын тулд хувьсагчийн нэрийн ард [ ]-
хэмжээст эсвэл [ ][ ]-хоёр хэмжээст гэх мэт хос хаалт
ашиглана.
* Хаалтанд тухайн матрицын элементүүдийн тоог бичиж
өгнө.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Матриц буюу массив зарлах, санах ойд байрлах
<төрөл> <нэр> [<индекс>]

элементийн
элементийн
int
int A[5];
A[5]; тоо
тоо
double
double V[8];
V[8]; Элементийн
Элементийн дугаарлалт
дугаарлалт
bool
bool L[10];
L[10];
char
char S[80];
S[80]; A[0], A[1], A[2], A[3], A[4]
эсвэл
Тогтмол
Тогтмол тоон
тоон
хэмжээ A[1], A[2], A[3], A[4], A[5]
хэмжээ
const
const int
int NN =10;
=10;
int A[N];
int A[N];

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ 10


Матриц буюу массивт анхны утгыг олгох, зарлах

Массивын элементүүдийн тогтмол анхны утгыг { } хос


хаалтанд бичдэг.

int val[5]={ 10, 40, 70, 90, 120 };

Ингэж зарласан нь массивын элементүүдэд дараах байдлаар


утга олгосонтой ижил юм.

val[0] = 10; val[1] = 40; val[2] = 70; val[3] = 90; val[4] = 120;

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ 11


Матриц буюу массивт анхны утгыг олгох, зарлах

Жишээлбэл:
int a[5]={1,2,3,4,5}; /* Эхний 5 элементэд утга олгох */
int b[20]={0,1,2,3,4,5,6,7,8,9}; /* Эхний 10 элементэд нь
утга олгож байна. Бусад элементүүд нь 0 утгатай болно. */

float money[10]={ 6.23, 2.45, 8.01,2.97, 6.41};


char grades[5]={‘A’,’B’,’C’,’D’,’\0’};
char grades[5]=”ABCD”;

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ 12


Матриц буюу массивт анхны утгыг олгох, зарлах

Жишээлбэл:
Массивын элементэд утга олгох мөн элемент дээрх
үйлдлүүд нь ердийн хувьсагчид утга олгох, илэрхийлэлд
оролцох хэлбэртэй ижил болно.

a[1]=20; a[6]=a[2]; a[0]=i; a[1]=b[i];

x=y+a[3]*a[i]; хэвлэх “3-р элемент : %d”,a[3]);

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ 13


Матриц буюу массив

Матрицтай ажиллахын тулд:


1. Матрицыг заавал тодорхойлох шаардлагатай буюу санах ойд тодорхой
нэртэй үүрийг хуваарилах хэрэгтэй болдог.
2. Үүнийг нэр(n) гэж тэмдэглэх буюу нэр нь нэг хэмжээст матрицын нэр, n нь
нэг хэмжээст матрицын хэмжээ юм.
3. Нэг хэмжээст матрицын элементэд хандахдаа a[1],a[2], …. a[n] гэх
мэтчилэн ханддаг.
4. Нэг хэмжээст матрицын элементэд утга олгох үйлдлээр тодорхой утга
олгож болно.
Жишээлбэл: n төрлийн бараа авсан. Ai-ээр i-р барааны үнэ, Ki-ээр i-р барааны
тоо ширхэгийг тэмдэглэе. Тэгвэл худалдан авсан барааны нийт үнэ нь
S= A1*k1 + A2*k2 + …. An*kn болно.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Матриц буюу массив

Энэ нийлбэрийг олох алгоритмд n удаа үржих үйлдэл давтагдана. 2*n


ширхэг тоо биш, n урттай 2 нэг хэмжээст
A=(a1,a2,a3,…..an)
K=(k1,k2,k3……kn)
матриц өгөгдсөн гэж үзвэл.

A[n]=(a[1],a[2],a[3],…..a[n])
K[n]=(k[1],k[2],k[3]3……k[n])

буюу n утга давтагдах i хувьсах утга (1,2,3, … ,n) утгуудыг авна.


Өөрөөр (0,1,2,..,n-1) хэлбэрээ тодорхойлж болно.
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Матриц буюу массив
Жишээлбэл A Элементийг
Элементийгзаагч
заагчмассивын
массивын
(ИНДЕКС)
массив n=4 (ИНДЕКС)

элементтэй, AA массив
харгалзах 0 1 22
123 3 4
{5,10,15,20,25}
утгуудтай гэж
5 10 15
15
15 20 25
үзье.

A[0] A[1] Массивийн


Массивийн
A[2] A[3] A[4]
A[0] A[1] A[2]
элемент
A[3] A[4]
элементдэх
дэхутга
утга

22--(ИНДЕКС)
(ИНДЕКС)

A[2]
15
15––(УТГА)
(УТГА)

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Матриц буюу массив
Жишээлбэл Эхлэл
блок схемээр
илэрхийлбэл a[5]={5,10,15,20,25}

n=5

i=0

1 0
i<n

a[i]=д харгалзах утгыг оноох a[i]

i=i+1 Төгсгөл

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Жишээ 1 : (x1,x2 ….. x100) нэг хэмжээст матрицын элементүүдийн үржвэр ба
тэдгээрийн тоог хэвлэх алгоритм зохио!
* Үржвэрийн анхны утга Z=1, эерэг
элементүүдийн тоог тоолох тоолуур n=0
утгуудыг өгнө.
* Нэг хэмжээт матрицын ээлжит
гишүүний эерэг эсэхийг шалгана.
*Нэг хэмжээт матрицын i-р гишүүн эерэг
бол үржвэрийг олно.
* Харин сөрөг бол ямар нэгэн үйлдэл
хийлгүй шууд дараагийн элементэд
шилжинэ.
* Эерэг элементийн тоог нэгээр
нэмэгдүүлнэ.
* Давталт 100 удаа давтагдсаны дараа Z
ба n-ийн хамгийн сүүлчийн санасан
утгуудыг хэвлэнэ.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Жишээ 2: Өгөгдсөн
массивын сондгой
элементүүдийн үржвэрийг
олох.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Жишээ 3 :
D гэсэн бодит тоо
өгөгдсөн үед G(35)
массивын
элементүүдээс g(i)<D
нөхцөлийг хангах
элементүүдийн
арифметик дунджийг
олох.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Жишээ 4:
X(100)
массивын
элементүүдээс
хамгийн бага
элементийн
дугаарыг олох.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


ВИРТУАЛ ТЕХНОЛОГИЙН ТЭНХИМ,
Е-НЭЭЛТТЭЙ ИНСТИТУТ

Нэмэлт: C++ Нэг хэмжээст массив

www.emust.edu.mn
Массив. Массив тодорхойлох

• Програмчлалын бүх л төрлүүдийг нэгэн адил массив төрлийн


хувьсагчийг ч ашиглахаасаа өмнө урьдчилан тодорхойлсон байх ёстой.

• Мөн бусад төрлийн адил хувьсагчын нэр болон төрлөөс тогтоно.

• Харин бусад төрлөөс ялгарах ганц зүйл нь массивын хэмжээ буюу


элементийн тоо гэсэн шинэ бичлэг нэмэгдэнэ.

• Энэ хэмжээг шууд төрлийн нэрийн хойно залгуулан бичих бөгөөд []


дөрвөлжин хаалтаар хашсан байна.

• Массивын хэмжээ нь ямар нэгэн тогтмол тоо буюу тогтмол тоон дээр
хийгдсэн үйлдэл байж болно.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Массив. Массивын элементүүд

• Массивын гишүүдийг элемент гэж нэрлэдэг.


• Массивын элементүүд бүгд ижил төрөлтэй ч тус бүрдээ өөр өөр утга
агуулж байх болно.
• Массивын элемент бүрд төрлийнх нь хэмжээгээр санах ой
хуваарьлаж, массивын нэр нь тэрхүү үргэлжилсэн урт мужийн
эхлэлийг зааж байх болно. Массивын эхний элемент 0 гэсэн
индекстэй байна.
• Харин хамгийн сүүлийн элемент нь (n-1) гэсэн индекстэй.
• Тухайлбал өмнөх жишээнд байгаа массив нь 0-3 индекстэй 4
элементээс тогтох юм.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


25
Массивын элементүүдтэй хэрхэн ажиллах

Зарлалт:
const
const int
int NN == 5;
5;
int
int A[N];
A[N];
Ажиллах:

//
// үйл
үйл явц
явц A[0]
A[0]
//
// үйл
үйл явц
явц A[1]
A[1]
//
// үйл
үйл явц
явц A[2]
A[2]
//
// үйл
үйл явц
явц A[3]
A[3]
//
// үйл
үйл явц
явц A[4]
A[4]

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


26
Массивын элементүүдтэй хэрхэн ажиллах
Хувьсах үйлдэл: Давталтанд үйлдэл:
ii == 0;
0;
ii == 0;
0; while
while (( ii << NN ))
//
// үйлдэл
үйлдэл A[i]
A[i] {{
ii ++;
++; //
// үйлдэл
үйлдэл A[i]A[i]
//
// үйлдэл
үйлдэл A[i]
A[i] ii ++;
++;
ii ++;
++; }}
//
// үйлдэл
үйлдэл A[i]
A[i]
ii ++;
++; Параметр бүхий давталт :
//
// үйлдэл
үйлдэл A[i]
A[i]
ii ++;
++; for(
for( ii == 0;
0; ii << N;
N; i++
i++ ))
//
// үйлдэл
үйлдэл A[i]
A[i] {{
//
// үйлдэл
үйлдэл A[i] A[i]
ii++;
++; }}

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


27
Массивыг дүүргэх

int
int main()
main()
{{
const
const int
int NN == 10;
10;
int
int A[N];
A[N];
int
int i;
i;
for
for ( ii == 0;
( 0; ii << N;
N; i++
i++ ))
A[i]
A[i] == i*i;
i*i;
}}

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Массивт гарнаас утга оруулах ба дэлгэцэнд гаргах

Зарлах:
const
const int
int NN == 10;
10;
int A[N];
int A[N];
Гарнаас утга оруулах:
for
for (( ii == 0;
0; ii << N;
N; i++
i++ )) A[0] = 5
{{ A[1] = 12
cout
cout << << "A["
"A[" <<<< ii <<
<< "]=";
"]="; A[2] = 34
cin
cin >>>> A[i];
A[i]; A[3] = 56
}} A[4] = 13
Дэлгэцэнд гаргах:
cout
cout >>
>> "Массив
"Массив A:\n";
A:\n";
for
for ( i = 0; i < N; i++
( i = 0; i < N; i++ ))
cout
cout <<
<< A[i]
A[i] <<
<< "" ";
";
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Массивт санамсаргүй тоон утга авах

int
int irand
irand (( int
int a,
a, int
int bb ))
{{
return
return aa ++ rand()%
rand()% (b
(b -- aa ++ 1);
1);
}}

for
for (( ii == 0;
0; ii << N;
N; i++
i++ ))
{{
A[i]
A[i] == irand
irand (( 20,
20, 100
100 ););
cout
cout <<
<< A[i]
A[i] <<<< "" ";
";
}}

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Массив дээр хийгдэх зарим үйлдлүүд. Бодолтон дах зарлагдах
онцлог

int
int count,
count, sum;sum;
count
count == 0;0;
sum
sum == 0;
0;
for
for (( ii == 0;
0; ii << N;
N; i++
i++ ))
if
if (( 180
180 << A[i]
A[i] && && A[i]
A[i] << 190
190 )) {{
count
count ++;++;
sum
sum +=+= A[i];
A[i];
}}
cout
cout << << (float)sum
(float)sum // count;
count;

Арифметик
Арифметикдундажыг
дундажыг
(float)
(float)гэж
гэжтодорхойлж
тодорхойлж
болно.
болно.
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Массив дээр хийгдэх зарим үйлдлүүд. Массив дах хайлт

ii == 0;
0;
while A[i] !=
while (( A[i] != XX )) буруу
ii ++; буруу хэлбэр
хэлбэр
++;
cout
cout << << "A["
"A[" <<<< ii <<
<< "]="
"]=" <<
<< X;
X;

ii == 0;
0;
while
while (( ii << NN && A[i] !=
&& A[i] != XX ))
ii ++;
++; зөв
зөв хэлбэр
хэлбэр
if
if ( ii << NN ))
(
cout
cout <<<< "A["
"A[" <<
<< ii <<
<< "]="
"]=" <<
<< X;
X;
else
else
cout
cout <<<< “Олдсонгүй!";
“Олдсонгүй!";

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Массив дээр хийгдэх зарим үйлдлүүд. Массив дах хайлт

nX
nX == -1;
-1;
for
for ( ii == 0;
( 0; ii << N;
N; i++
i++ ))
if
if (( A[i]
A[i] ==== XX ))
{{
nX
nX == i;
i;
break;
break;
break; Давталтаас
Давталтаас
}} гарах
гарах
if ( nX >=
if ( nX >= 0 ) 0 )
cout
cout << << "A["
"A[" << << nX
nX <<<< "]="
"]=" <<
<< X;
X;
else
else
cout
cout << << "Не
"Не нашли!";
нашли!";

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Массив дээр хийгдэх зарим үйлдлүүд. Их элементийг олох

MM == A[0];
A[0];
for
for (( ii == 1;
1; ii << N;
N; i++
i++ ))
if ( A[i]>
if ( A[i]> M )M ) Их
Их элемент
элемент
MM == A[i];
A[i];
cout
cout << M;
<< M;
MM == A[0];
A[0]; nMaxnMax == 0;
0;
for
for (( ii == 1;
1; ii << N;
N; i++
i++ ))
if ( A[i] > M
if ( A[i] > M ) { ) { Их
Их элемент
элемент нь
нь
MM == A[i];
A[i]; дугаарын
дугаарын хамт
хамт
nMax
nMax ===i;
i;
i;
}}
cout
cout << << "A["
"A[" <<<< nMax
nMax <<<< "]="
"]=" <<
<< M;
M;

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Массив дээр хийгдэх зарим үйлдлүүд. Их элементийг олох

Илүү
Илүү сайжуулбал
сайжуулбал ::

nMax
nMax == 0;
0;
for
for (( ii == 1;
1; ii << N;
N; i++
i++ ))
if ( A[i] > A[nMax]
if ( A[i] > A[nMax] A[nMax] ))
nMax
nMax == i;
i;
cout
cout << "A[" <<
<< "A[" << nMax
nMax <<
<< "]="
"]=" <<
<< A[nMax] ;;

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Массив дээр хийгдэх зарим үйлдлүүд. Урвуу массив бүтээх
0 1 2 3 N-4 N-3 N-2 N-1
7 12 5 8 18 34 40 23

0 1 2 3 N-4 N-3 N-2 N-1


23 40 34 18 8 5 12 7

Энгийн бодолт Дунд


Дунднь
ньзогсоох
зогсоох Кодчилол
N/
for(
for( ii == 0;
0; ii << NN ;; i++
i++ )) for
for (( ii == 0;
0; ii << (N/2);
(N/2); i++
i++ ))
{ 2 {{
{
//
// байрлалаар
байрлалаар нь
нь солих
солих A[i]
A[i] ба
ба A[N-1-i]
A[N-1-i] cc ==A[i];
A[i];
}} A[i]
A[i] ==A[N-1-i];
A[N-1-i];
A[N-1-i]
A[N-1-i] ==c; c;
}}

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Массив дээр хийгдэх зарим үйлдлүүд. Массиваас массив бүтээх
Жишээлбэл : A 0 1 2 3 4 5
массивын тэгш
элементүүдээс A 12 3 34 11 23 46
бүрдсэн B
массивийг үүсгэх.
B 12 34 46 ? ? ?

count
count == 0;
0;
for
for ( i = 0;
( i = 0; ii << N;
N; i++
i++ ))
if
if (( A[i]
A[i] %% 22 ==
== 00 ))
{{
B[count]===A[i];
B[count]
B[count] A[i];
A[i];
count
count ++;
++;
}}
for
for (( ii == 0;
0; ii << count
count
count ;; i++
i++ ))
хэвлэх
хэвлэх ( "%d ", B[i] );
( "%d ", B[i] );
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Массив дээр хийгдэх зарим үйлдлүүд. Массив эрэмбэлэх
Жишээлбэл : 1-р алхам:
Массивийн
элэментүүдийг
хамгийн багаас
их рүү нь
эрэмбэлэе гэж
үзвэл :
2-р алхам: 3-р алхам: 4-р алхам:

N
N элементийг
элементийг эрэмбэлэхийн
эрэмбэлэхийн тулд
тулд N-1
N-1 нэвтрэлт
нэвтрэлт хангалттай
хангалттай (N-1
(N-1 элементийг
элементийг
байрлуулахад
байрлуулахад хангалттай).
хангалттай).

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Массив дээр хийгдэх зарим үйлдлүүд. Массив эрэмбэлэх

1-р алхам: jj == N-2


N-2 to
to 00 алхам
алхам -1
-1
хэрэв A[j+1]< A[j]
хэрэв A[j+1]< A[j] toto
//
// байрлалаар
байрлалаар солих
солих A[j]
A[j] ии A[j+1]
A[j+1]

2-р алхам: jj == N-2


N-2 to
to 111 алхам
алхам -1
-1
хэрэв
хэрэв A[j+1]<
A[j+1]< A[j]
A[j] to
to
//
// байрлалаар
байрлалаар солих
солих A[j]
A[j] ии A[j+1]
A[j+1]

for
for (( ii == 0;
0; ii << N-1;
N-1; i++
i++ ))
for
for ( j = N-2; j >= ii ;; j--
( j = N-2; j >= j-- ))
if
if (( A[j]
A[j] >> A[j+1]
A[j+1] ))
{{
//
// байрлалаар
байрлалаар солих
солих A[j]
A[j] ии A[j+1]
A[j+1]
}}

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Массив дээр хийгдэх зарим үйлдлүүд. Элементийг эхний
байрлалыг тавих
Жишээлбэл : ii == 00 to
to N-1
N-1
Массивийн //
// A[i]..A[N]
A[i]..A[N] аас
аас хамгийн
хамгийн бага
бага элементийн
элементийн дугаарыг
дугаарыг
хамгийн бага
элэментийн олж //
// хайх
хайх
эхний байрлалд хэрэв
хэрэв ii !=!= nMin
nMin to
to
тавих. //
// байрлалаар солих
байрлалаар солих A[i]
A[i] ба
ба A[nMin]
A[nMin]
for
for(( ii==0;
0; ii<<N-1;
N-1; i++
i++ )) {{
nMin
nMin = i;
nMin==i; i;
for
for ( j = i+1; jj<<N; j++ ))
for(( jj==i+1;i+1; j <N;N; j++
j++ )
if
if (( A[j] <<A[nMin] )
if ( A[j] < A[nMin] )) nMin = j;
A[j] A[nMin]
nMin = j;
nMin = j;
if
if(( ii!= != nMin
nMin )) {{
//
// байрлалаар
байрлалаар солих
солих A[i]
A[i] ба
ба A[nMin]
A[nMin]
}}
}}

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Массив дээр хийгдэх зарим үйлдлүүд. Массиваас элемент хайх
1 1 1
Жишээлбэл : Хоёртын XX == 77
2 2 2
хайлтаар массиваас
3 3 3
элементийн хайх.
4 44 4
X>4
5 5 5
6 6 X>6 66
7 7 7
X<8 88 8 8
1.
1. A[c]-аас
A[c]-аас дундын
дундын элементийг
элементийг сонгох
сонгох болон
болон X-
X-
тэй 9 9 9
тэй харьцуулах.
харьцуулах.
2.
2. Хэрэв
Хэрэв XX == A[c],
A[c], олдсон.
олдсон. 10 10 10
3.
3. Хэрэв
Хэрэв XX << A[c],
A[c], үед
үед эхний
эхний хагасаас
хагасаас хайх.
хайх. 11 11 11
4.
4. Хэрэв X > A[c], үед хоёр дох хагасаас
Хэрэв X > A[c], үед хоёр дох хагасаас хайх.
хайх. 12 12 12
13 13 13
14 14 14
15 15 15
16 16 16

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


41
Массив дээр хийгдэх зарим үйлдлүүд. Массиваас элемент хайх

A[0]
XX == 44
44 A[N-1] A[N]
6 34 44 55 67 78 82

L с R
6 34 44 55 67 78 82

L с R
6 34 44 55 67 78 82

L с R
6 34 44 55 67 78 82

L R

! R-1 :: хайлт
LL == R-1 хайлт шийдэгдсэн
шийдэгдсэн
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Массив дээр хийгдэх зарим үйлдлүүд. Массиваас элемент хайх

int
int X, X, L,
L, R,
R, c;
c;
LL = = 0;0; RR == N;
N; //
// эхний
эхний хэсэг
хэсэг
while
while (( LL < < R-1
R-1 ))
{{
cc = = (L+R)
(L+R) // 2;2; //
// дундыг
дундыг олох
олох
ifif (( XX <
< A[c]
A[c] )) //// аль
аль нэг
нэг тал
тал руу
руу шахаж
шахаж үргэлжүүлэх
үргэлжүүлэх
RR = c;
= c;
else
else LL = = c;c;
}}
ifif (( A[L]
A[L] ==== XX ))
хэвлэх
хэвлэх (( "A[%d]=%d",
"A[%d]=%d", L, L, XX );
);
else
else хэвлэххэвлэх (( “олдсонгүй"
“олдсонгүй" );
);

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Массив. Массив кодчилолын тухай үндсэн ойлголт

Жишээлбэл : Хүмүүсийн насыг массив ашиглан санах ойд хадгалж байна.

#include <iostream>
using namespace std;
int main()
{
int age[4]; Үр дүнд:
for (int i = 0; i < 4; ++i) {
cout << " Насаа оруулж өгнө үү :"; Насаа оруулж өгнө үү : 44
cin >> age[i]; // Утга оруулах хэсэг Насаа оруулж өгнө үү : 16
} Насаа оруулж өгнө үү : 23
for (int i = 0; i < 4; ++i) { Насаа оруулж өгнө үү : 68
// Утга хэвлэх хэсэг
cout <<endl<< " Таны оруулсан нь :“ <<age[i]; Таны оруулсан нь: 44
} Таны оруулсан нь: 16
return 0; Таны оруулсан нь: 23
} Таны оруулсан нь: 68

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Массив. Массивын элементэд хандах нь

Дээрх жишээнд бид массивын элемент бүрд 2 удаа хандаж байна. Эхний удаад уг
массивын элемент бүрт гарнаас утга оноож өгч байгаа.

cin >> age[i];

Харин дараагийн удаад тэдгээрийг дэлгэцэнд хэвлэн гаргаж байна.

cout << endl<<“Таны оруулсан нь “ << age[i];

Ингэж хандахдаа массивын нэрийг залгуулан дөрвөлжин хаалтанд хашигдсан j


гэсэн хувьсагчийг ашиглажээ. Массивын аль элементэд хандахыг j гэсэн хувьсагч
ашиглан зохицуулж байна.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Массив. Массивын элементүүдийг дундажлах нь

Массивтай ажиллах өөр нэгэн жишээ үзье. Энэ жишээ нь хэрэглэгчийн оруулсан 6 тоог
массивт хадгалж, тэдгээрийн дунджийг тооцон гаргаж өгөх болно.

#include <iostream>
using namespace std;
const int SIZE=6;
int main()
{ float sales[SIZE];
cout<<endl<<"6 өдрийн орлогыг дараалуулан оруул Үр дүнд:
"<<endl;
6 өдрийн орлогыг дараалуулан
for (int i = 0; i < SIZE; ++i) оруул
cin>>sales[i]; 352.64
float total=0; 867.70
for (int i = 0; i < SIZE; ++i) 781.32
total+=sales[i]; 867.35
float average=total/SIZE; 746.21
cout<<"Дундаж орлого: "<<average; } 189.45
Дундаж орлого: 634.11
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ
Массив. Массивын элементүүдийг дундажлах нь

Өмнөх жишэээд массивын хэмжээг тогтмол болгон тодорхойлж, түүнийгээ


программын туршид ашигласан байна.

const int SIZE=6;

Массивын хэмжээг ингэж тогтмолоор тодорхойлохын гол ашиг тус нь программчилж


байх үед массивын хэмжээг өөрчлөх ажиллагааг хялбар болгодогт байгаа юм.
• Зөвхөн энэ тогтмолын утгыг өөрчлөхөд программ дахь массивтай холбоотой бүх
үйлдэл дэх элементийн тоо автоматаар өөрчлөгдөх юм.
• Программд ингэж тогтмолоор ашиглагдах нэрнүүдийг голчлон том үсгээр
тодорхойлдог.
• Энэ нь программыг уншиж байх явцад өөрчлөгдөхгүй тогтмол утгуудыг шууд ялган
харах боломж олгоно.

Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ


Массив. Массивд анхны утга оноох

Бусад төрлүүдийн нэгэн адил массивыг тодорхойлох үед анхны утгыг нь оноож өгч
болно.
Үр дүнд :
#include <iostream>
using namespace std; Sariing oruulna uu (1 to 12):9
Odriig oruulna uu (1 to 31):9
int main()
Jiliin ehnees ongorson odriin too : 252
{ --------------------------------
int sar, odor, niit_odor, sariin_odruud[12]= Process exited after 4.778 seconds with return value 0
{31,28,31,30,31,30,31,31,30,31,30,31}; Press any key to continue . . .
cout<<endl<<"Sariing oruulna uu (1 to 12):";
cin >>sar; Хэрэглэгч гараас сар, өдрийг оруулж өгсний дараагаар
программ өмнөх бүх саруудын нийт өдрийг тоолж,
cout <<"Odriig oruulna uu (1 to 31):";
нийлбэрийг niit_odor хувьсагчид хадгалж байна. Харин
cin>>odor; сар бүр дэх өдрийг sariin_odruud массиваас унших
niit_odor=odor; болно. Жишээ нь: Хэрэглэгч 5 сар гэж өгсөн бол өмнөх
for (int j=0; j<sar-1; j++) 4 сарын (31, 28, 31, 30) гэсэн утгууд нэмэгдэх юм.
niit_odor+=sariin_odruud[j];
cout<<"Jiliin ehnees ongorson odriin too : "<<niit_odor; }
Виртуал Технологийн Тэнхим, Е-НЭЭЛТТЭЙ ИНСТИТУТ

You might also like

  • Lecture 6 2018
    Lecture 6 2018
    Document50 pages
    Lecture 6 2018
    Amarsaikhan Tuvshinbayar
    100% (3)
  • Lecture 11
    Lecture 11
    Document24 pages
    Lecture 11
    Amarsaikhan Tuvshinbayar
    100% (2)
  • Lecture 15
    Lecture 15
    Document40 pages
    Lecture 15
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Lec1-1 Corporate Activity Shine
    Lec1-1 Corporate Activity Shine
    Document61 pages
    Lec1-1 Corporate Activity Shine
    Amarsaikhan Tuvshinbayar
    0% (1)
  • Programming Lec 6
    Programming Lec 6
    Document51 pages
    Programming Lec 6
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Lecture 12
    Lecture 12
    Document34 pages
    Lecture 12
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Lecture 13
    Lecture 13
    Document46 pages
    Lecture 13
    Amarsaikhan Tuvshinbayar
    100% (2)
  • Lecture 9
    Lecture 9
    Document46 pages
    Lecture 9
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Lecture - 10
    Lecture - 10
    Document35 pages
    Lecture - 10
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Lecture 8 2018
    Lecture 8 2018
    Document54 pages
    Lecture 8 2018
    Amarsaikhan Tuvshinbayar
    100% (3)
  • Lecture 4 2018
    Lecture 4 2018
    Document47 pages
    Lecture 4 2018
    Amarsaikhan Tuvshinbayar
    100% (4)
  • Lecture 3 2018
    Lecture 3 2018
    Document42 pages
    Lecture 3 2018
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Lecture 5 2018
    Lecture 5 2018
    Document54 pages
    Lecture 5 2018
    Amarsaikhan Tuvshinbayar
    100% (2)
  • Koosen 2018 Algorithm 2
    Koosen 2018 Algorithm 2
    Document48 pages
    Koosen 2018 Algorithm 2
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Lecture 1 2018
    Lecture 1 2018
    Document39 pages
    Lecture 1 2018
    Amarsaikhan Tuvshinbayar
    100% (6)
  • IT101 Lecture 4
    IT101 Lecture 4
    Document72 pages
    IT101 Lecture 4
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Programming Lec 9
    Programming Lec 9
    Document39 pages
    Programming Lec 9
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Lecture 2 2018
    Lecture 2 2018
    Document33 pages
    Lecture 2 2018
    Amarsaikhan Tuvshinbayar
    100% (1)
  • Lecture 3
    Lecture 3
    Document72 pages
    Lecture 3
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Lecture 3
    Lecture 3
    Document72 pages
    Lecture 3
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Baikal Hotolbor
    Baikal Hotolbor
    Document2 pages
    Baikal Hotolbor
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Baikal Hotolbor
    Baikal Hotolbor
    Document2 pages
    Baikal Hotolbor
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Programming Lec 7
    Programming Lec 7
    Document57 pages
    Programming Lec 7
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Programming Lec 6
    Programming Lec 6
    Document51 pages
    Programming Lec 6
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Programming Lec 8
    Programming Lec 8
    Document32 pages
    Programming Lec 8
    Amarsaikhan Tuvshinbayar
    100% (1)
  • Lecture 2
    Lecture 2
    Document80 pages
    Lecture 2
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • PL - 3
    PL - 3
    Document47 pages
    PL - 3
    Amarsaikhan Tuvshinbayar
    No ratings yet
  • Lecture 1
    Lecture 1
    Document54 pages
    Lecture 1
    Amarsaikhan Tuvshinbayar
    100% (2)
  • Koosen 2018 Algorithm Programming 3
    Koosen 2018 Algorithm Programming 3
    Document46 pages
    Koosen 2018 Algorithm Programming 3
    Amarsaikhan Tuvshinbayar
    100% (1)
  • Programming Lec 4
    Programming Lec 4
    Document39 pages
    Programming Lec 4
    Amarsaikhan Tuvshinbayar
    No ratings yet