Лекц-8soyolerdem.edu.mn/online/wp-content/uploads/2017/03/8...2017/03/08  · Лекц-8...

Post on 10-Aug-2020

5 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Лекц-8

Багш: Д.Саулегүл

• Одоог хүртэл бид дандаа энгийнөгөгдлүүдтэй ажиллаж ирсэн билээ.Энгийн өгөгдөл гэдэг нь нэр бүхий ганцөгөгдөл юм. Ө.х. нэг нэрэнд нэг л өгөгдөлхаргалзана гэсэн үг.

• Энгийн өгөгдөл нь өгөгдлийн үндсэнтөрлүүдийн (char, unsigned char, short,unsigned short, int, unsigned int, long int,unsigned long, float, double, long doubleг.м.) аль нэгт хамаарна.

•Массив гэж юу бэ?

• Массив (array) гэдэг нь нэгэн ижил

төрлийн, олон тооны энгийн өгөгдлийн

нэгдэл юм. Массив нь нэртэй (name of

array) байна. Ө.х. массивын хувьд, нэг

нэрэнд нэгээс олон адил төрлийн

энгийн өгөгдөл харгалздаг ажээ. Энэ

утгаараа нийлмэл өгөгдөл болно.

• Массивын бүрдэлд орогч тухайн нэг өгөгдлийг массивын элемент гэнэ. Элементүүд бүгд дугаарлагдсан байна. Элементийн дугаарыг индекс (index) гэнэ. Индекс нь 0-ээс эхлэн тоологдоно.

• Массив нь ямар ач

холбогдолтой вэ?

• Их хэмжээний мэдээлэл, төрөл бүрийн статистик өгөгдлийг боловсруулах програмд массив ашиглах нь тун тохиромжтой байдаг.

• Массив нь математикийн нэгэн чухал ойлголт болох матрицыг програмчлалын хэлэнд илэрхийлдгээрээ онцгой ач холбогдолтой юм.

• бүхэл төрлийн массив (элементийн төрөл нь char, unsigned char, short, unsigned short, int, unsigned int, long int, unsigned long г.м.-ийн аль нэг)

• бодит төрлийн массив (элементийн төрөл нь float, double, long double г.м.-ийн аль нэг)

гэсэн төрлүүд байх нь ээ.

• Массивын хэмжээс гэдэг нь арай өөр ойлголт. Логикийн хувьд массив нь шулуун, эсвэл “тэгш өнцөгт”, эсвэл “параллелипипед” гэх мэт геометрийн ямар төсөөллийг бүрдүүлж буйгаас нь хамааруулаад нэг хэмжээст (1D - one dimensional), хоёр хэмжээст (2D - two dimensional), гурван хэмжээст (3D - three dimensional) массив гэх мэтээр нэрлэдэг. Гурваас олон хэмжээстэй (multidimensional) ч байж болно. Хоёр хэмжээст массивыгмассивын массив (array of array), гурван хэмжээстийг массивын массивын массив (array of array of array) гэх мэтчилэн үгээр илэрхийлж болно.

• Массивийг зарлахын тулд хувьсагчийн нэрний ард []-хос хаалт бичиж өгнө. Үүнд тухайн массивын элементийн тоог бичиж өгнө.

• Өөрөөр хэлбэл массивын элемент бүр тодорхой дугаартай байна. Нэг хэмжээст буюу шугаман массивыг дараах байдлаар зарлаж өгнө.

• Бичигдэх хэлбэр: <төрөл> <нэр> [<индекс>] int a[5];

int b[100];

• Нэг хэмжээст массив нь санах ойд дараалсан байрлалтай байна.

• int a[5] массив санах ойд байгаа нь

• a[0], a[1], a[2]…

• if sizeof үйлдлийг ашиглан массивын хэмжээг санах ой болгож болно.

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

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

• Ингэж зарласан нь массивийн элементүүдэд дараах байдлаар утга олгосонтой ижил юм.

• Си-д 0-ээс эхлэн дугаарладаг.

