Скачиваний:
0
Добавлен:
20.09.2026
Размер:
688 Кб
Скачать
☆
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
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