Добавил:
bekan
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:1-semestr / 6-LEKCIYA
.pdf
6-Lekciya. Kóp ólshemli massivler. Statikalıq massivler. Elementlerdi izlew usılı.
Elementler ústinde ámeller.
Jobası:
Kóp ólshemli massivler menen tanısıw
Statikalıq massivler haqqında túsinik
Massiv elementlerin izlew usılların úyreniw
Massiv elementleri ústinde ámellerdi orınlaw
1. Kóp ólshemli massivler
Kóp ólshemli massiv - bul bir neshe ólshemnen turatuǵın massiv. Eń kóp tarqalǵan kóp ólshemli
massiv - eki ólshemli massiv (matrica).
C++ te kóp ólshemli massivler járdeminde bir neshe ólshemdegi maǵlıwmatlardı
shólkemlestirip, tor tárizli dúzilisti payda etiw múmkin. Bir ólshemli massivler sızıqlı bolıp,
elementlerdiń tek bir qatarınan ibarat bolǵan jaǵdayda, al kóp ólshemli massivler matricalar,
kesteler yamasa torlar sıyaqlı quramalıraq maǵlıwmatlar strukturaların kórsetiw ushın kóp
qatarlar hám baǵanalardan (yamasa ólshemlerden) ibarat bola aladı.
EKI ÓLSHEMLI MASSIV
Eki ólshemli massiv túsinigi
Eki ólshemli massiv ideyası - bul C++ programmalastırıwda qollanılatuǵın keń tarqalǵan massiv
túsiniginiń qızıqlı keńeytilgen túri. Bir ólshemliden parqı, eki ólshemli massivler (yamasa 2D
massivler) maǵlıwmatlardı matrica tárizli dúziliste qatarlar hám baǵanalarǵa jaylastıradı. Bul
dinamikalıq qurılma strukturalanǵan maǵlıwmatlardı nátiyjeli basqarıw ushın paydalı qural bolıp
tabıladı.
Sintaksisi
data_type array_name[row_size][column_size];
Bul jerde:
data_type: Bul massivte saqlanajaq maǵlıwmatlar/elementler tipin táriyipleydi, mısalı,
háripler (char), haqıyqıy sanlar (float), pútin sanlar (int) yamasa paydalanıwshı tárepinen
anıqlanǵan tipler.
array_name: Massivińizge at/identifikator beriwińiz kerek. Onı kodıńızda massivke
silteme beriwshi belgi sıpatında qollanıwıńız múmkin.
row_size: Bul 2D massivińizde qansha qatar bar ekenin kórsetedi. Ol tor biyikligine
uqsaydı.
column_size: Bul 2D massivińizde qansha baǵana bar ekenin kórsetedi. Ol tor keńligine
salıstırıwǵa boladı.
Massivtiń ulıwma forması usı ólshemler menen anıqlanadı, nátiyjesinde maǵlıwmatlardı
óz ishine alatuǵın tor tárizli struktura payda boladı.

