logo

Murakkab turlar massivlar, bir o‘lchovli massivlarni dasturlash tilida ifodalanishi asosida dastur yaratish

Yuklangan vaqt:

08.08.2023

Ko'chirishlar soni:

0

Hajmi:

208.64453125 KB
Murakkab turlar massivlar, bir o‘lchovli massivlarni dasturlash tilida
ifodalanishi asosida dastur yaratish
Reja. 
1. Massiv haqida tushuncha va uning qo’llanish holatlari
2. Bir o’lchamli massivlar va ularni e’lon qilish
3. Massivlardan foydalanish va initsializatsiyalash
  Xotirada   ketm a - ke t   (re g ulyar)   joylashgan   bir   xil   turdagi
qiymatlarga  m a s s iv   deyi l adi.
Odatda   mas s ivlarga   zarura t ,   katta   h ajmdagi,   lekin   cheklangan
miqdordagi   va   tartibla n gan   qiymatlarni   qayta   ishlash   b i lan   bo g’ liq
masalalarni   yechishda   yuzaga   keladi.   F a r az   qila y lik,   talabalar
guruhining   reyting   ballari   bilan   ish l ash   masala s i   qo’yilgan.   Unda
guruhning   o’rtacha   rey t ingini   aniqlash,   rey t inglarni   kamayishi bo’yicha
tartiblash,   konkret   talabaning   reytingi   haqida   ma’l u mot berish   va   boshqa
m a sa l a   os t ilarini   yech i sh   zarur   bo’lsi n .   Qa y d   etilg a n   masalalarni   yechish
uchun   beril g anlarning   (reytin g larnin g )   tartib-lang a n   ketma - ket l igi   zar u r
bo’ladi.   B u   yerda   t artiblang a nlik   ma’n o si   shundaki,   ketma-ketlikning   har
b i r   qiymati   o’z   o’rniga   ega   bo’ladi (birinchi   talabaning   reytingi   massivda
b irinchi   o’rinda,   ikkinchi   talabaniki   -   i k k i nchi   o’rinda   va   hakoza).
Berilga n lar   ketma-ket-ligini   ik k i   xil   usulda   hosil   qilish   mumkin.   Bir i nchi
yo’l   -   har   bir   reyting   uchun   alohida   o’zgaruvchi   aniqlash:   Reyting1,
…,Reyt i ngN.   Lekin,   guruhdagi   talabalar   soni   ye t arlicha   katta   bo’l g anda,   bu
o’zgar u v-chilar   qatnashgan   programmani   tuzish   katta   qiyinchiliklarni
yu z aga keltiradi.   Ikkinchi   yo’l   -   berilg a nlar   ketma-ke t lig i ni   yagona   n om
bilan   aniqlab,   u n ing   qiymatla r iga   murojaatni,   shu   qiymatlar n ing   ket m a-
ketlikda   joylashgan   o’rnining   nomeri   (i n de k si)   orqali   ama l ga   oshirishdir.
Re y t inglar   ketma-ketligini   Reyting   de b   nomlab,   unda g i   qiymatlariga
Reyt i ng
1 ,…,Reyting
N   ko’rinishida   murojaat   qil i sh   mumkin.   Odatda
berilganl a rning   bunday   k o’rini sh iga   massivlar   deyiladi.   Massivlarni
matematikadagi   sonlar   vektoriga   o’xshatish mumkin,   chunki   vektor   h am
o’z i ning   individual   nom i ga   ega   va   u   fiksirla n gan   miqdordagi   bir
tur d agi   qiymatlardan   -   son l ardan iboratdir.
Demak,   mas s iv   -   b u   fiksi r langan   miqdord a gi   ayr i m   qiymatlarning
(mas s iv   elementl a rinin g )   tartibla n gan   majmuasidir.   Ba r cha elementlar   bir x il   turda   bo’l i shi   kerak   va   bu   tur   ele me nt   turi   yoki massiv   uchun   t a ya nch
tur   deb   nomlanadi.   Yu qoridagi   keltirilgan   misolda   Reyti n g   -   haqiqiy
turdagi   vektor   deb nomlanadi.
Programmada   i sh latiladigan   har   bir   konkret   ma s siv   o’zining
individual   n o m iga   ega   bo’ l ishi   kerak.   Bu   n o mni   t o’liq   o’ zgaruvchi
deyiladi,   chunki   uni n g   qiymati   ma s sivn i ng   o’ z i   bo’ladi.   Massivning har   bir
elementi   massiv   nomi,   hamda   kva d rat   qav s ga   olingan   va   element
selektori   deb   nomlanuvchi   indeksni   ko’rsatish   orqali   oshkor   ravishda
belgilanadi. Murojaat sintaksisi:
<massiv n o mi >[<i nde ks>]
Bu   ko’rinishga   xususiy   o’ zgaruvchi   deyiladi,   chunki   uning   qiymati   mas-
sivni n g   alohida   elementidir.   Bizning   misolda   Reyti n g   massi v ining   alohida
komponentalariga   Reyting[1],…,Reyting[N]   x ususiy   o’zg a ruv-chilar   orqali
murojaat   qi l ish   mumk i n.   Boshqacha   bu   o’zgaruvchilar   indeksli
o’zgaruvchilar  deyiladi.
Massiv   indeksi   sifatida   butun   son   qo’llanilad i .   Umuman olganda
indeks   sifatida   butun   son   qiymatini   qabul   qil a dig a n   ixtiyoriy   ifoda
i sh latil i shi   mumkin   va   uning   qiymati   massiv   elementi   nomerini
ani q laydi.   Ifoda   sifatida   o’zgaru v chi   ham   olinishi   mumkinki,
o’zgaruvchining   qiymati   o’zgarishi   bilan   murojaat   qilinayotgan   massiv
elementi n i   aniqlovchi   indeks   ham   o’zgarad i .   Shunday   qil i b,
programmadagi   bitta   indeksli   o’zgar u vchi   orqali   massivning   barcha
ele me ntla r ini   belgilash   (aniqlash)   mumkin   bo’ladi.   Masalan,
Reyting[i]   o’zgar u vchisi   orqali   i   o’zgaruvch i ning   qiymatiga   bog’l i q
ravishda   Reyting   massivining   ixtiyoriy   elementiga murojaat qilish mavjud.
Umuman olganda massiv quyidagi xususiyatlari keltirilgan.
 Massiv - bu  elementlar  to'plamidir.  Massivdagi barcha elementlar bir xil turda bo’ladi.
 Bunday to'plam to'liq to'plamni tashkil qiladi.
