SlideShare a Scribd company logo
Лекц №5
Хүснэгт
А. Хүдэр
 Хүснэгт зарлах, анхны утга олгох,
хүснэгтийн элементүүдэд хандах
 Тэмдэгт төрлийн тогтмол зарлах
 Хүснэгтийг функцэд дамжуулах
 Хүснэгтийг утгуудын жагсаалтыг хадгалах,
эрэмбэлэх, хайхад ашиглах
 Олон индекстэй хүснэгт зарлан ашиглах
 Дүгнэлт
212/16/2015Vanderbilt university
 Хүснэгт
◦ Санах ой дахь дараалсан байрлалууд
◦ Ижил нэр ба төрөл
 Элементэд нь хандахын тулд
◦ Хүснэгтийн нэр
◦ Байрлалын дугаар
 Хэлбэр:
ХүснэгтийнНэр[байрлалын дугаар]
◦ Эхний элемент 0 байрлал дээр байна
◦ c гэсэн нэртэй n ширхэг элементтэй
хүснэгт
 c[0], c[1], ... c[n-1]
312/16/2015Vanderbilt university
 Хүснэгтийн элементүүд нь энгийн
хувьсагчидтай адилхан байна
c[0] = 3;
printf( "%d", c[0] );
◦ Индекс дээр үйлдэл хийж болно. Хэрэв х нь 3-тай
тэнцүү бол
 c[5-2],c[3],c[x] бүгд ижил юм
 Анхаарах зүйл:
◦ “хүснэгтийн долоо дахь элемент”  хүснэгтийн 6
индекстэй элемент
◦ “хүснэгтийн долоо дугаартай элемент”  хүснэгтийн 7
индекстэй элемент буюу өөрөөр хэлбэл хүснэгт дэх 8-
р элемент
412/16/2015Vanderbilt university
512/16/2015Vanderbilt university
 Хүснэгтийг зарлахдаа дараах зүйлсийг зааж
өгнө
◦ Нэр
◦ Хүснэгтийн төрөл
◦ Элементийн тоо
arrayType arrayName[ numberOfElements ];
◦ Жишээ:
int c[10];
float myArray[3284];
 Ижил төрлийн хэд хэдэн хүснэгт зарлах
◦ Хэлбэр нь энгийн хувьсагчид зарлахтай ижил
◦ Жишээ:
int b[100], x[27];
612/16/2015Vanderbilt university
 Анхны утга олголт
int n[5] = { 1, 2, 3, 4, 5 };
◦ Хэрэв анхны утгууд хангалтгүй бол баруун талд
үлдсэн элементүүд тэг утгатай болно
int n[5] = { 1 }
 Эхний элемент нь нэг, бусад нь тэг болно
◦ Хэт олон анхны утга байвал синтакс алдаа гарна
◦ Си-гийн хүснэгтийн хилийг шалгадаггүй
 Хэрэв хэмжээг заагаагүй бол анхны утгуудаар
хэмжээг олно
◦ int n[ ] = { 1, 2, 3, 4, 5 };
◦ 5 ширхэг анхны утга байгаа тул 5 элементтэй хүснэгт
болно
712/16/2015Vanderbilt university
812/16/2015Vanderbilt university
912/16/2015Vanderbilt university
1012/16/2015Vanderbilt university
1112/16/2015Vanderbilt university
 Хүснэгт зарлах, анхны утга олгох,
хүснэгтийн элементүүдэд хандах
 Тэмдэгт төрлийн тогтмол зарлах
 Хүснэгтийг функцэд дамжуулах
 Хүснэгтийг утгуудын жагсаалтыг хадгалах,
эрэмбэлэх, хайхад ашиглах
 Олон индекстэй хүснэгт зарлан ашиглах
 Дүгнэлт
1212/16/2015Vanderbilt university
1312/16/2015Vanderbilt university
1412/16/2015Vanderbilt university
1512/16/2015Vanderbilt university
1612/16/2015Vanderbilt university
1712/16/2015Vanderbilt university
1812/16/2015Vanderbilt university
1912/16/2015Vanderbilt university
for давталт шооны нүдний тоо
хэдэн удаа буусныг хадгалахад
6 хувьсагч, switch операторын
оронд нэг хүснэгт хэрэглэж
байна
2012/16/2015Vanderbilt university
2112/16/2015Vanderbilt university
 Тэмдэгт төрлийн хүснэгт
◦ “first” тэмдэгт мөр нь тэмдэгтүүдийн статик хүснэгт юм
◦ Тэмдэгтэн хүснэгтийг тэмдэгт мөр төрлийн утга хэрэглэн
анхны утгыг нь олгож болно
char string1[] = "first";
 „0‟ гэсэн хоосон тэмдэгт тэмдэгт мөрийн төгсгөлийг заана
 string1 нь яг үнэндээ 6 элементтэй
 түүнийг доорх байдлаар бичиж болно
char string1[] = { 'f', 'i', 'r', 's', 't', '0' };
◦ Элементүүдэд нь хандаж болно
 string1[3] нь „s‟ тэмдэгттэй тэнцүү
◦ Хүснэгтийн нэр нь хүснэгтийн хаяг болох тул scanf функцэд &
хэрэглэлгүй бичнэ
scanf( "%s", string2 );
 Харагдахгүй тэмдэгт гарч ирэх хүртэл тэмдэгтүүдийг уншина
 Хүснэгтийн хэмжээнээс хэтэртэл бичиж чадах тул болгоомжтой байх
хэрэгтэй
2212/16/2015Vanderbilt university
string2 хүснэгт тэмдэгт бүрийн
хувьд нэг элемент буюу 14, дээр нь
хоосон тэмдэгт 0-г агуулна
for давталт нь string1-ийн
тэмдэгтүүдийг хооронд нь зайгаар
тусгаарлан хэвлэнэ
2312/16/2015Vanderbilt university
2412/16/2015Vanderbilt university
 Автомат хүснэгт агуулах функц байн байн
