SlideShare ist ein Scribd-Unternehmen logo
1 von 65
Лекц №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

Weitere ähnliche Inhalte

Was ist angesagt?

Давталттай алгоритмын бодлогууд
Давталттай алгоритмын бодлогуудДавталттай алгоритмын бодлогууд
Давталттай алгоритмын бодлогуудБаярсайхан Л
 
Урвуу матриц
Урвуу матрицУрвуу матриц
Урвуу матрицBolorma Bolor
 
U.cs101 алгоритм программчлал-2
U.cs101   алгоритм программчлал-2U.cs101   алгоритм программчлал-2
U.cs101 алгоритм программчлал-2Badral Khurelbaatar
 
Lekts02
Lekts02Lekts02
Lekts02Ankhaa
 
u.cs101 "Алгоритм ба програмчлал" Лекц №2
u.cs101 "Алгоритм ба програмчлал" Лекц №2u.cs101 "Алгоритм ба програмчлал" Лекц №2
u.cs101 "Алгоритм ба програмчлал" Лекц №2Khuder Altangerel
 
магадлал, тархалт
магадлал, тархалтмагадлал, тархалт
магадлал, тархалтzorigoo.sph
 
U.cs101 алгоритм программчлал-12
U.cs101   алгоритм программчлал-12U.cs101   алгоритм программчлал-12
U.cs101 алгоритм программчлал-12Badral Khurelbaatar
 
Lab3 it101
Lab3 it101Lab3 it101
Lab3 it101BPurev
 
төвөөс зугтах хүч ба төвд тэмүүлэх хүч№
төвөөс зугтах хүч ба төвд тэмүүлэх хүч№төвөөс зугтах хүч ба төвд тэмүүлэх хүч№
төвөөс зугтах хүч ба төвд тэмүүлэх хүч№Burotino Iosifob
 
давталттай алгоритм
давталттай алгоритмдавталттай алгоритм
давталттай алгоритмEnkh Gvnj
 
9.эрэмбэлэлтийн аргууд
9.эрэмбэлэлтийн аргууд9.эрэмбэлэлтийн аргууд
9.эрэмбэлэлтийн аргуудBayalagmaa Davaanyam
 
олонлог, логикийн элементүүд
олонлог, логикийн элементүүдолонлог, логикийн элементүүд
олонлог, логикийн элементүүдShaagaa Shs
 
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
 

Was ist angesagt? (20)

Давталттай алгоритмын бодлогууд
Давталттай алгоритмын бодлогуудДавталттай алгоритмын бодлогууд
Давталттай алгоритмын бодлогууд
 
Урвуу матриц
Урвуу матрицУрвуу матриц
Урвуу матриц
 
U.cs101 алгоритм программчлал-2
U.cs101   алгоритм программчлал-2U.cs101   алгоритм программчлал-2
U.cs101 алгоритм программчлал-2
 
Lecture 3
Lecture 3Lecture 3
Lecture 3
 
Lekts02
Lekts02Lekts02
Lekts02
 
u.cs101 "Алгоритм ба програмчлал" Лекц №2
u.cs101 "Алгоритм ба програмчлал" Лекц №2u.cs101 "Алгоритм ба програмчлал" Лекц №2
u.cs101 "Алгоритм ба програмчлал" Лекц №2
 
массив
массивмассив
массив
 
Лекц 9(Заагч)
Лекц 9(Заагч)Лекц 9(Заагч)
Лекц 9(Заагч)
 
магадлал, тархалт
магадлал, тархалтмагадлал, тархалт
магадлал, тархалт
 
Ediin zasgiin matematic hicheeliin lekts
Ediin zasgiin matematic hicheeliin lektsEdiin zasgiin matematic hicheeliin lekts
Ediin zasgiin matematic hicheeliin lekts
 
U.cs101 алгоритм программчлал-12
U.cs101   алгоритм программчлал-12U.cs101   алгоритм программчлал-12
U.cs101 алгоритм программчлал-12
 
2
22
2
 
Lab3 it101
Lab3 it101Lab3 it101
Lab3 it101
 
семинар2
семинар2семинар2
семинар2
 
төвөөс зугтах хүч ба төвд тэмүүлэх хүч№
төвөөс зугтах хүч ба төвд тэмүүлэх хүч№төвөөс зугтах хүч ба төвд тэмүүлэх хүч№
төвөөс зугтах хүч ба төвд тэмүүлэх хүч№
 
давталттай алгоритм
давталттай алгоритмдавталттай алгоритм
давталттай алгоритм
 
Math101 Lecture4
Math101 Lecture4Math101 Lecture4
Math101 Lecture4
 
9.эрэмбэлэлтийн аргууд
9.эрэмбэлэлтийн аргууд9.эрэмбэлэлтийн аргууд
9.эрэмбэлэлтийн аргууд
 
олонлог, логикийн элементүүд
олонлог, логикийн элементүүдолонлог, логикийн элементүүд
олонлог, логикийн элементүүд
 
U.cs101 алгоритм программчлал-5 zasvar badral(1)
U.cs101   алгоритм программчлал-5 zasvar badral(1)U.cs101   алгоритм программчлал-5 zasvar badral(1)
U.cs101 алгоритм программчлал-5 zasvar badral(1)
 

Andere mochten auch

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

Andere mochten auch (20)

u.cs101 "Алгоритм ба програмчлал" Лекц №3
u.cs101 "Алгоритм ба програмчлал" Лекц №3u.cs101 "Алгоритм ба програмчлал" Лекц №3
u.cs101 "Алгоритм ба програмчлал" Лекц №3
 
u.cs101 "Алгоритм ба програмчлал" Лекц №6
u.cs101 "Алгоритм ба програмчлал" Лекц №6u.cs101 "Алгоритм ба програмчлал" Лекц №6
u.cs101 "Алгоритм ба програмчлал" Лекц №6
 
u.cs101 "Алгоритм ба програмчлал" Лекц №7
u.cs101 "Алгоритм ба програмчлал" Лекц №7u.cs101 "Алгоритм ба програмчлал" Лекц №7
u.cs101 "Алгоритм ба програмчлал" Лекц №7
 
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 lecture5
Java lecture5Java lecture5
Java lecture5
 
Цалингийн бүртгэлийн систем
Цалингийн бүртгэлийн системЦалингийн бүртгэлийн систем
Цалингийн бүртгэлийн систем
 
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
 

Mehr von 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