x[0][0]
x[0][1]
x[0][2]
x[0][3]
x[1][0]
x[1][1]
x[1][2]
x[1][3]
x[2][0]
x[2][1]
x[2][2]
x[2][3]
Mısalı:
int x[3][4];
Bul jerde x - eki ólshemli massiv. Ol eń kóbi menen 12 elementti saqlay aladı.
Biz bul massivti 3 qatardan ibarat bolǵan hám hár bir qatarda 4 baǵana bar bolǵan keste túrinde
kóz aldımızǵa keltiriwimiz múmkin, tómendegidey:
int x[3][4];
x[0][0] den x[2][3] ke shekem bolǵan elementler:
Bul eki ólshemli massiv:
3 qatar (0-qatar, 1-qatar, 2-qatar)
4 baǵana (0-baǵana, 1-baǵana, 2-baǵana, 3-baǵana)
Barlıǵı 12 element (3 x 4 = 12)
Mısal 1: Eki ólshemli massiv
// Barlıq elementlerdi kórsetiw ushın C++ programması
// inicializaciyalanǵan eki ólshemli massivtiń
#include <iostream>
using namespace std;
int main() {
int test[3][2] = {{2, -5},
{4, 0},
{9, 1}};

// ishke salınǵan for ciklin qollanıw
// massivtiń qatarlarına kirisiw
for (int i = 0; i < 3; ++i) {
// massivtiń baǵanalarına kirisiw
for (int j = 0; j < 2; ++j) {
cout << "test[" << i << "][" << j << "] = " << test[i][j] << endl;
}
}
return 0;
}
Kodtı iske túsiriw Nátiyjesi
test[0][0] = 2
test[0][1] = -5
test[1][0] = 4
test[1][1] = 0
test[2][0] = 9
test[2][1] = 1
Joqarıdaǵı mısalda bizler 3 "qatar" hám 2 "baǵana"dan ibarat test dep atalatuǵın eki ólshemli int
massivti inicializaciyaladıq.
Bul jerde bizler massiv elementlerin kórsetiw ushın ishke salınǵan for ciklinen paydalandıq.
· i == 0 den i == 2 ge shekemgi sırtqı cikl massivtiń qatarlarına kirisiw ushın
· j == 0 den j == 1 ge shekemgi ishki cikl massivtiń baǵanalarına kirisiw ushın
Aqırında, hár bir iteraciyada massiv elementlerin basıp shıǵaramız.
Mısal 2: Eki ólshemli massiv ushın kiris alıw
#include <iostream>
using namespace std;
int main() {
int numbers[2][3];
cout << "6 san kiritiń: " << endl;
// Paydalanıwshı kirgiziwin massivte saqlaw
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 3; ++j) {
cin >> numbers[i][j];
}
}
cout << "Sanlar tómendegishe: " << endl;
// Massiv elementlerin basıp shıǵarıw
for (int i = 0; i < 2; ++i) {

#include <iostream> - Bul qatar standart kiris/shıǵıs operaciyaları ushın kerekli kitapxananı qosadı.
using namespace std; - Bul qatar std ataw keńisligin qollanıwdı belgilep, std:: prefiksin qollanıwdan
azat etedi.
int main() { - Bul qatar baǵdarlamanıń bas funkciyasın anıqlaydı.
int numbers[2][3]; - 2x3 ólshemli eki ólshemli pútin san massivi járiyalanadı.
cout << "6 san kiritiń: " << endl; - Paydalanıwshıǵa 6 san kiritiwdi soraydı.
for (int i = 0; i < 2; ++i) { - Sırtqı cikl, massivtiń birinshi ólshemi boyınsha jılısadı.
for (int j = 0; j < 3; ++j) { - Ishki cikl, massivtiń ekinshi ólshemi boyınsha jılısadı.
cin >> numbers[i][j]; - Paydalanıwshıdan san alıp, onı massivtiń [i][j] poziciyasına jazadı.
cout << "Sanlar tómendegishe: " << endl; - Nátiyjelerdı kórsetiw aldınan xabar shıǵaradı.
for (int i = 0; i < 2; ++i) { ... } - Massiv elementlerin basıp shıǵarıw ushın sırtqı cikl.
for (int j = 0; j < 3; ++j) { ... } - Massiv elementlerin basıp shıǵarıw ushın ishki cikl.
cout << "numbers[" << i << "][" << j << "]: " << numbers[i][j] << endl; - Hár bir massiv
elementin onıń indeksleri menen birge basıp shıǵaradı.
return 0; - Baǵdarlamanıń tabıslı juwmaqlanǵanın bildiredi.
for (int j = 0; j < 3; ++j) {
cout << "numbers[" << i << "][" << j << "]: " << numbers[i][j] <<
endl;
}
}
return 0;
}
Nátiyje
6 san kiritiń:
1 2 3 4 5 6
Sanlar tómendegishe:
numbers[0][0]: 1
numbers[0][1]: 2
numbers[0][2]: 3
numbers[1][0]: 4
numbers[1][1]: 5
numbers[1][2]: 6
Bul jerde, biz 2 ólshemli massivtiń kirisin alıw ushın ishke salınǵan for ciklin qollandıq. Barlıq
kirisler alınǵannan keyin, massiv aǵzaların basıp shıǵarıw ushın basqa bir ishke salınǵan for cikli
qollanıldı.
Bunda:
#include <iostream>
using namespace std;
int main() {
// 3x4 massivti jariyalaw
int x[3][4];
// Massiv elementlerin kiritip alıw
cout << "Massiv elementlerin kiritiń (3 qatar, hár qatarda 4
element):\n";
Mısal:3

// Sırtqı cikl - qatarlar ushın (0 den 2 ge shekem)
for(int i = 0; i < 3; i++) {
cout << i + 1 << "-qatar elementlerin kiritiń:\n";
// Ishki cikl - baǵanalar ushın (0 den 3 ke shekem)
for(int j = 0; j < 4; j++) {
cout << "x[" << i << "][" << j << "] = ";
cin >> x[i][j];
}
}
// Massiv elementlerin ekranǵa shıǵarıw
cout << "\nMassiv elementleri:\n";
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 4; j++) {
cout << "x[" << i << "][" << j << "] = " << x[i][j] << "\t";
}
cout << endl; // Hár qatar tamam bolǵanda jana qatarǵa ótiw
}
return 0;
}
Programmanı túsindiriw:
1. #include <iostream> - kiritip/shıǵarıw funkciyaların qosıw
2. using namespace std; - standart namespace ti paydalanıw
3. int x[3][4]; - 3 qatar hám 4 baǵanadan ibarat eki ólshemli massivti jariyalaw
4. Birinshi for cikl:
o i 0 den 2 ge shekem ózgeredi (3 qatar)
o Hár qatar ushın ishki cikl orınlanadı
5. Ekinshi for cikl (ishki):
o j 0 den 3 ke shekem ózgeredi (4 baǵana)
o Hár element ushın paydalanıwshıdan mánisti soraydı
o x[i][j] - i-qatar hám j-baǵanadaǵı elementke mánisti saqlaydı
6. Ekranǵa shıǵarıw:
o Eki cikl járdeminde barlıq elementlerdi ekranǵa shıǵaradı
o Hár element x[i][j] formatında kórsetiledi
o \t - elementler arasına tabulyaciya qoyadı
o endl - hár qatar tamam bolǵanda jana qatarǵa ótedi
Bul programma jumısınıń nátiyjesinde:
Paydalanıwshı 12 element kiritedi (3x4=12)
Kiritilgen elementler matrica (keste) túrinde ekranǵa shıǵarıladı
Hár element óziniń indeksleri menen birge kórsetiledi
Nátiyjesi:
Massiv elementlerin kiritiń (3 qatar, hár qatarda 4 element):
1-qatar elementlerin kiritiń:
x[0][0] = 1
x[0][1] = 2
x[0][2] = 3
x[0][3] = 4
2-qatar elementlerin kiritiń:
x[1][0] = 5
x[1][1] = 6