дуудагдаж байвал хүснэгтийг дахин дахин
үүсгэхгүйн тулд статик байдлаар зарлах
хэрэгтэй.
2512/16/2015Vanderbilt university
2612/16/2015Vanderbilt university
static хүснэгт нь staticArrayInit функцийг
анх дуудахад ганц удаа л үүсгэгдэнэ
2712/16/2015Vanderbilt university
Автомат хүснэгт нь automaticArrayInit
функц дуудах бүрд дахин үүснэ
2812/16/2015Vanderbilt university
2912/16/2015Vanderbilt university
 Хүснэгт зарлах, анхны утга олгох,
хүснэгтийн элементүүдэд хандах
 Тэмдэгт төрлийн тогтмол зарлах
 Хүснэгтийг функцэд дамжуулах
 Хүснэгтийг утгуудын жагсаалтыг хадгалах,
эрэмбэлэх, хайхад ашиглах
 Олон индекстэй хүснэгт зарлан ашиглах
 Дүгнэлт
3012/16/2015Vanderbilt university
 Хүснэгтийг дамжуулах
◦ Хүснэгтэн аргументийг функцэд дамжуулахын тулд
хүснэгтийн нэрийг ямар ч хаалтгүйгээр бичнэ
int myArray[ 24 ];
myFunction( myArray, 24 );
 Ихэвчлэн хүснэгтийн хэмжээг хамт дамжуулдаг
◦ Хүснэгтийг хаягаар дамжуулдаг
◦ Хүснэгтийн нэр бол эхний элементийн хаяг юм
◦ Функц хүснэгтийг хаана хадгалсныг мэднэ
 Санах ой дахь байрлал дээр нь өөрчилнө
 Хүснэгтийн элементийг дамжуулах
◦ Утгаар дамжуулах арга хэрэглэнэ
◦ Индекстэй нэрийг (жишээ нь myArray[3]) функцэд
дамжуулна
3112/16/2015Vanderbilt university
 Функцийн загвар
void modifyArray( int b[], int arraySize );
◦ Загварт параметрийн нэрийг заавал бичих
хэрэггүй
 int b[]-г int [] гэж бичиж болно
 int arraySize-г int гэж бичиж болно
3212/16/2015Vanderbilt university
 Тайлбар: %p хувиргах тусгай тэмдэгт нь
хаягийг 16-тын тоо хэлбэрээр гаргана
3312/16/2015Vanderbilt university
Функцийн загвар нь
функц хүснэгт хүлээж
авахыг заана
a хүснэгтийг modifyArray
функц рүү зөвхөн нэрийг
нь өгөх замаар дамжуулна
3412/16/2015Vanderbilt university
Хүснэгтийн элементийг
modifyElement функц руу a[3] – ыг
өгч дамжуулна
3512/16/2015Vanderbilt university
3612/16/2015Vanderbilt university
const үг нь хөрвүүлэгчид
хүснэгт өөрчлөгдөхгүй
гэдгийг заана
Хүснэгтийг өөрчлөх оролдлого
бүр хөрвүүлэлтийн алдаанд
хүргэнэ
3712/16/2015Vanderbilt university
3812/16/2015Vanderbilt university
 Хүснэгт зарлах, анхны утга олгох,
хүснэгтийн элементүүдэд хандах
 Тэмдэгт төрлийн тогтмол зарлах
 Хүснэгтийг функцэд дамжуулах
 Хүснэгтийг утгуудын жагсаалтыг хадгалах,
эрэмбэлэх, хайхад ашиглах
 Олон индекстэй хүснэгт зарлан ашиглах
 Дүгнэлт
3912/16/2015Vanderbilt university
 Өгөгдлийг эрэмбэлэх
◦ Тооцооллын чухал хэрэглээ
◦ Ямар ч байгууллага ямар нэг өгөгдөл эрэмбэлэх ѐстой
болдог
 Бөмбөлгийн арга (живүүлэх эрэмбэлэлт)
◦ Хүснэгтийг хэд хэдэн удаа уншина
◦ Дараалсан хоѐр элементийг харьцуулна
 хэрэв өсөх эрэмбэтэй (эсвэл тэнцүү бол) юу ч хийхгүй
 буурах эрэмбэтэй бол элементүүдийг солино
◦ Давтах
 Жишээ
◦ анхны: 3 4 2 6 7
◦ эхний уншилт: 3 2 4 6 7
◦ хоѐр дахь уншилт: 2 3 4 6 7
◦ Жижиг элементүүд дээш “бөмбөлөг болж” гарна
4012/16/2015Vanderbilt university
4112/16/2015Vanderbilt university
Хэрэв ямар нэг хоѐр элемент
буруу эрэмбэтэй байвал уг
функц байрыг нь солино
4212/16/2015Vanderbilt university
 Хүснэгтээс түлхүүр утга хайх
 Шугаман хайлт
◦ Энгийн
◦ Хүснэгтийн бүх элементийг түлхүүр утгатай харьцуулна
◦ Жижиг, эрэмбэлэгдээгүй хүснэгтэнд тохиромжтой
 Хоѐртын хайлт
◦ Эрэмбэлэгдсэн хүснэгтэнд зориулагдсан
◦ Голын элементийг түлхүүртэй харьцуулна
 Хэрэв тэнцүү бол олсон гэж үзнэ
 Хэрэв түлхүүр < голынх бол хүснэгтийн эхний хагаст хайх
 Хэрэв түлхүүр > голынх бол хүснэгтийн сүүлийн хагаст хайх
 Давтах
◦ Маш хурдан; 2n > тооны элементтэй үед дээд тал нь n алхам
хийнэ
 30 элементтэй хүснэгтэд дээд тал нь 5 алхам хийнэ
 25 > 30 учир дээд тал нь 5 алхам
