Ko'p o'lchovli massivlar har bir o'lchovni kvadrat qavslarda ko'rsatish bilan beriladi, masalan:
int matr [6][8];
operator 6 satr va 8 ustundan iborat ikki o'lchovli massiv tavsifini beradi. Ko'p o'lchovli massivlar shunday joylashtiriladiki, keying elementga o'tishda tezroq oxirgi indeks o'zgaradi. Ko'p o'lchovli massiv elementiga kirish uchun uning barcha indekslari ko'rsatiladi, masalan, matr[i][j] yoki *(matr[i]+j) yoki *(*(matr+i)+j) usul bilan beriladi. Bu mumkin, chunki matr[i] massiv i-satri boshining adresi hisoblanadi.
Ko'p o'lchovli massivlar initsializatsiyalashda u yoki massivlardan massiv kabi bunda har bir massiv o'z katta qavslarga olinadi (bu holda chap o'lchamni tavsiflashda ko'rsatmaslik mumkin) yoki elementlar xotirada qanday joylashgan bo'lsa shu tartibda elementlar umumiy ro'yxati beriladi:
int mass2 [] [2] = { {1, 1}, {0, 2}, {1, 0} };
int mass2 [3] [2] = {1, 1, 0, 2, 1, 0};
Misol. Dastur butun sonli matritsada eng ko'p sondagi nolga teng elementlari bo'lgan satr nomerini aniqlaydi.
#include
int main( )
{
const int nstr = 4, nstb = 5; // massiv o'lchovi
int b[nstr] [nstb]; // massiv tavsifi
int i, j;
for (i = 0; ifor (j = 0; jint istr = -1, MaxKol = 0;
for (I = 0; iint Kol = 0;
for (j = 0; jif (Kol > MaxKol){istr = i; MaxKol = Kol;}
}
printf (" Boshlang'ich massiv: \n");
for (i = 0; ifor (j = 0; jprintf( "\n" );}
if (istr == -1)printf("Nol elementi yo'q");
else printf("Satr nomeri: %d", istr);
return 0;
}
Izlangan satr nomeri istr o'zgaruvchida, joriy (i-chi) satrdagi nol elementlar soni – Kol o'zgaruvchida, nol elementlar maksimal soni – MaxKol o'zgaruvchida saqlanadi. Massiv satrlar bo'yicha qaraladi, ularning har birida nol elementlar soni sanaladi (e'tibor bering Kol o'zgaruvchi har bir satrini ko'rish oldidan nollarga aylanadi). Eng ko'p son va tegishli satri nomeri eslab qolinadi.
Dinamik ko'p o'lchovli massivni yaratish uchun new amalda uning barcha o'lchamlarini ko'rsatish lozim (eng chap o'lcham o'zgaruvchi bo'lishi mumkin), masalan:
int nstr = 5;
int ** m = (int **) new int [nstr] [10];
Ikki o'lchovli massivga xotira ajratishning universal va xavfsiz usuli, uning ikkala o'lchami dasturni bajarish bosqichida berilganda, quyidagiga keltirilgan:
int nstr, nstb;
cout << " Satr va ustunlar sonini kiriting
cin >> nstr >> nstb;
int **a = new int *[ndtr]; // 1
for (int i = 0; ia[i] = new int [nstb]; // 3
… ,
1-operatorda intga “ko'rsatgichga ko'rsatgich” tipidagi o'zgaruvchi e’lon qilinadi va massiv satridagi ko'rsatgichlar massivga xotira ajratiladi (satr soni - nstr). 2-operatorda massivning har bir satriga xotira ajratish uchun sikl tashkil etiladi. 3-operatorda satrlar ko'rsatgichlar massiv har bir elementiga ikki o'lchovli massiv satriga ajratilgan xotira maydoni boshlanishi adresi beriladi. Har bir satr int tipidagi nstb elementlardan iborat (1.10-rasm).
1.10 – rasm. Ikki o'lchovli massivga xotira ajratish
Ixtiyoriy sondagi o'lchovlarga ega massivga xotirani tozalash delete[] amali yordamida bajariladi. Konstantga ko'rsatgichni yo'qotish mumkin emas.
Do'stlaringiz bilan baham: |