x[1][2] = 7
x[1][3] = 8
3-qatar elementlerin kiritiń:
x[2][0] = 9
x[2][1] = 10
x[2][2] = 11
x[2][3] = 12
Massiv elementleri:
x[0][0] = 1 x[0][1] = 2 x[0][2] = 3 x[0][3] = 4
x[1][0] = 5 x[1][1] = 6 x[1][2] = 7 x[1][3] = 8
x[2][0] = 9 x[2][1] = 10 x[2][2] = 11 x[2][3] = 12
Programma nátiyjesin túsindiriw:
1. Dáslep programma paydalanıwshıdan massiv elementlerin qatarma-qatar kiritiwdi
soraydı:
o 1-qatar: 1, 2, 3, 4
o 2-qatar: 5, 6, 7, 8
o 3-qatar: 9, 10, 11, 12
2. Keyin programma kiritilgen elementlerdi keste túrinde kórsetedi:
o Hár element x[i][j] formatında kórsetiledi, bunda:
i - qatar nomeri (0 den 2 ge shekem)
j - baǵana nomeri (0 den 3 ke shekem)
o Elementler arasında tabulyaciya bar
o Hár qatar jana qatardan jazıladı
Bul mısalda sız massivtiń quramına qaray hár qıylı sanlar kiritiwińiz múmkin.
ÚSH ÓLSHEMLI MASSIV
Úsh ólshemli massivler de usıǵan uqsas túrde isleydi.
2. Úsh ólshemli massivti inicializaciyalaw
int test[2][3][4] = {3, 4, 2, 3, 0, -3, 9, 11, 23, 12, 23,
2, 13, 4, 56, 3, 5, 9, 3, 5, 5, 1, 4, 9};
Bul úsh ólshemli massivti inicializaciyalawdıń durıs usılı emes. Bul massivti
inicializaciyalawdıń jaqsıraq usılı tómendegishe:
int test[2][3][4] = {
{ {3, 4, 2, 3}, {0, -3, 9, 11}, {23, 12, 23, 2} },
{ {13, 4, 56, 3}, {5, 9, 3, 5}, {5, 1, 4, 9} }
};
Bul úsh ólshemli massivtiń ólshemlerine itibar beriń. Birinshi ólshemniń mánisi 2. Demek,
birinshi ólshemdi quraytuǵın eki element:
1-element = { {3, 4, 2, 3}, {0, -3, 9, 11}, {23, 12, 23, 2} }
2-element = { {13, 4, 56, 3}, {5, 9, 3, 5}, {5, 1, 4, 9} }