• int a[5] = {1,2,3,4,5}; //Эхний 5 элементэд утга олгох

• int b[20] = {0,1,2…9};//Эхний 10 элементэд утга олгож байна. Бусад элементүүд нь 0 утгатай байна

• Массивийг зарлахдаа хос хаалтанд үргэлж элементийн тоог бичих ёстой. Харин массивын анхны утга олгож зарлахдаа л тоон бичихгүй байж болно.

• int ages[5] = {5,27,40,65,92}; //Зөв

• Хэрэв массивийн бүх элементийг 0-ээр дүүргэхийг хүсвэл дараах бичлэгийг ашиглана.

• float a[100] = {0,0};//Бүх элементийг олох

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

• x=утга [3] a[i]; printf(“3-р элемент:%3”, d[3]);

• массивын индекс бол бүхэл тоон төрлийн утга буцаадаг илэрхийлэл байдаг.

• Массивийн элементийг хэрэглэх хувьсагч ашиглах хэлбэртэй ижил учир элементүүдийг гараас уншихдаа дараах байдлаар уншина.

• scanf(“%d”, &a[1]);

• Массивийн элементийг хэвлэхдээ дараахбайдлаар хэвлэнэ.

• printf(“%d”,a[0]);

• printf(“%d”,a[1]);

• Массивийн бүх элементүүдийг хэвлэхдээ циклашиглах нь тохиромжтой.

• int a[10];

• for(i=0;i<10,i++)

• printf(“a[%d]=%d\n”,I,a[i]);

• Тэгш өнцөгт массив дараах хэлбэрээр зарлана.

”төрөл” ” массив нэр” [элементийн тоо1] [элементийн тоо2]

- ”төрөл”- массивын элементүүдийн тоон төрөл

- ” массив нэр”- массивыг праграмд төлөөлөх иденфикатор

- [элементийн тоо1]- массивын мөрийн элементийн тоог заана.

- [элементийн тоо2]- массивын баганын элементийн тоог заана.

int a[100][100];

float f[5][6];

char c[12][3];

double z [4] [6] = { {1}, {2}, {3}, {4} };

• int x [5] [4] = { {1}, {2, 3}, {4, 5, 6}, {7, 8, 9, 10} };

• Зургаар дүрсэл

• const unsigned char a [5] = { 23, 45, 8, 128, 2 };

• const float values [6] = { 0.5, 2.1, 9.81, 4.5, 560.4, 7.0 };

• const char letters [7] = {‘p’, ‘h’, ‘y’, ‘s’, ‘i’, ‘c’, ‘s’ };

2D тогтмол массив зарлаж буй жишээ:

• const unsigned char z [3] [5] = { { 11, 12, 13, 14, 15 }, { 21, 22, 23, 24, 25 }, {31, 32, 33, 34, 35 } };

Циклийн тоолуур 0-9 утгыг авах бөгөөд scanfфункц нь a[0]…a[9] элементийн утгыг гараас уншина.

int a[10],i;for(i=0; i<10; i++){printf(“a[%d]=”,i);scanf(“%d”, &a[i]);}

#include "stdio.h"

#include "stdlib.h"

int i,n,s;

int a[100];

int main()

{

scanf("%d",&n);

for(i=0;i

{

printf("a[%d]=",i);

scanf("%d",&a[i]);

}

for(i=0;i

system("pause");

return 0;

}

Input – Enter 5 elements in the array –23 45 32 25 45

Output – Elements in the array are –Element stored at a[0]-23Element stored at a[0]-45Element stored at a[0]-32Element stored at a[0]-25Element stored at a[0]-45

#include <stdio.h> int main(int argc, char **argv) { int i, j, k; int arr[5][3]; int *arr2 = (int*)arr; for (k=0; k<15; k++) { arr2[k] = k; printf("arr[%d] = %2d\n", k, arr2[k]); } for (i=0; i<5; i++) {for (j=0; j< 3; j++) { printf("arr2[%d][%d] = %2d\n", i, j ,arr[i][j]); } } }

top related