4312/16/2015Vanderbilt university
4412/16/2015Vanderbilt university
4512/16/2015Vanderbilt university
Шугаман хайлтын алгоритм
олох хүртлээ хүснэгтийн бүх
элементтэй харьцуулна
4612/16/2015Vanderbilt university
4712/16/2015Vanderbilt university
4812/16/2015Vanderbilt university
утга олдсон бол
индексийг буцаана
утга өндөр бол хүснэгтийн зүүн хагаст хайх
утга бага бол хүснэгтийн зүүн хагаст хайх
4912/16/2015Vanderbilt university
5012/16/2015Vanderbilt university
5112/16/2015Vanderbilt university
5212/16/2015Vanderbilt university
 Хүснэгт зарлах, анхны утга олгох,
хүснэгтийн элементүүдэд хандах
 Тэмдэгт төрлийн тогтмол зарлах
 Хүснэгтийг функцэд дамжуулах
 Хүснэгтийг утгуудын жагсаалтыг хадгалах,
эрэмбэлэх, хайхад ашиглах
 Олон индекстэй хүснэгт зарлан ашиглах
 Дүгнэлт
5312/16/2015Vanderbilt university
 Олон индекстэй хүснэгт
◦ Мөр болон баганатай хүснэгт (m x n хүснэгт)
◦ Матрицтай адил: мөрийн дугаар дараа нь баганын
дугаарыг заана
 Анхны утга олгох
int b[ 2 ][ 2 ] = { { 1, 2 }, { 3, 4 } };
◦ Нэг мөрөнд байх утгуудыг их хаалтанд бүлэглэнэ
◦ Хэрэв элементийн утга дутуу заавал тэр нь тэг утгатай
болно
int b[ 2 ][ 2 ] = { { 1 }, { 3, 4 } };
 Элементэд нь хандах
◦ Эхлээд мөр, дараа нь баганын дугаарыг заана
printf( "%d", b[ 0 ][ 1 ] );
 a[x, y] гэж бичихгүй, a[x][y] гэж бичнэ
5412/16/2015Vanderbilt university
5512/16/2015Vanderbilt university
array1 хүснэгтийн хоѐр мөрийг
бүтэн зарласан байна
array2 болон array3-ын зөвхөн хэсгийнх нь
анхны утгыг олгосон байна
5612/16/2015Vanderbilt university
5712/16/2015Vanderbilt university
Хүснэгтийн мөр бүр нэг оюутны
дүнгүүдийг хадгална
5812/16/2015Vanderbilt university
average функцэд хүснэгтийн мөрийг дамжуулж
байна
5912/16/2015Vanderbilt university
6012/16/2015Vanderbilt university
6112/16/2015Vanderbilt university
6212/16/2015Vanderbilt university
6312/16/2015Vanderbilt university
 Хүснэгт зарлах, анхны утга олгох,
хүснэгтийн элементүүдэд хандах
 Тэмдэгт төрлийн тогтмол зарлах
 Хүснэгтийг функцэд дамжуулах
 Хүснэгтийг утгуудын жагсаалтыг хадгалах,
эрэмбэлэх, хайхад ашиглах
 Олон индекстэй хүснэгт зарлан ашиглах
 Дүгнэлт
6412/16/2015Vanderbilt university
 Хүснэгт зарлах
◦ хүснэгтийнТөрөл хүснэгтийнНэр[элементийнТоо];
 Тэмдэгт тогтмол
◦ #define SIZE 12 /*энд цэгтэй таслал тавихгүй*/
 Хүснэгтийн хэмжээ
 Хүснэгтийг функцэд дамжуулах: хаягаар болон
утгаар
 Хүснэгтийг эрэмбэлэх: бөмбөлөг эрэмбэлэлт
(живүүлэх эрэмбэлэлт)
 Хүснэгтээс хайх: шугаман ба хоѐртын хайлт
 Олон индекстэй хүснэгт
6512/16/2015Vanderbilt university

More Related Content

What's hot

U.cs101 алгоритм программчлал-5 zasvar badral(1)
U.cs101   алгоритм программчлал-5 zasvar badral(1)U.cs101   алгоритм программчлал-5 zasvar badral(1)
U.cs101 алгоритм программчлал-5 zasvar badral(1)
Badral Khurelbaatar
 
U.cs101 алгоритм программчлал-10
U.cs101   алгоритм программчлал-10U.cs101   алгоритм программчлал-10
U.cs101 алгоритм программчлал-10
Badral Khurelbaatar
 
Өгөгдлийн бүтэц
Өгөгдлийн бүтэцӨгөгдлийн бүтэц
Өгөгдлийн бүтэц
Muuluu
 
u.cs101 "Алгоритм ба програмчлал" Лекц №2
u.cs101 "Алгоритм ба програмчлал" Лекц №2u.cs101 "Алгоритм ба програмчлал" Лекц №2
u.cs101 "Алгоритм ба програмчлал" Лекц №2
Khuder Altangerel
 
дотоод сүлжээний зохион байгуулалт
дотоод сүлжээний зохион байгуулалтдотоод сүлжээний зохион байгуулалт
дотоод сүлжээний зохион байгуулалт
Сандаг-Очир Жамъяндорж
 
тооллын систем
тооллын системтооллын систем
тооллын системMunkhuu Buyanaa
 
u.cs101 "Алгоритм ба програмчлал" Лекц №7
u.cs101 "Алгоритм ба програмчлал" Лекц №7u.cs101 "Алгоритм ба програмчлал" Лекц №7
u.cs101 "Алгоритм ба програмчлал" Лекц №7
Khuder Altangerel
 
мэдээллийн технологи 1 хичээлийн хөтөлбөр
мэдээллийн технологи 1 хичээлийн хөтөлбөрмэдээллийн технологи 1 хичээлийн хөтөлбөр
мэдээллийн технологи 1 хичээлийн хөтөлбөр
Батбагана Баасанжав
 