Ekinshi ólshemniń mánisi 3. Birinshi ólshemniń hár bir elementi úsh elementten turatuǵınına
itibar beriń:
1-element ushın: {3, 4, 2, 3}, {0, -3, 9, 11} hám {23, 12, 23, 2}
2-element ushın: {13, 4, 56, 3}, {5, 9, 3, 5} hám {5, 1, 4, 9}
Aqırında, ekinshi ólshemniń hár bir elementiniń ishinde tórt int sanı bar:
{3, 4, 2, 3}
{0, -3, 9, 11}
... .. ...
... .. ...
Mısal 4: Úsh ólshemli massiv
Paydalanıwshı kirgiziwin úsh ólshemli massivte saqlaw hám onı kórsetiw ushın C++
programması
#include <iostream>
using namespace std;
int main() {
// Bul massiv 12 elementke shekem saqlay aladı (2x3x2)
int test[2][3][2] = {
{
{1, 2},
{3, 4},
{5, 6}
},
{
{7, 8},
{9, 10},
{11, 12}
}
};
// Mánislerdi tuwrı indeks penen kórsetiw
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 3; ++j) {
for (int k = 0; k < 2; ++k) {
cout << "test[" << i << "][" << j << "][" << k << "] = " << test[i][j][k] <<
endl;
}
}
}
return 0;
}
Nátiyje
test[0][0][0] = 1
test[0][0][1] = 2
test[0][1][0] = 3
test[0][1][1] = 4
test[0][2][0] = 5
test[0][2][1] = 6
test[1][0][0] = 7
test[1][0][1] = 8
test[1][1][0] = 9
test[1][1][1] = 10

