132
Ikki o‗lchovli massivlarni C++ dasturlash tilida e‘lon qilish va uning
umumiy ko‗rinishi quyidagicha.
[][];
Ikki o‗lchovli massivlarni C++ dasturlash tilida e‘lon qilish uchun massiv
turi, massiv nomi, massiv satrdagi elementlar soni va massiv ustunidagi elementlar
soni beriladi. Agar a[5,2] massiv berilgan bo‘lsa, uni C++ dasturlash tilida a[2][5]
ko‗rinishda e‘lon qilinadi. C++ dasturlash
tilida massivlarni yozilishi,
matematikadan bir oz farq qilinadi, ya‘ni ustun va satrlari joyi almashtiriladi. Ikki
o‗lchovli massivlarni C++ dasturlash tilida e‘lon qilinishi.
#include
int main()
{ int a[10][10]; //butun turli 100ta elementli massiv
double b[10][10]; //haqiqiy turli 100ta elementli massiv
return 0;
}
Massivlarni elementlariga murojat qilish uchun uning har bir elementining
o‘z indeksi bo‗yicha murojat qilinadi. Massiv elementlariga murojat qilishni
quyidagi shakl orqali bajariladi. Quyidagi ikki o‗lchovli massiv berilgan bo‗lsin.
a(3,3) massivning elementlariga C++ dasturlash tilida murojat qilish
quyidagicha ko‗rinishda bo‗ladi.
a[1][1]=1, a[2][1]=2, a[3][1]=3, a[1][2]=4, a[2][2]=5, a[3][2]=5, a[1][3]=4,
a[2][3]=5, a[3][3]=5,
C++ dasturlash tilida ikki o‗lchovli massivlarning elementlarini boshlang‘ich
qiymatlarini quyidagi tartibda berilishi mumkin.
#include
int main()
{ int a[][]={{1,2,3}{4,5,6}{7,8,9}};
return 0;
}
133
Massiv elementlari
soni oldindan berilmasa, komplyator massiv elementlar
sonini boshlang‘ich qiymatlarga qarab aniqlaydi.
Ikki o‗lchovli massiv elementlari boshlang‘ich qiymatlari oldindan
berilmasa, albatta, uning elementlar sonini oldindan berish kerak bo‗ladi. Ikki
o‗lchovli
massiv elementlari soni aniq, lekin uning elementlarini boshlang‘ich
qiymatlari berilmaganda, massiv elementlarini shakllantirish.
#include
int main()
{ int a[3][3];
for(int i=0;i<=2;i++)
for(int j=0;j<=2;j++)
cin>>a[i][j];
return 0;
}
Misol:
A(2,3) massiv berilgan uning elementlarini ikkiga ko‗paytirib
ekranga chiqaring.
Bu masala yechimini aniqlashda ham bir o‗lchovli massivlar kabi har bir
elementiga murojat qilib, har bir elementini ikkiga ko‗paytirish kerak.
#include
int main()
{ int a[3][2];
for(int i=0;i<=2;i++)
for(int j=0;j<=1;j++)
cin>>a[j][i];
for(int i=0;i<=2;i++)
{
for(int j=0;j<=1;j++)
cout<<2*a[j][i]<<‖ ‖;
cout<<‖\n‖; }
return 0;
}
Kiritish uchun ma‘lumot
1 2 3
4 5 6
Dastur natijasi
2 4 6
8 10 12
134
Ikki o‗lchovli massivlar yordamida C++ dasturlash tilida matematikani balki
boshqa sohalarning ham bir necha masalalarini hal etish mumkin.
Misol:
A(n,n) matritsa berilgan uning asosiy dioganalidan yuqoridagi
elementlarini ikkiga ko‗paytirib ekranga chiqaring.
#include
int main()
{ int a[90][90];
int n,m; cout<<‖n=‖;
cin>>n; m=n;
for(int i=0;ifor(int j=0;jcin>>a[j][i];
for(int i=0;i{ m=m-i; j=0;
while(j<=m)
{ cout<<2*a[j][i]<<‖ ‖;
j++;
}
cout<<‖\n‖; }
return 0;
}
Kiritish uchun ma‘lumot
n=3
1 2 3
4 5 6
7 8 9
Dastur natijasi
2 4 6
8 10
14
Ikki o‗lchovli massiv elementlarining har birini tekshirish yoki ular ustida
amallar bajarish uchun ichma ich sikllardan foydalaniladi. Yuqoridagi masala
yechimida ikki o‗lchovli massivning barcha elementlari tekshirilmaydi shuning
uchun ichki siklning while yordamida yozish maqsadga muvofiq bo‘ladi. Masssiv
o‗lchami kattalashgan sayin uning elementlari uchun xotiradan ajratiladigan joy
hajmi juda tez o‗sadi. Masalan, 32 razryadli mashinada uch o‗lchamli float b [10]
[8] [10] massivi e‘lon qilingan bo‗lsa, u xotirada 10*10*8*4=3200 bayt joyni
egallaydi.
135
Agar shu massiv int b [10] [10] [10] [10] kabi to‗rt o‗lchamli ko‗rinishda
e‘lon qilinsa, xotiradan 40000 baytlik joyni band qilinadi. Demak, massivning
o‗lchamlari soniga chegara qo‗yilmagan, agar xotira muammosiga duch kelinmasa.
n o‗lchamli massivning xotiradan egallaydigan joyi formulasi quyidagicha. Baytlar
soni =1-o‗lcham * 2-o‗lcham *…..* n-o‗lcham * turning baytlardagi o‗lchami.
Amalda uch o‗lchamli massivlardan ham juda kam foydalaniladi. Uch o‗lchamdan
yuqori o‗lchamli massisvlardan esa deyarli foydalanilmaydi.
Massivlarga oid masalalar yuqoridagi holatlar bo‗yicha C++ dasturlash tilida
tasvirlanadi.