өгөгдлийн сангийн системийн үндэс
өгөгдлийн сангийн системийн үндэсөгөгдлийн сангийн системийн үндэс
өгөгдлийн сангийн системийн үндэс
Бямбаа Авирмэд
 
SCRUM арга
SCRUM аргаSCRUM арга
SCRUM арга
Undram J
 
Нягтлан бодох бүртгэлийн үндэс хичээл 11 ШИДС
Нягтлан бодох бүртгэлийн үндэс  хичээл 11 ШИДС Нягтлан бодох бүртгэлийн үндэс  хичээл 11 ШИДС
Нягтлан бодох бүртгэлийн үндэс хичээл 11 ШИДС Chuluun Zulaa
 
давталттай алгоритм
давталттай алгоритмдавталттай алгоритм
давталттай алгоритм
GEnkhjargal
 
Компьютерийн сүлжээ
Компьютерийн сүлжээКомпьютерийн сүлжээ
Компьютерийн сүлжээMunkhtsetseg Myagmar
 
Smallbasic
SmallbasicSmallbasic
компьютерийн техник хангамж
компьютерийн техник хангамжкомпьютерийн техник хангамж
компьютерийн техник хангамжBaaya Badrakh
 

What's hot (20)

U.cs101 алгоритм программчлал-5 zasvar badral(1)
U.cs101   алгоритм программчлал-5 zasvar badral(1)U.cs101   алгоритм программчлал-5 zasvar badral(1)
U.cs101 алгоритм программчлал-5 zasvar badral(1)
 
U.cs101 алгоритм программчлал-10
U.cs101   алгоритм программчлал-10U.cs101   алгоритм программчлал-10
U.cs101 алгоритм программчлал-10
 
Өгөгдлийн бүтэц
Өгөгдлийн бүтэцӨгөгдлийн бүтэц
Өгөгдлийн бүтэц
 
u.cs101 "Алгоритм ба програмчлал" Лекц №2
u.cs101 "Алгоритм ба програмчлал" Лекц №2u.cs101 "Алгоритм ба програмчлал" Лекц №2
u.cs101 "Алгоритм ба програмчлал" Лекц №2
 
дотоод сүлжээний зохион байгуулалт
дотоод сүлжээний зохион байгуулалтдотоод сүлжээний зохион байгуулалт
дотоод сүлжээний зохион байгуулалт
 
C++
C++C++
C++
 
Java lecture5
Java lecture5Java lecture5
Java lecture5
 
тооллын систем
тооллын системтооллын систем
тооллын систем
 
Ood lesson6 class
Ood lesson6 classOod lesson6 class
Ood lesson6 class
 
u.cs101 "Алгоритм ба програмчлал" Лекц №7
u.cs101 "Алгоритм ба програмчлал" Лекц №7u.cs101 "Алгоритм ба програмчлал" Лекц №7
u.cs101 "Алгоритм ба програмчлал" Лекц №7
 
мэдээллийн технологи 1 хичээлийн хөтөлбөр
мэдээллийн технологи 1 хичээлийн хөтөлбөрмэдээллийн технологи 1 хичээлийн хөтөлбөр
мэдээллийн технологи 1 хичээлийн хөтөлбөр
 
өгөгдлийн сангийн системийн үндэс
өгөгдлийн сангийн системийн үндэсөгөгдлийн сангийн системийн үндэс
өгөгдлийн сангийн системийн үндэс
 
дотоод сүлжээ
дотоод сүлжээдотоод сүлжээ
дотоод сүлжээ
 
SCRUM арга
SCRUM аргаSCRUM арга
SCRUM арга
 
массив
массивмассив
массив
 
Нягтлан бодох бүртгэлийн үндэс хичээл 11 ШИДС
Нягтлан бодох бүртгэлийн үндэс  хичээл 11 ШИДС Нягтлан бодох бүртгэлийн үндэс  хичээл 11 ШИДС
Нягтлан бодох бүртгэлийн үндэс хичээл 11 ШИДС
 
давталттай алгоритм
давталттай алгоритмдавталттай алгоритм
давталттай алгоритм
 
Компьютерийн сүлжээ
Компьютерийн сүлжээКомпьютерийн сүлжээ
Компьютерийн сүлжээ
 
Smallbasic
SmallbasicSmallbasic
Smallbasic
 
компьютерийн техник хангамж
компьютерийн техник хангамжкомпьютерийн техник хангамж
компьютерийн техник хангамж
 

Viewers also liked

u.cs101 "Алгоритм ба програмчлал" Лекц №6
u.cs101 "Алгоритм ба програмчлал" Лекц №6u.cs101 "Алгоритм ба програмчлал" Лекц №6
u.cs101 "Алгоритм ба програмчлал" Лекц №6
Khuder Altangerel
 
u.cs101 "Алгоритм ба програмчлал" Лекц №1
u.cs101 "Алгоритм ба програмчлал" Лекц №1u.cs101 "Алгоритм ба програмчлал" Лекц №1
u.cs101 "Алгоритм ба програмчлал" Лекц №1
Khuder Altangerel
 
Hmm Tutorial
Hmm TutorialHmm Tutorial
Hmm Tutorial
jefftang
 
IOI 2016 "Молекул" бодлогын бодолт
IOI 2016 "Молекул" бодлогын бодолтIOI 2016 "Молекул" бодлогын бодолт
IOI 2016 "Молекул" бодлогын бодолт
Khuder Altangerel
 
Lecture4
Lecture4Lecture4
Lecture4orgil
 
давталттай алгоритм
давталттай алгоритмдавталттай алгоритм
давталттай алгоритм
Enkh Gvnj
 
Цалингийн бүртгэлийн систем
Цалингийн бүртгэлийн системЦалингийн бүртгэлийн систем
Цалингийн бүртгэлийн системAltangerel Bilguun
 