#include <iostream> - Bul qatar standart kiris/shıǵıs operaciyaları ushın kerekli kitapxananı qosadı.
using namespace std; - Bul qatar std ataw keńisligin qollanıwdı belgilep, std:: prefiksin qollanıwdan
azat etedi.
int main() { - Bul qatar baǵdarlamanıń bas funkciyasın anıqlaydı.
int test[2][3][2] = { ... }; - Bul qatar 2x3x2 ólshemli úsh ólshemli pútin san massivin járiyalaydı hám
iniciallastıradı. Bul massiv 12 elementke shekem saqlay aladı.
for (int i = 0; i < 2; ++i) { - Bul sırtqı cikl, massivtiń birinshi ólshemi boyınsha jılısadı (0 den 1 ge
shekem).
for (int j = 0; j < 3; ++j) { - Bul ortadaǵı cikl, massivtiń ekinshi ólshemi boyınsha jılısadı (0 den 2 ge
shekem).
for (int k = 0; k < 2; ++k) { - Bul eń ishki cikl, massivtiń úshinshi ólshemi boyınsha jılısadı (0 den 1
ge shekem).
cout << "test[" << i << "][" << j << "][" << k << "] = " << test[i][j][k] << endl; - Bul qatar hár
bir massiv elementin onıń indeksleri menen birge basıp shıǵaradı.
return 0; - Baǵdarlamanıń tabıslı juwmaqlanǵanın bildiredi.
Bul kod úsh ólshemli massivti anıqlaydı, onı baslanǵısh mánisler menen toltıradı, hám keyin hár bir
elementti onıń indeksleri menen birge ekranda kórsetedi.
test[1][2][0] = 11
test[1][2][1] = 12
3 ólshemli massiv elementlerin basıp shıǵarıwdıń tiykarǵı koncepciyası 2 ólshemli massivke
uqsas.
Biraq, 3 ólshemdi manipulyaciya qılıp atırǵanımız sebepli, biz tek 2 emes, al 3 ciklden turatuǵın
ishke salınǵan for ciklin qollanamız:
• sırtqı cikl i == 0 den i == 1 ge shekem massivtiń birinshi ólshemine kiredi
• ortadaǵı cikl j == 0 den j == 2 ge shekem massivtiń ekinshi ólshemine kiredi
• eń ishki cikl k == 0 den k == 1 ge shekem massivtiń úshinshi ólshemine kiredi
Kórip turǵanımızday, massivtiń quramalılıǵı ólshemler sanınıń artıwı menen eksponencial túrde
artadı.
Kodqa táriyip:
Mısalı:
float x[2][4][3];
Bul x massivi eń kóbi menen 24 elementti saqlay aladı.
Massivtegi barlıq elementler sanın onıń ólshemleriniń kóbeymesi arqalı tabıwımız múmkin:
2 x 4 x 3 = 24
#include <iostream>
using namespace std;
int main() {
// Úsh ólshemli massivti jariyalaw hám iniciallastırıw
float x[2][4][3] = {
{ // x[0] - birinshi qatlamdaǵı elementler (i=0)

{1.1, 1.2, 1.3}, // x[0][0] - birinshi qatar (j=0)
{2.1, 2.2, 2.3}, // x[0][1] - ekinshi qatar (j=1)
{3.1, 3.2, 3.3}, // x[0][2] - úshinshi qatar (j=2)
{4.1, 4.2, 4.3} // x[0][3] - tórtinshi qatar (j=3)
},
{ // x[1] - ekinshi qatlamdaǵı elementler (i=1)
{5.1, 5.2, 5.3}, // x[1][0] - birinshi qatar (j=0)
{6.1, 6.2, 6.3}, // x[1][1] - ekinshi qatar (j=1)
{7.1, 7.2, 7.3}, // x[1][2] - úshinshi qatar (j=2)
{8.1, 8.2, 8.3} // x[1][3] - tórtinshi qatar (j=3)
}
};
// Massiv elementlerin shıǵarıw
cout << "Massiv elementleri:\n\n";
// Sırtqı cikl - qatlamlardı aylandıradı (i)
// i = 0 bolǵanda birinshi qatlam, i = 1 bolǵanda ekinshi qatlam
for(int i = 0; i < 2; i++) {
cout << "Qatlam " << i + 1 << ":\n";
// Ortanǵı cikl - qatarlardı aylandıradı (j)
// Hár qatlamda 4 qatar bar (j = 0 den 3 ke shekem)
for(int j = 0; j < 4; j++) {
cout << "Qatar " << j + 1 << ": ";
// Ishki cikl - qatardaǵı elementlerdi aylandıradı (k)
// Hár qatarda 3 element bar (k = 0 dan 2 ge shekem)
for(int k = 0; k < 3; k++) {
// x[i][j][k] - i-qatlamdaǵı, j-qatardaǵı, k-poziciyadaǵı element
cout << x[i][j][k] << " ";
}
cout << endl; // Hár qatardan keyin qatar taslaw
}
cout << endl; // Hár qatlamnan keyin qos qatar taslaw
}
// Massivtiń ulıwma ólshemin esaplaw
int total_size = 2 * 4 * 3; // qatlamlar * qatarlar * elementler
cout << "Massivtiń ulıwma ólshemi: " << total_size << " element" << endl;
return 0;
}
Nátiyje:
Programma tómendegishe nátiyjelerdi shıǵaradı:
Massiv elementleri:
Qatlam 1:
Qatar 1: 1.1 1.2 1.3
Qatar 2: 2.1 2.2 2.3
Qatar 3: 3.1 3.2 3.3
Qatar 4: 4.1 4.2 4.3
Qatlam 2:

Qatar 1: 5.1 5.2 5.3
Qatar 2: 6.1 6.2 6.3
Qatar 3: 7.1 7.2 7.3
Qatar 4: 8.1 8.2 8.3
Massivtiń ulıwma ólshemi: 24 element
Endi bul nátiyjelerde neler kórsetilgenin tómende keltiremiz:
Qatlam 1 (i=0):
1. Qatar 1 (j=0): 1.1 1.2 1.3 (k=0,1,2)
2. Qatar 2 (j=1): 2.1 2.2 2.3 (k=0,1,2)
3. Qatar 3 (j=2): 3.1 3.2 3.3 (k=0,1,2)
4. Qatar 4 (j=3): 4.1 4.2 4.3 (k=0,1,2)
Qatlam 2 (i=1):
1. Qatar 1 (j=0): 5.1 5.2 5.3 (k=0,1,2)
2. Qatar 2 (j=1): 6.1 6.2 6.3 (k=0,1,2)
3. Qatar 3 (j=2): 7.1 7.2 7.3 (k=0,1,2)
4. Qatar 4 (j=3): 8.1 8.2 8.3 (k=0,1,2)
Elementlerge qatınasıw:
x[0][0][0] = 1.1 (1-qatlam, 1-qatar, 1-element)
x[0][0][1] = 1.2 (1-qatlam, 1-qatar, 2-element)
x[0][0][2] = 1.3 (1-qatlam, 1-qatar, 3-element)
x[0][1][0] = 2.1 (1-qatlam, 2-qatar, 1-element) Hám solay dawam etedi...
Ulıwma ólshem:
Qatlamlar sanı: 2
Hár qatlamdaǵı qatarlar sanı: 4
Hár qatardaǵı elementler sanı: 3
Jámi elementler: 2 * 4 * 3 = 24
Usılay etip, bizdiń úsh ólshemli massiv 24 elementti óz ishine aladı hám olardıń hár biri
x[i][j][k] formasında indeksler arqalı qatınasa alamız.
2. Statikalıq massivler
Statikalıq massivler - ólshemi kompilaciya waqtında belgilengen massivler. Olardıń ólshemin
programma orınlanıw processinde ózgertiw múmkin emes.
const int SIZE = 5;
int arr[SIZE]; // Statikalıq massiv
Statikalıq massivler mısalı
Соседние файлы в папке 1-semestr