C++   da   massivlar   ma'lum   turdagi   ma'lumotlar   elementlarini   xotirada
ketma-ketlikda saqlashga imkon beradi.
Massivlarning   ishlatilish   sababi.   Siz   dasturni   yozyapsiz,   unda
foydalanuvchi   beshta   butun   sonni   kiritishi   va   ularni   ekranga   chiqarishi
mumkin.   Ushbu   vaziyatni   hal   qilishning   usullaridan   biri   dasturda   beshta
alohida   butun   o'zgaruvchini   e'lon   qilish   va   ularda   ko'rsatilgan   qiymatlarni
saqlashdir. Bunday e’lon qilish quyidagicha bo’lishi mumkin:
int firstNumber = 0;
int secondNumber = 0;
int thirdNuinber = 0;
int fourthNumber = 0;
int fifthNumber = 0;
Ammo   agar   foydalanuvchi  500   va   undan   ortiq  sonlarni  saqlashi   va   aks
ettirishi   kerak   bo'lsa,   u   holda   yuqoridagi   tizim   yordamida   500   ta   shunday
butun o'zgaruvchini e'lon qilishi kerak edi. Buni amalga oshirish uchun ko'p
mehnat   va   sabr-toqat   kerak.   Agar   foydalanuvchi   5   o'rniga   500   000   butun
sonni   so'rasa   nima   bo'ladi?   Har   biri   nolga   tenglashtiriladigan   beshta   butun
sonli qatorni e'lon qilish to'g'riroq:
int myNumbers[5] = {0};
Shunday   qilib,   agar   500000   ta   butun   sonni   berishni   so'rashgan   bo'lsa,
unda massivni muammosiz oshirish mumkin: int manyNumbers[500000] = {0};
Besh belgidan iborat massivni quyidagicha aniqlash mumkin:
char myCharacters[5];
Bunday   massivlar   statik  massivlar   deb   ataladi,   chunki   ular   tarkibidagi
elementlarning soni, shuningdek ularga ajratilgan xotira hajmi kompilyatsiya
vaqtida   o'zgarmaydi.   Dinamik   massivlar   haqida   kursimizning   keyingi
mavzularida tanishamiz. 
Statik massivlarni e'lon qilish va initsializatsiyalash.   Yuqoridagi kod
satrlarida biz 0 qiymat bilan initsializatsiyalangan beshta int elementni (ya'ni
butun   sonlarni)   o'z   ichiga   olgan   myNumbers   deb   nomlangan   massivini
e'lon   qildik.   Shunday   qilib,   C++   da   massivni   e'lon   qilish   uchun   sintaksis
quyidagicha:
element_tipi  Massiv_nomi [Elementlar_miqdori] = 
{Boshlang’ich_qiymatlar-majburiy emas}
Massivni   e'lon   qilish   bilan   bir   qatorda   shu   zahoti   uning   barcha
elementlari initsializatsiyalash mumkin. Shunday qilib, beshta butun sonli
qatorni besh xil butun sonli qiymatlar bilan initsializatsiyalash mumkin:
int myNumbers[5] = {34, 56, -21, 5002, 365};
Massivning   barcha   elementlari   nol   bo’lishi   ham   mumkin   (standart
qiymat kompilyator tomonidan taqdim etiladi): int myNumbers[5] = {0}; 
Yuqoridagi   qator   barcha   elementlarga   nol   qiymatni   beradi.
Shuningdek,   qator   elementlarining   faqat   bir   qismini   initsializatsiyalash
mumkin:
int myNumbers[5] = {34, 56}; 
Ushbu holatda dastlabki ikkita elementga 34 va 56 qiymatlari beriladi.
Boshqa elementlar esa nolga tenglashtiriladi.
Massivning uzunligini (ya'ni undagi elementlarning sonini belgilash)
konstanta qilib belgilashva massivni belgilashda foydalanish mumkin:
const int ARRAY_LENGTH = 5;
int myNumbers[ARRAY_LENGTH] = {34, 56, -21, 5002, 365};
Bu,   masalan,   massivning   uzunligini   bir   nechta   joylarda,   masalan,
massivning barcha elementlarini aylanib chiqish  va undan foydalanish zarur
bo'lganda   foydalidir.   Bunday   holda,   qator   uzunligini   o'zgartirganda,   faqat
const int deb e'lon qilingan bitta qiymatni tuzatish kifoya qiladi.
Agar massivdagi elementlarning boshlang'ich soni noma'lum bo'lsa, uni
chiqarib tashlash mumkin:
int myNumbers[] = {2017, 2052, -525};
Y uqoridagi   k od   qiy mat lari   2017,   2052   v a   -525   bo'lgan
ucht a but un sonli massiv ni y arat adi. Qanday qilib ma'lumotlar massivda saqlanadi
Shkafdagi   yonma-yon   qilib   joylashtirilgan   kitoblarni   ko'rib   chiqaylik.
Bu bir o'lchovli massivning misoli, chunki u faqat bitta o'lchamda, javondagi
kitoblar   soni   bilan   ifodalanadi.   Har   bir   kitob   massivning   elementi   bo'lib,
javon   ushbu   kitoblar   to'plamini   saqlash   uchun   ajratilgan   xotira   maydoniga
o'xshaydi (1-rasm).
 
1-rasm. Kitob javonidagi kitoblar: bir o’lchamli massiv.
Bu   yerda   hech   qanday   xato   yo'q,   biz   kitoblarni   noldan   raqamlashni
boshlaymiz - keyinroq bilib olganingizdek, indekslar C++ da raqamlangan. 1-
rasmda ko'rsatilgan beshta butun sonni o'z ichiga olgan myNumbers massivi.
2-rasmda keltirilgan tokchadagi beshta kitobga juda o'xshaydi.   2-rasm. MyNumbers massivida beshta butun sonni yozish
Shuni   esda   tutish   lozimki,   massiv   egallagan   xotira   maydoni   massivda
saqlanadigan   ma'lumotlar   turi,   bu   holda   int   turi   bilan   belgilanadigan   teng
o'lchamdagi beshta  blokdan iborat. Oldingi darslarda butun sonli  turlarining
hajmini   ko'rib   chiqqan   edik.   Shunday   qilib,   myNumbers   massivi   uchun
kompilyator tomonidan ajratilgan xotira hajmi sizeof (int) * 5 baytni tashkil
qiladi.   Umuman   olganda,   kompilyator   tomonidan   massiv   uchun   ajratilgan
baytdagi xotira miqdori
massiv baytlari = sizeof {Element turi) * Elementlar soni
orqali aniqlanishi mumkin.
Massivda   saqlangan   ma'lumotlarga   kirish.   Massiv   elementlariga
murojaat   qilish   uchun   indekslardan   (index)   yoki   massivdagi   element
raqamidan   foydalanishingiz   mumkin.   Massivning   birinchi   elementi   0-
indeksga   ega.   Masalan,   myNumbers   massivida   saqlanadigan   birinchi   butun
sonli   qiymatga   myNumbers[0] ,  ikkinchisiga   myNumbers  [1]   va   xuddi   shu
tartibda   qolgan   qiymatlarga   murojaat   qilish   mumkin.   Massivning   beshinchi sizeof(int)
myNumbers uchun ajratilgan 
xotira Xotira34	
56	-21	
5002	
365 elementi   myNumbers[4] .   Boshqacha   qilib   aytganda,   massivdagi   oxirgi
elementning indeksi har doim uning uzunligidan bitta kam bo'ladi.
C++   kompilyatori   indeksning   massivning   aslida   belgilangan
chegaralarida   ekanligini   tekshirmaydi.   Siz   faqat   10   ta   elementni   o'z   ichiga
olgan   qatorda   1001   indeksidagi   elementni   tanlashga   urinib   ko'rishingiz   va
shu   bilan   dasturingizning   xavfsizligi   va   barqarorligiga   zarar   yetkazishingiz
mumkin.   Massivdan   tashqaridagi   elementlarga   murojaatlarni   oldini   olish
faqat dasturchining eng muhim vazifasidir.
Undan tashqaridagi massivga kirish natijasini oldindan aytib bo'lmaydi.
Qoida   tariqasida,   bunday   chaqiruv   dasturning   g'ayritabiiy   bekor   qilinishiga
olib keladi1. Bunga har qanday yo'l bilan yo'l qo'ymaslik kerak.
Quyidagi   misolda   butun  sonlar  massivini   e'lon  qilishni   namoyish   etadi,
uning   elementlarini   butun   qiymatlar   bilan   initsializatsiya   qiladi   va   ularga
ekranda ko'rsatish uchun kirish imkoniyatini beradi.
#include <iostream>
using namespace std;
int main()
{
     int myNumbers[5] = {34, 56, -21, 5002, 365};
     cout << "0-indeksli element: " << myNumbers[0] << endl;
     cout << "1-indeksli element: " << myNumbers[1] << endl ;
     cout << "2-indeksli element: " << myNumbers[2] << endl;
     cout << "3-indeksli element: " << myNumbers[3] << endl;
     cout << "4-indeksli element: " << myNumbers[4] << endl;  return 0;
}
Odatda   bunday   tartibda   massivlar   bilan   ishlanmaydi.   Massiv   indekslari
bilan ishlash uchun sikl operatorlaridan foydalanish lozim. Quyidagi misolda
for   sikli   yordamida   massivni   to’ldirish   va   elementlarini   ekranga   chiqarish
keltirilgan.
#include <iostream>
using namespace std;
int main()
{
     int myNumbers[5];
     cout << "Massivni to'ldiring"<<endl;
     for (int i=0; i<5; i++)
     {
        cout<<i+1<<"-element: ";
        cin >>myNumbers[i];
     }
     cout<<"Massiv elementlari:"<<endl;
     for(int i=0; i<5; i++)
     {
         cout<<i<<"-indeksli element: "<<myNumbers[i]<<endl;
     }
 return 0;
} Massivdagi   ma’lumotlarni   o’zgartirish.   Oldingi   dasturning   kodida
foydalanuvchi   ma'lumotlari   qatorga   kiritilmagan.   Ushbu   massivdagi
elementga butun sonni tayinlash sintaksisi butun o'zgaruvchiga qiymat berish
sintaksisiga   juda   o'xshaydi.   Masalan,   butun   qiymat   o'zgaruvchisiga   2017
qiymatini berish quyidagicha ko'rinishda bo’ladi:
int thisYear;
thisYear = 2017;
Ko'rib   chiqilgan   qatordagi   to'rtinchi   elementga   2017   qiymatini   berish
shunga o'xshash bo’ladi:
myNumbers[3] = 2017;
Quyidagi   misolda   massiv   uzunligini   e'lon   qilishda   konstantalardan
foydalanishni,   shuningdek,   dastur   tuzish   jarayonida   massivning   alohida
elementlariga qiymatlar berish namoyish etilgan.
#include <iostream>
using namespace std;
int main()
{
    const int ARRAY_LENGTH = 5;
    int myNumbers[ARRAY_LENGTH] = {5, 10, 0, -101, 20};
    int moreNumbers[ARRAY_LENGTH*ARRAY_LENGTH];
    cout << "O'zgarishtirish uchun element indeksini kiriting: ";
    int elementIndex = 0;     cin >> elementIndex;
    cout << "Yangi qiymat kiriting: ";
    int newValue = 0;
    cin >> newValue;
    myNumbers[elementIndex] = newValue;
    moreNumbers[elementIndex] = newValue;
    cout <<"myNumbers ning "<<elementIndex <<"-elementi:";
    cout << myNumbers[elementIndex] << endl;
    cout <<"moreNumbersning "<<elementIndex <<"-elementi:";
    cout << moreNumbers[elementIndex]<< endl;
    return 0;
}
Massivning   uzunligi   butun   qiymatga   ega   bo'lishi   kerak.   Ushbu   qiymat
ARRAY_LENGTH   konstantasida   ko’rsatilgan,   shuning   uchun   myNumbers
massivi 5 ta elementga ega deb e'lon qilinadi, moreNumbers massivida esa 25
ta element mavjud. 
C++   dasturlashda   ko’pchilik   holatda   dasturlashni   endi   boshlovchilar
beshta   butun   sonli   massivdagi   5-indeks   yordamida   beshinchi   elementga
qiymat   berishadi.   Ushbu   element   allaqachon   massivdan   tashqarida   va
kompilyatsiya   qilingan   kod   aslida   besh   elementli   qatorning   oltinchi
elementiga kirishga harakat qilmoqda.
Ushbu  turdagi  xatolarni  ba'zan  to'siq-post   (fence-post  error)   xatosi  deb
atashadi.   Ushbu   nom   qo'riqlash   postlari   soni   qo'riqlanadigan   hududlar
sonidan bittaga ko'pligi bilan bog'liq.
Yuqoridagi   misolda   juda   muhim   narsa   yetishmayapti:   foydalanuvchi
tomonidan   kiritilgan   indeksni   massiv   chegaralari   bilan   tekshirish.   Avvalgi dastur elementIndex o'zgaruvchisi myNumbers massivi uchun 0 dan 4 gacha
va moreNwers massivi uchun 0 dan 24 gacha bo'lganligini tekshirishi kerak
va   boshqa   qiymatlarni   bekor   qilish   kerak.   Bunday   tekshiruvning   yo'qligi
foydalanuvchiga massivdan tashqarida qiymat belgilashga imkon beradi. Bu,
ehtimol,   dasturning   ishdan   chiqishiga   va   eng   yomon   holatda   operatsion
tizimning ishdan chiqishiga olib kelishi mumkin.
Buning   uchun   dasturda   if   shart   operatoridan   foydalanishimiz   lozim.
Mustaqil   ravishda   if   operatorini   qo’shgan   holda   dasturni   o’zgartirishga
harakat qilib ko’ring.
Har doim massivlarni initsializatsiya qilish tavsiya etiladi, aks holda ular
oldindan aytib bo'lmaydigan qiymatlarni o'z ichiga olishi mumkin. Siz Dastur
davomida   foydalanilayotgan   indekslar   massivdan   tashqarida   yoki   yo'qligini
har doim tekshirib turish lozim. 
Ko'p   o'lchovli   massivlar.   Hozirgacha   biz   ko'rib   chiqqan   massivlar
tokchadagi   kitoblar   singari   edi.   Uzunroq   tokchada   ko'proq   kitob   bo'lishi
mumkin,   qisqaroq   javonda   kamroq   bo'lishi   mumkin.   Shunday   qilib,   kitob
javon   uzunligi   uning   imkoniyatlarini  belgilaydigan   yagona   o'lchovdir,  ya'ni.
javon   bir   o'lchovli.   Agar                 3-rasmda   ko'rsatilgan   quyosh   panellarini
simulyatsiya   qilish   uchun   massivdan   foydalanish   kerak   bo'lsa   nima   bo'ladi.
Quyosh   panellari,   kitob   javonlaridan   farqli   o'laroq,   ikki   o'lchovga   ega:
uzunligi va kengligi. 0-panel 1-panel 2-panel
3-panel 4-panel 5-panel0-ustun 1-ustun
2-ustun
0-satr
1-satr 
3-rasm. Quyosh panellari massivi
Rasmda   ko'rib   turganingizdek   oltita   quyosh   panellari   ikki   o'lchovli
tartibda   joylashtirilgan:   uchta   ustunli   ikki   satr   (qatorlar).   Ammo   siz   ushbu
tartibni   har   biri   o'zi   uchta   paneldan   iborat   bo'lgan   ikkita   elementdan   iborat
massiv deb o'ylashingiz mumkin; boshqacha qilib aytganda, massivlar qatori
sifatida. C++ da ikki o'lchovli massivlarni yaratishingiz mumkin, ammo faqat
ikki  o'lchov  bilan  cheklanmaysiz.  Ehtiyojingizga  va  dasturning  xususiyatiga
qarab xotirada ko'p o'lchovli massivlarni yaratishingiz mumkin.
Ko'p o'lchovli massivlarni e'lon qilish va initsializatsiyalash.  C++ tili
har   bir   o'lchovda   ajratilishi   kerak   bo'lgan   elementlar   sonini   ko'rsatib,   ko'p
o'lchovli massivlarni e'lon qilishga imkon beradi. Shunday qilib, 3- rasmdagi
quyosh   panellarini   aks   ettiruvchi   ikki   o'lchovli   butun   sonlar   massivini
quyidagicha e'lon qilishingiz mumkin:
int solarPanellDs[2][3]; 3-rasmda oltita panelning har biriga 0 dan 5 gacha bo'lgan identifikator
berilgan.   Agar   biz   butun   sonli   qatorni   bir   xil   tartibda   initsializatsiya   qilsak,
unda bu initsializatsiya quyidagicha bo’ladi:
int solarPanellDs[2][3] = {{0, 1, 2}, {3, 4, 5}};
Ko'rib   turganingizdek,   boshlang'ich   sintaksis   ikki   o'lchovli   massivni
ishga   tushirishda   ishlatiladigan   sintaksisga   o'xshaydi.   Agar   qator   uchta
qator va uchta  ustundan  iborat bo'lsa,  uning  e'lonlari  va  initsializatsiyasi
quyidagicha bo'ladi:
int Array3[3][3] = {{-501, 206, 2017}, {989, 101, 206}, {303, 456, 
596}};
C   ++   tili   ko'p   o'lchovli   massiv   modelidan   foydalanishga   imkon
berishiga   qaramay,   bunday   massivlar   xotirada   hanuzgacha   bir   o'lchovli
sifatida saqlanadi.
Kompilyator   ko'p   o'lchovli   massivni   faqat   bitta   yo'nalishda
kengayadigan xotira maydoniga tushiradi.
Agar istasak, xuddi shu solarPanellDs qatorini quyidagi tarzda ishga
tushirishingiz mumkin - natija bir xil:
int solarPanellDs[2] [3] = {0, 1, 2 , 3, 4, 5}; Biroq,   avvalgi   usul   aniqroq,   chunki   u   ko'p   o'lchovli   massiv   massivlar
massivi ekanligini tasavvur qilishni va tushunishni osonlashtiradi.
Ko'p   o'lchovli   massiv   elementlariga   murojaat   qilish.   Ko'p   o'lchovli
massivni   massivlar   qatori   kabi   ko'rib   chiqaylik.   Ilgari   muhokama   qilingan
ikki o'lchovli massiv uchta satr va uchta ustunni o'z ichiga olganligi sababli,
uni   uchta   elementdan   iborat   massiv   deb   o'ylashimiz   mumkin,   ularning   har
biri uchta butun sondan iborat.
Shuning   uchun,   ushbu   massivda   butun   songa   kirish   kerak   bo'lganda,
birinchi indeksdan butun sonlarni saqlaydigan satr sonini, ikkinchi indeksdan
esa ushbu massivdagi ustun sonini ko'rsatish kerak. Quyidagi massivni ko'rib
chiqaylik:
int Array3[3][3] ={{-501, 206, 2017}, {989, 101, 206}, {303, 456, 596}};
U har biri uchta butun sonni o'z ichiga olgan uchta massiv sifatida 
qaralishi uchun initsializatsiya qilingan. Bu yerda 206 qiymatiga ega butun 
element [0][1] pozitsiyasida, 456 qiymatga ega element esa [2] [1] 
pozitsiyada.
Quyidagi misolda ikki o’lchamli massivni e’lon qilish, uni to’ldirish va
uning elementlariga murojaat qilish ko’rsatilgan.
#include <iostream>
using namespace std;
int main()
{
    const int M=3, N=2;     int Array2 [M][N];
    cout<<"Massivni to'ldiring"<<endl;
    for(int i=0; i<M; i++)
        for(int j=0; j<N; j++){
            cout<<i<<","<<j<<"-elementini kiriting: ";
            cin>>Array2[i][j];
        }
    cout<<"Massivning (1,1)-elementi:"<<Array2[1][1]<<endl;
    return 0;
}

Murakkab turlar massivlar, bir o‘lchovli massivlarni dasturlash tilida ifodalanishi asosida dastur yaratish Reja. 1. Massiv haqida tushuncha va uning qo’llanish holatlari 2. Bir o’lchamli massivlar va ularni e’lon qilish 3. Massivlardan foydalanish va initsializatsiyalash

Xotirada ketm a - ke t (re g ulyar) joylashgan bir xil turdagi qiymatlarga m a s s iv deyi l adi. Odatda mas s ivlarga zarura t , katta h ajmdagi, lekin cheklangan miqdordagi va tartibla n gan qiymatlarni qayta ishlash b i lan bo g’ liq masalalarni yechishda yuzaga keladi. F a r az qila y lik, talabalar guruhining reyting ballari bilan ish l ash masala s i qo’yilgan. Unda guruhning o’rtacha rey t ingini aniqlash, rey t inglarni kamayishi bo’yicha tartiblash, konkret talabaning reytingi haqida ma’l u mot berish va boshqa m a sa l a os t ilarini yech i sh zarur bo’lsi n . Qa y d etilg a n masalalarni yechish uchun beril g anlarning (reytin g larnin g ) tartib-lang a n ketma - ket l igi zar u r bo’ladi. B u yerda t artiblang a nlik ma’n o si shundaki, ketma-ketlikning har b i r qiymati o’z o’rniga ega bo’ladi (birinchi talabaning reytingi massivda b irinchi o’rinda, ikkinchi talabaniki - i k k i nchi o’rinda va hakoza). Berilga n lar ketma-ket-ligini ik k i xil usulda hosil qilish mumkin. Bir i nchi yo’l - har bir reyting uchun alohida o’zgaruvchi aniqlash: Reyting1, …,Reyt i ngN. Lekin, guruhdagi talabalar soni ye t arlicha katta bo’l g anda, bu o’zgar u v-chilar qatnashgan programmani tuzish katta qiyinchiliklarni yu z aga keltiradi. Ikkinchi yo’l - berilg a nlar ketma-ke t lig i ni yagona n om bilan aniqlab, u n ing qiymatla r iga murojaatni, shu qiymatlar n ing ket m a- ketlikda joylashgan o’rnining nomeri (i n de k si) orqali ama l ga oshirishdir. Re y t inglar ketma-ketligini Reyting de b nomlab, unda g i qiymatlariga Reyt i ng 1 ,…,Reyting N ko’rinishida murojaat qil i sh mumkin. Odatda berilganl a rning bunday k o’rini sh iga massivlar deyiladi. Massivlarni matematikadagi sonlar vektoriga o’xshatish mumkin, chunki vektor h am o’z i ning individual nom i ga ega va u fiksirla n gan miqdordagi bir tur d agi qiymatlardan - son l ardan iboratdir. Demak, mas s iv - b u fiksi r langan miqdord a gi ayr i m qiymatlarning (mas s iv elementl a rinin g ) tartibla n gan majmuasidir. Ba r cha elementlar bir

x il turda bo’l i shi kerak va bu tur ele me nt turi yoki massiv uchun t a ya nch tur deb nomlanadi. Yu qoridagi keltirilgan misolda Reyti n g - haqiqiy turdagi vektor deb nomlanadi. Programmada i sh latiladigan har bir konkret ma s siv o’zining individual n o m iga ega bo’ l ishi kerak. Bu n o mni t o’liq o’ zgaruvchi deyiladi, chunki uni n g qiymati ma s sivn i ng o’ z i bo’ladi. Massivning har bir elementi massiv nomi, hamda kva d rat qav s ga olingan va element selektori deb nomlanuvchi indeksni ko’rsatish orqali oshkor ravishda belgilanadi. Murojaat sintaksisi: <massiv n o mi >[<i nde ks>] Bu ko’rinishga xususiy o’ zgaruvchi deyiladi, chunki uning qiymati mas- sivni n g alohida elementidir. Bizning misolda Reyti n g massi v ining alohida komponentalariga Reyting[1],…,Reyting[N] x ususiy o’zg a ruv-chilar orqali murojaat qi l ish mumk i n. Boshqacha bu o’zgaruvchilar indeksli o’zgaruvchilar deyiladi. Massiv indeksi sifatida butun son qo’llanilad i . Umuman olganda indeks sifatida butun son qiymatini qabul qil a dig a n ixtiyoriy ifoda i sh latil i shi mumkin va uning qiymati massiv elementi nomerini ani q laydi. Ifoda sifatida o’zgaru v chi ham olinishi mumkinki, o’zgaruvchining qiymati o’zgarishi bilan murojaat qilinayotgan massiv elementi n i aniqlovchi indeks ham o’zgarad i . Shunday qil i b, programmadagi bitta indeksli o’zgar u vchi orqali massivning barcha ele me ntla r ini belgilash (aniqlash) mumkin bo’ladi. Masalan, Reyting[i] o’zgar u vchisi orqali i o’zgaruvch i ning qiymatiga bog’l i q ravishda Reyting massivining ixtiyoriy elementiga murojaat qilish mavjud. Umuman olganda massiv quyidagi xususiyatlari keltirilgan.  Massiv - bu elementlar to'plamidir.

 Massivdagi barcha elementlar bir xil turda bo’ladi.  Bunday to'plam to'liq to'plamni tashkil qiladi. C++ da massivlar ma'lum turdagi ma'lumotlar elementlarini xotirada ketma-ketlikda saqlashga imkon beradi. Massivlarning ishlatilish sababi. Siz dasturni yozyapsiz, unda foydalanuvchi beshta butun sonni kiritishi va ularni ekranga chiqarishi mumkin. Ushbu vaziyatni hal qilishning usullaridan biri dasturda beshta alohida butun o'zgaruvchini e'lon qilish va ularda ko'rsatilgan qiymatlarni saqlashdir. Bunday e’lon qilish quyidagicha bo’lishi mumkin: int firstNumber = 0; int secondNumber = 0; int thirdNuinber = 0; int fourthNumber = 0; int fifthNumber = 0; Ammo agar foydalanuvchi 500 va undan ortiq sonlarni saqlashi va aks ettirishi kerak bo'lsa, u holda yuqoridagi tizim yordamida 500 ta shunday butun o'zgaruvchini e'lon qilishi kerak edi. Buni amalga oshirish uchun ko'p mehnat va sabr-toqat kerak. Agar foydalanuvchi 5 o'rniga 500 000 butun sonni so'rasa nima bo'ladi? Har biri nolga tenglashtiriladigan beshta butun sonli qatorni e'lon qilish to'g'riroq: int myNumbers[5] = {0}; Shunday qilib, agar 500000 ta butun sonni berishni so'rashgan bo'lsa, unda massivni muammosiz oshirish mumkin:

int manyNumbers[500000] = {0}; Besh belgidan iborat massivni quyidagicha aniqlash mumkin: char myCharacters[5]; Bunday massivlar statik massivlar deb ataladi, chunki ular tarkibidagi elementlarning soni, shuningdek ularga ajratilgan xotira hajmi kompilyatsiya vaqtida o'zgarmaydi. Dinamik massivlar haqida kursimizning keyingi mavzularida tanishamiz. Statik massivlarni e'lon qilish va initsializatsiyalash. Yuqoridagi kod satrlarida biz 0 qiymat bilan initsializatsiyalangan beshta int elementni (ya'ni butun sonlarni) o'z ichiga olgan myNumbers deb nomlangan massivini e'lon qildik. Shunday qilib, C++ da massivni e'lon qilish uchun sintaksis quyidagicha: element_tipi Massiv_nomi [Elementlar_miqdori] = {Boshlang’ich_qiymatlar-majburiy emas} Massivni e'lon qilish bilan bir qatorda shu zahoti uning barcha elementlari initsializatsiyalash mumkin. Shunday qilib, beshta butun sonli qatorni besh xil butun sonli qiymatlar bilan initsializatsiyalash mumkin: int myNumbers[5] = {34, 56, -21, 5002, 365}; Massivning barcha elementlari nol bo’lishi ham mumkin (standart qiymat kompilyator tomonidan taqdim etiladi):