Жава хэлний сурах бичиг Java helnii surah bichig Mongol
Жава хэлний сурах бичиг Java helnii surah bichig MongolЖава хэлний сурах бичиг Java helnii surah bichig Mongol
Жава хэлний сурах бичиг Java helnii surah bichig Mongol
Gantulga Dashdondov
 
бөөний төвийн бараа бүртгэлийн систем
бөөний төвийн бараа бүртгэлийн систембөөний төвийн бараа бүртгэлийн систем
бөөний төвийн бараа бүртгэлийн системtreeee1
 
Дэлгүүрийн кассын систем
Дэлгүүрийн кассын системДэлгүүрийн кассын систем
Дэлгүүрийн кассын системAltangerel Bilguun
 
мэдээллийн нууцлалт, хамгаалалт ба хандалт
мэдээллийн нууцлалт, хамгаалалт ба хандалтмэдээллийн нууцлалт, хамгаалалт ба хандалт
мэдээллийн нууцлалт, хамгаалалт ба хандалт
Tsetsenkhuu Otgonbayar
 
Java лекц8
Java лекц8Java лекц8
Java лекц8Enkhee99
 
Java лекц1
Java лекц1Java лекц1
Java лекц1Enkhee99
 
Sw203 Lecture6 Inheritance
Sw203 Lecture6 InheritanceSw203 Lecture6 Inheritance
Sw203 Lecture6 Inheritance
Jargalsaikhan Alyeksandr
 

Viewers also liked (20)

u.cs101 "Алгоритм ба програмчлал" Лекц №6
u.cs101 "Алгоритм ба програмчлал" Лекц №6u.cs101 "Алгоритм ба програмчлал" Лекц №6
u.cs101 "Алгоритм ба програмчлал" Лекц №6
 
u.cs101 "Алгоритм ба програмчлал" Лекц №1
u.cs101 "Алгоритм ба програмчлал" Лекц №1u.cs101 "Алгоритм ба програмчлал" Лекц №1
u.cs101 "Алгоритм ба програмчлал" Лекц №1
 
Hmm Tutorial
Hmm TutorialHmm Tutorial
Hmm Tutorial
 
IOI 2016 "Молекул" бодлогын бодолт
IOI 2016 "Молекул" бодлогын бодолтIOI 2016 "Молекул" бодлогын бодолт
IOI 2016 "Молекул" бодлогын бодолт
 
Java lecture4
Java lecture4Java lecture4
Java lecture4
 
Lecture4
Lecture4Lecture4
Lecture4
 
давталттай алгоритм
давталттай алгоритмдавталттай алгоритм
давталттай алгоритм
 
лекц №6
лекц №6лекц №6
лекц №6
 
Java lecture4
Java lecture4Java lecture4
Java lecture4
 
Цалингийн бүртгэлийн систем
Цалингийн бүртгэлийн системЦалингийн бүртгэлийн систем
Цалингийн бүртгэлийн систем
 
Java lecture3
Java lecture3Java lecture3
Java lecture3
 
Жава хэлний сурах бичиг Java helnii surah bichig Mongol
Жава хэлний сурах бичиг Java helnii surah bichig MongolЖава хэлний сурах бичиг Java helnii surah bichig Mongol
Жава хэлний сурах бичиг Java helnii surah bichig Mongol
 
бөөний төвийн бараа бүртгэлийн систем
бөөний төвийн бараа бүртгэлийн систембөөний төвийн бараа бүртгэлийн систем
бөөний төвийн бараа бүртгэлийн систем
 
Дэлгүүрийн кассын систем
Дэлгүүрийн кассын системДэлгүүрийн кассын систем
Дэлгүүрийн кассын систем
 
мэдээллийн нууцлалт, хамгаалалт ба хандалт
мэдээллийн нууцлалт, хамгаалалт ба хандалтмэдээллийн нууцлалт, хамгаалалт ба хандалт
мэдээллийн нууцлалт, хамгаалалт ба хандалт
 
Java лекц8
Java лекц8Java лекц8
Java лекц8
 
Java лекц1
Java лекц1Java лекц1
Java лекц1
 
Sw203 Lecture6 Inheritance
Sw203 Lecture6 InheritanceSw203 Lecture6 Inheritance
Sw203 Lecture6 Inheritance
 
CS203 Лекц01 Prefeace
CS203 Лекц01  PrefeaceCS203 Лекц01  Prefeace
CS203 Лекц01 Prefeace
 
Diplomnii etsii huvilbar
Diplomnii etsii huvilbarDiplomnii etsii huvilbar
Diplomnii etsii huvilbar
 

More from Khuder Altangerel

Марковын далд загвар
Марковын далд загварМарковын далд загвар
Марковын далд загвар
Khuder Altangerel
 
Lec08 readerwriter
Lec08 readerwriterLec08 readerwriter
Lec08 readerwriter
Khuder Altangerel
 
Lec05 cooperating (1)
Lec05 cooperating (1)Lec05 cooperating (1)
Lec05 cooperating (1)
Khuder Altangerel
 
Lec16 io
Lec16 ioLec16 io
Lec07 exclusion
Lec07 exclusionLec07 exclusion
Lec07 exclusion
Khuder Altangerel
 
Lec15 pagereplace last
Lec15 pagereplace lastLec15 pagereplace last
Lec15 pagereplace last
Khuder Altangerel
 
Lec14 demandpage
Lec14 demandpageLec14 demandpage
Lec14 demandpage
Khuder Altangerel
 
Lec13 cachetlb
Lec13 cachetlbLec13 cachetlb
Lec13 cachetlb
Khuder Altangerel
 
Lec12 translation
Lec12 translationLec12 translation
Lec12 translation
Khuder Altangerel
 
Lec11 protection
Lec11 protectionLec11 protection
Lec11 protection
Khuder Altangerel
 
Lec10 scheduling
Lec10 schedulingLec10 scheduling
Lec10 scheduling
Khuder Altangerel
 
Lec09 deadlock
Lec09 deadlockLec09 deadlock
Lec09 deadlock
Khuder Altangerel
 
Lec06 synchronization
Lec06 synchronizationLec06 synchronization
Lec06 synchronization
Khuder Altangerel
 
Lec04 threads
Lec04 threadsLec04 threads
Lec04 threads
Khuder Altangerel
 
Lec03 concurrency (2)
Lec03 concurrency (2)Lec03 concurrency (2)
Lec03 concurrency (2)
Khuder Altangerel
 
Lec02 structures (2)
Lec02 structures (2)Lec02 structures (2)
Lec02 structures (2)
Khuder Altangerel
 
Lec01 intro (1) (2)
Lec01 intro (1) (2)Lec01 intro (1) (2)
Lec01 intro (1) (2)
Khuder Altangerel
 
МХТ-ийн мэргэжилд шаардагдах гадаад хэлний чадвар
МХТ-ийн мэргэжилд шаардагдах гадаад хэлний чадварМХТ-ийн мэргэжилд шаардагдах гадаад хэлний чадвар
МХТ-ийн мэргэжилд шаардагдах гадаад хэлний чадвар
Khuder Altangerel
 

More from Khuder Altangerel (18)

Марковын далд загвар
Марковын далд загварМарковын далд загвар
Марковын далд загвар
 
Lec08 readerwriter
Lec08 readerwriterLec08 readerwriter
Lec08 readerwriter
 
Lec05 cooperating (1)
Lec05 cooperating (1)Lec05 cooperating (1)
Lec05 cooperating (1)
 
Lec16 io
Lec16 ioLec16 io
Lec16 io
 
Lec07 exclusion
Lec07 exclusionLec07 exclusion
Lec07 exclusion
 
Lec15 pagereplace last
Lec15 pagereplace lastLec15 pagereplace last
Lec15 pagereplace last
 
Lec14 demandpage
Lec14 demandpageLec14 demandpage
Lec14 demandpage
 
Lec13 cachetlb
Lec13 cachetlbLec13 cachetlb
Lec13 cachetlb
 
Lec12 translation
Lec12 translationLec12 translation
Lec12 translation
 
Lec11 protection
Lec11 protectionLec11 protection
Lec11 protection
 
Lec10 scheduling
Lec10 schedulingLec10 scheduling
Lec10 scheduling
 
Lec09 deadlock
Lec09 deadlockLec09 deadlock
Lec09 deadlock
 
Lec06 synchronization
Lec06 synchronizationLec06 synchronization
Lec06 synchronization
 
Lec04 threads
Lec04 threadsLec04 threads
Lec04 threads
 
Lec03 concurrency (2)
Lec03 concurrency (2)Lec03 concurrency (2)
Lec03 concurrency (2)
 
Lec02 structures (2)
Lec02 structures (2)Lec02 structures (2)
Lec02 structures (2)
 
Lec01 intro (1) (2)
Lec01 intro (1) (2)Lec01 intro (1) (2)
Lec01 intro (1) (2)
 
МХТ-ийн мэргэжилд шаардагдах гадаад хэлний чадвар
МХТ-ийн мэргэжилд шаардагдах гадаад хэлний чадварМХТ-ийн мэргэжилд шаардагдах гадаад хэлний чадвар
МХТ-ийн мэргэжилд шаардагдах гадаад хэлний чадвар
 

u.cs101 "Алгоритм ба програмчлал" Лекц №5

  • 2.  Хүснэгт зарлах, анхны утга олгох, хүснэгтийн элементүүдэд хандах  Тэмдэгт төрлийн тогтмол зарлах  Хүснэгтийг функцэд дамжуулах  Хүснэгтийг утгуудын жагсаалтыг хадгалах, эрэмбэлэх, хайхад ашиглах  Олон индекстэй хүснэгт зарлан ашиглах  Дүгнэлт 212/16/2015Vanderbilt university
  • 3.  Хүснэгт ◦ Санах ой дахь дараалсан байрлалууд ◦ Ижил нэр ба төрөл  Элементэд нь хандахын тулд ◦ Хүснэгтийн нэр ◦ Байрлалын дугаар  Хэлбэр: ХүснэгтийнНэр[байрлалын дугаар] ◦ Эхний элемент 0 байрлал дээр байна ◦ c гэсэн нэртэй n ширхэг элементтэй хүснэгт  c[0], c[1], ... c[n-1] 312/16/2015Vanderbilt university
  • 4.  Хүснэгтийн элементүүд нь энгийн хувьсагчидтай адилхан байна c[0] = 3; printf( "%d", c[0] ); ◦ Индекс дээр үйлдэл хийж болно. Хэрэв х нь 3-тай тэнцүү бол  c[5-2],c[3],c[x] бүгд ижил юм  Анхаарах зүйл: ◦ “хүснэгтийн долоо дахь элемент”  хүснэгтийн 6 индекстэй элемент ◦ “хүснэгтийн долоо дугаартай элемент”  хүснэгтийн 7 индекстэй элемент буюу өөрөөр хэлбэл хүснэгт дэх 8- р элемент 412/16/2015Vanderbilt university
  • 6.  Хүснэгтийг зарлахдаа дараах зүйлсийг зааж өгнө ◦ Нэр ◦ Хүснэгтийн төрөл ◦ Элементийн тоо arrayType arrayName[ numberOfElements ]; ◦ Жишээ: int c[10]; float myArray[3284];  Ижил төрлийн хэд хэдэн хүснэгт зарлах ◦ Хэлбэр нь энгийн хувьсагчид зарлахтай ижил ◦ Жишээ: int b[100], x[27]; 612/16/2015Vanderbilt university
  • 7.  Анхны утга олголт int n[5] = { 1, 2, 3, 4, 5 }; ◦ Хэрэв анхны утгууд хангалтгүй бол баруун талд үлдсэн элементүүд тэг утгатай болно int n[5] = { 1 }  Эхний элемент нь нэг, бусад нь тэг болно ◦ Хэт олон анхны утга байвал синтакс алдаа гарна ◦ Си-гийн хүснэгтийн хилийг шалгадаггүй  Хэрэв хэмжээг заагаагүй бол анхны утгуудаар хэмжээг олно ◦ int n[ ] = { 1, 2, 3, 4, 5 }; ◦ 5 ширхэг анхны утга байгаа тул 5 элементтэй хүснэгт болно 712/16/2015Vanderbilt university
  • 12.  Хүснэгт зарлах, анхны утга олгох, хүснэгтийн элементүүдэд хандах  Тэмдэгт төрлийн тогтмол зарлах  Хүснэгтийг функцэд дамжуулах  Хүснэгтийг утгуудын жагсаалтыг хадгалах, эрэмбэлэх, хайхад ашиглах  Олон индекстэй хүснэгт зарлан ашиглах  Дүгнэлт 1212/16/2015Vanderbilt university
  • 20. for давталт шооны нүдний тоо хэдэн удаа буусныг хадгалахад 6 хувьсагч, switch операторын оронд нэг хүснэгт хэрэглэж байна 2012/16/2015Vanderbilt university
  • 22.  Тэмдэгт төрлийн хүснэгт ◦ “first” тэмдэгт мөр нь тэмдэгтүүдийн статик хүснэгт юм ◦ Тэмдэгтэн хүснэгтийг тэмдэгт мөр төрлийн утга хэрэглэн анхны утгыг нь олгож болно char string1[] = "first";  „0‟ гэсэн хоосон тэмдэгт тэмдэгт мөрийн төгсгөлийг заана  string1 нь яг үнэндээ 6 элементтэй  түүнийг доорх байдлаар бичиж болно char string1[] = { 'f', 'i', 'r', 's', 't', '0' }; ◦ Элементүүдэд нь хандаж болно  string1[3] нь „s‟ тэмдэгттэй тэнцүү ◦ Хүснэгтийн нэр нь хүснэгтийн хаяг болох тул scanf функцэд & хэрэглэлгүй бичнэ scanf( "%s", string2 );  Харагдахгүй тэмдэгт гарч ирэх хүртэл тэмдэгтүүдийг уншина  Хүснэгтийн хэмжээнээс хэтэртэл бичиж чадах тул болгоомжтой байх хэрэгтэй 2212/16/2015Vanderbilt university
  • 23. string2 хүснэгт тэмдэгт бүрийн хувьд нэг элемент буюу 14, дээр нь хоосон тэмдэгт 0-г агуулна for давталт нь string1-ийн тэмдэгтүүдийг хооронд нь зайгаар тусгаарлан хэвлэнэ 2312/16/2015Vanderbilt university
  • 25.  Автомат хүснэгт агуулах функц байн байн дуудагдаж байвал хүснэгтийг дахин дахин үүсгэхгүйн тулд статик байдлаар зарлах хэрэгтэй. 2512/16/2015Vanderbilt university
  • 27. static хүснэгт нь staticArrayInit функцийг анх дуудахад ганц удаа л үүсгэгдэнэ 2712/16/2015Vanderbilt university
  • 28. Автомат хүснэгт нь automaticArrayInit функц дуудах бүрд дахин үүснэ 2812/16/2015Vanderbilt university
  • 30.  Хүснэгт зарлах, анхны утга олгох, хүснэгтийн элементүүдэд хандах  Тэмдэгт төрлийн тогтмол зарлах  Хүснэгтийг функцэд дамжуулах  Хүснэгтийг утгуудын жагсаалтыг хадгалах, эрэмбэлэх, хайхад ашиглах  Олон индекстэй хүснэгт зарлан ашиглах  Дүгнэлт 3012/16/2015Vanderbilt university
  • 31.  Хүснэгтийг дамжуулах ◦ Хүснэгтэн аргументийг функцэд дамжуулахын тулд хүснэгтийн нэрийг ямар ч хаалтгүйгээр бичнэ int myArray[ 24 ]; myFunction( myArray, 24 );  Ихэвчлэн хүснэгтийн хэмжээг хамт дамжуулдаг ◦ Хүснэгтийг хаягаар дамжуулдаг ◦ Хүснэгтийн нэр бол эхний элементийн хаяг юм ◦ Функц хүснэгтийг хаана хадгалсныг мэднэ  Санах ой дахь байрлал дээр нь өөрчилнө  Хүснэгтийн элементийг дамжуулах ◦ Утгаар дамжуулах арга хэрэглэнэ ◦ Индекстэй нэрийг (жишээ нь myArray[3]) функцэд дамжуулна 3112/16/2015Vanderbilt university
  • 32.  Функцийн загвар void modifyArray( int b[], int arraySize ); ◦ Загварт параметрийн нэрийг заавал бичих хэрэггүй  int b[]-г int [] гэж бичиж болно  int arraySize-г int гэж бичиж болно 3212/16/2015Vanderbilt university
  • 33.  Тайлбар: %p хувиргах тусгай тэмдэгт нь хаягийг 16-тын тоо хэлбэрээр гаргана 3312/16/2015Vanderbilt university
  • 34. Функцийн загвар нь функц хүснэгт хүлээж авахыг заана a хүснэгтийг modifyArray функц рүү зөвхөн нэрийг нь өгөх замаар дамжуулна 3412/16/2015Vanderbilt university
  • 35. Хүснэгтийн элементийг modifyElement функц руу a[3] – ыг өгч дамжуулна 3512/16/2015Vanderbilt university
  • 37. const үг нь хөрвүүлэгчид хүснэгт өөрчлөгдөхгүй гэдгийг заана Хүснэгтийг өөрчлөх оролдлого бүр хөрвүүлэлтийн алдаанд хүргэнэ 3712/16/2015Vanderbilt university
  • 39.  Хүснэгт зарлах, анхны утга олгох, хүснэгтийн элементүүдэд хандах  Тэмдэгт төрлийн тогтмол зарлах  Хүснэгтийг функцэд дамжуулах  Хүснэгтийг утгуудын жагсаалтыг хадгалах, эрэмбэлэх, хайхад ашиглах  Олон индекстэй хүснэгт зарлан ашиглах  Дүгнэлт 3912/16/2015Vanderbilt university
  • 40.  Өгөгдлийг эрэмбэлэх ◦ Тооцооллын чухал хэрэглээ ◦ Ямар ч байгууллага ямар нэг өгөгдөл эрэмбэлэх ѐстой болдог  Бөмбөлгийн арга (живүүлэх эрэмбэлэлт) ◦ Хүснэгтийг хэд хэдэн удаа уншина ◦ Дараалсан хоѐр элементийг харьцуулна  хэрэв өсөх эрэмбэтэй (эсвэл тэнцүү бол) юу ч хийхгүй  буурах эрэмбэтэй бол элементүүдийг солино ◦ Давтах  Жишээ ◦ анхны: 3 4 2 6 7 ◦ эхний уншилт: 3 2 4 6 7 ◦ хоѐр дахь уншилт: 2 3 4 6 7 ◦ Жижиг элементүүд дээш “бөмбөлөг болж” гарна 4012/16/2015Vanderbilt university
  • 42. Хэрэв ямар нэг хоѐр элемент буруу эрэмбэтэй байвал уг функц байрыг нь солино 4212/16/2015Vanderbilt university
  • 43.  Хүснэгтээс түлхүүр утга хайх  Шугаман хайлт ◦ Энгийн ◦ Хүснэгтийн бүх элементийг түлхүүр утгатай харьцуулна ◦ Жижиг, эрэмбэлэгдээгүй хүснэгтэнд тохиромжтой  Хоѐртын хайлт ◦ Эрэмбэлэгдсэн хүснэгтэнд зориулагдсан ◦ Голын элементийг түлхүүртэй харьцуулна  Хэрэв тэнцүү бол олсон гэж үзнэ  Хэрэв түлхүүр < голынх бол хүснэгтийн эхний хагаст хайх  Хэрэв түлхүүр > голынх бол хүснэгтийн сүүлийн хагаст хайх  Давтах ◦ Маш хурдан; 2n > тооны элементтэй үед дээд тал нь n алхам хийнэ  30 элементтэй хүснэгтэд дээд тал нь 5 алхам хийнэ  25 > 30 учир дээд тал нь 5 алхам 4312/16/2015Vanderbilt university
  • 46. Шугаман хайлтын алгоритм олох хүртлээ хүснэгтийн бүх элементтэй харьцуулна 4612/16/2015Vanderbilt university
  • 49. утга олдсон бол индексийг буцаана утга өндөр бол хүснэгтийн зүүн хагаст хайх утга бага бол хүснэгтийн зүүн хагаст хайх 4912/16/2015Vanderbilt university
  • 53.  Хүснэгт зарлах, анхны утга олгох, хүснэгтийн элементүүдэд хандах  Тэмдэгт төрлийн тогтмол зарлах  Хүснэгтийг функцэд дамжуулах  Хүснэгтийг утгуудын жагсаалтыг хадгалах, эрэмбэлэх, хайхад ашиглах  Олон индекстэй хүснэгт зарлан ашиглах  Дүгнэлт 5312/16/2015Vanderbilt university
  • 54.  Олон индекстэй хүснэгт ◦ Мөр болон баганатай хүснэгт (m x n хүснэгт) ◦ Матрицтай адил: мөрийн дугаар дараа нь баганын дугаарыг заана  Анхны утга олгох int b[ 2 ][ 2 ] = { { 1, 2 }, { 3, 4 } }; ◦ Нэг мөрөнд байх утгуудыг их хаалтанд бүлэглэнэ ◦ Хэрэв элементийн утга дутуу заавал тэр нь тэг утгатай болно int b[ 2 ][ 2 ] = { { 1 }, { 3, 4 } };  Элементэд нь хандах ◦ Эхлээд мөр, дараа нь баганын дугаарыг заана printf( "%d", b[ 0 ][ 1 ] );  a[x, y] гэж бичихгүй, a[x][y] гэж бичнэ 5412/16/2015Vanderbilt university
  • 56. array1 хүснэгтийн хоѐр мөрийг бүтэн зарласан байна array2 болон array3-ын зөвхөн хэсгийнх нь анхны утгыг олгосон байна 5612/16/2015Vanderbilt university
  • 58. Хүснэгтийн мөр бүр нэг оюутны дүнгүүдийг хадгална 5812/16/2015Vanderbilt university
  • 59. average функцэд хүснэгтийн мөрийг дамжуулж байна 5912/16/2015Vanderbilt university
  • 64.  Хүснэгт зарлах, анхны утга олгох, хүснэгтийн элементүүдэд хандах  Тэмдэгт төрлийн тогтмол зарлах  Хүснэгтийг функцэд дамжуулах  Хүснэгтийг утгуудын жагсаалтыг хадгалах, эрэмбэлэх, хайхад ашиглах  Олон индекстэй хүснэгт зарлан ашиглах  Дүгнэлт 6412/16/2015Vanderbilt university
  • 65.  Хүснэгт зарлах ◦ хүснэгтийнТөрөл хүснэгтийнНэр[элементийнТоо];  Тэмдэгт тогтмол ◦ #define SIZE 12 /*энд цэгтэй таслал тавихгүй*/  Хүснэгтийн хэмжээ  Хүснэгтийг функцэд дамжуулах: хаягаар болон утгаар  Хүснэгтийг эрэмбэлэх: бөмбөлөг эрэмбэлэлт (живүүлэх эрэмбэлэлт)  Хүснэгтээс хайх: шугаман ба хоѐртын хайлт  Олон индекстэй хүснэгт 6512/16/2015Vanderbilt university