Masalan, 
double Birinchimassiv[4] = {1.9, 2.9, 3.4, 3.5}

|
Masalan,
double Birinchimassiv[4] = {1.9, 2.9, 3.4, 3.5}
|
bet | 26/33 | Sana | 21.02.2024 | Hajmi | 290,29 Kb. | | #160200 |
Bog'liq Algoritmlash va dasturlash asoslari-fayllar.orgMasalan,
double Birinchimassiv[4] = {1.9, 2.9, 3.4, 3.5};
Ushbu bayonot to‘rt elementli Ikkinchimassiv nomli massivini e’lon qiladi va qiymat ham beradi:
double Ikkinchimassiv[4];
Ikkinchimassiv[0] = 1.9;
Ikkinchimassiv[1] = 2.9;
Ikkinchimassiv[2] = 3.4;
Ikkinchimassiv[3] = 3.5;
Ikki o‘lchovli massivlarni e’lon qilish
Ikki o‘lchovli massivdagi elementga kirish qator va ustun indekslari orqali amalga oshiriladi.
Ikki o‘lchovli massivni e’lon qilish sintaksisi:
elementTuri massivNomi[qator hajmi][ustun hajmi];
Misol tariqasida, int qiymatlarining ikki o‘lchovli massiv matritsasi qanday e’lon qilinishi keltirilgan:
int matrix[5][5];
Ikki o‘lchovli massivda ikkita pastki yozuv ishlatiladi, biri qator uchun, ikkinchisi ustun uchun. Bir o‘lchovli massivda bo‘lgani kabi, quyidagi a-rasmda ko‘rsatilganidek, har bir subscript uchun indeks int ma’lumot turidagi va 0 dan boshlanadi.
|
[0]
|
[1]
|
[2]
|
[3]
|
[4]
|
[0]
|
|
|
|
|
|
[1]
|
|
|
|
|
|
[2]
|
|
|
|
|
|
[3]
|
|
|
|
|
|
[4]
|
|
|
|
|
|
|
int matritsa[5][5]
|
|
|
|
|
|
|
|
|
|
|
|
( a )
|
|
[0]
|
[1]
|
[2]
|
[3]
|
[4]
|
[0]
|
|
|
|
|
|
[1]
|
|
|
|
|
|
[2]
|
|
8
|
|
|
|
[3]
|
|
|
|
|
|
[4]
|
|
|
|
|
|
|
matritsa[2][1] = 8
|
|
|
|
|
|
|
|
|
|
|
|
( b )
|
|
[0]
|
[1]
|
[2]
|
[0]
|
|
|
|
[1]
|
|
|
|
[2]
|
|
|
|
[3]
|
|
|
|
[4]
|
|
|
|
|
int m[4][3] =
{{1,2,3},
{4,5,6},
{7,8,9},
{10,11,12}};
|
|
( c )
|
Ikki o‘lchovli massivning har bir subscriptining indeksi 0 dan boshlanadigan int qiymatidir.
b-rasmda ko`rsatilganidek, 2-qator va 1-ustundagi ma’lum bir elementga 8 qiymatini belgilash uchun siz quyidagilardan foydalanishingiz mumkin:
matrix[2][1] = 8;
Koʻrsatkichlar massivlari
Ko‘rsatkichlar massivi - bu ko‘rsatgich ma’lumot turidagi o‘zgaruvchilardan tashkil topgan massiv hisoblanadi, ya’ni o‘zgaruvchi boshqa elementga murojaat qiluvchi ko‘rsatgich hisoblanadi. Faraz qilaylik, 5 ta butun ko‘rsatkichni o‘z ichiga olgan ko‘rsatkichlar massivini yaratamiz; keyin uning deklaratsiyasi quyidagicha ko‘rinadi:
int *ptr[5]; //5 ta elementga ega butun sonli (int) koʻrsatkich massivi
Yuqoridagi deklaratsiyada biz ptr deb nomlangan ko‘rsatkich massivini e'lon qildik va u xotirada 5 ta butun son (int) ko‘rsatkichni ajratadi.
Ko‘rsatkich massivining elementi boshqa elementning manzilini belgilash orqali ham ishga tushirilishi mumkin. Keling, bu holatni misol orqali ko‘rib chiqaylik.
int a; // oʻzgaruvchi deklaratsiyasi.
ptr[2] = &a;
Yuqoridagi kodda biz "a" o‘zgaruvchining manzilini "ptr" massivning uchinchi elementiga belgiladik.
Shuningdek, biz ko‘rsatkichga murojaat qilmaslik uchun "a" qiymatini olishimiz mumkin.
#include
using namespace std;
int main()
{
int ptr1[5]; // massiv e'lon qilish
int *ptr2[5]; // ko`rsatkich massvini e'lon qilish
std::cout << "Beshta raqam kiriting :" << std::endl;
for(int i=0;i<5;i++)
{
cin >> ptr1[i];
}
for(int i=0;i<5;i++)
{
ptr2[i]=&ptr1[i];
}
// massiv elementlarini ekranga chop etish
cout << "elementlar" << std::endl;
for(int i=0;i<5;i++)
{
cout << *ptr2[i] << std::endl;
}
return 0;
}
Yuqoridagi kodda biz butun son ma’lumot turidagi massivni va butun sonli ko‘rsatkich massivini e’lon qildik. Biz “ptr1” massivining elementlari bo‘ylab takrorlanadigan “for” siklini belgiladik va har bir iteratsiyada “i” indeksidagi ptr1 elementining manzili “i” indeksidagi ptr2da saqlanadi.
Dinamik massivlar
Dinamik massiv oddiy massivga juda o‘xshaydi, lekin uning hajmi dasturning ishlash vaqtida o‘zgartirilishi mumkin.Dinamik massiv elementlari ulashgan xotira blokini egallaydi. Oddiy massiv yaratilgandan keyin uning hajmini o‘zgartirib bo‘lmaydi. Biroq, dinamik massiv ishlashi boshqacharoq. Dinamik massiv ma’lumot bilan to‘ldirilgandan keyin ham o‘z hajmini kengaytirishi mumkin. Massivni yaratishda unga oldindan belgilangan xotira miqdori ajratiladi. Dinamik massivda bunday bo‘lmaydi, chunki u zarurat tug‘ilganda xotira hajmini ma’lum bir omilga oshirishi mumkin.
Dinamik massivlarning ishlashiga ta’sir qiluvchi omillar
Massivning boshlang‘ich hajmi va uning o‘sish omili uning ishlashini aniqlaydi. Quyidagi fikrlarga e’tibor bering:
Agar massiv kichik o‘lchamga va kichik o‘sish omiliga*(factor) ega bo‘lsa, u xotirani tez-tez qayta taqsimlashni davom ettiradi. Bu massivning ishlashini pasaytiradi.
Agar massiv katta hajmga va katta o‘sish omiliga ega bo‘lsa, unda foydalanilmagan xotiraning katta qismi bo‘ladi. Shu sababli, o‘lchamini o‘zgartirish operatsiyalari ko‘proq vaqt talab qilishi mumkin. Bu massivning ishlashini pasaytiradi.
new kalit so‘zi
C++ dasturlash tilida biz new kalit so‘zidan foydalanib dinamik massiv yaratishimiz mumkin.
Sintaksis:
new kalit so‘z quyidagi sintaksisni oladi:
pointer_o‘zgaruvchi = new ma’lumot_turi;
pointer_o‘zgaruvchi - bu ko‘rsatkich o‘zgaruvchisining nomi.
Ma’lumot_turi - C++ ma’lumotlar turi bo‘lishi kerak.
Keyin kalit so`z birinchi elementga ko‘rsatkichni qaytaradi. Dinamik massivni yaratgandan so‘ng, biz uni delete kalit so‘zi yordamida o‘chirishimiz ham mumkin.
#include
using namespace std;
int main() {
int x, n;
cout << "Elementlar sonini kiriting (raqam bo`lishi kerak): " << "\n";
cin >>n;
int *arr = new int(n);
cout cin >> arr[x];
}
cout << "Siz kiritigan elementlar: ";
for (x = 0; x < n; x++) {
cout << arr[x] << " ";
}
return 0;
}
Massivlarni qayta ishlash
Massiv elementlarini qayta ishlashda dasturchi ko‘pincha quyidagi sabablarga ko‘ra for siklidan foydalanadi:
Massivdagi barcha elementlar bir xil turda bo‘lgani uchun
Massivning o‘lchami ma’lum bo‘lgani uchun for siklidan foydalanish qulayroq hisoblanadi.
Massiv quyidagicha e’lon qilingan deb faraz qilaylik:
const int MASSIV_HAJMI = 10;
double uchinchiMassiv[MASSIV_HAJMI];
Massivlarni qayta ishlashga(processing) 10 ta misol:
Kirish qiymatlari bilan massivlarni ishga tushirish: Quyidagi sikl uchinchiMassiv nomli massivni foydalanuvchi kiritish qiymatlari bilan ishga tushiradi:
cout << "Massiv elementlarini kiriting " << MASSIV_HAJMI << " ta : ";
for (int i = 0; i < MASSIV_HAJMI; i++)
cin >> uchinchiMassiv [i];
Tasodifiy qiymatlar bilan massivlarni ishga tushirish: Quyidagi sikl 0 dan 99 gacha tasodifiy qiymatlar bilan uchinchiMassiv massivini ishga tushiradi:
for (int i = 0; i < MASSIV_HAJMI; i++)
{
uchinchiMassiv[i] = rand() % 100;
}
Massivlarni chop etish: Massivni chop etish uchun undagi har bir elementni quyidagi kabi sikl yordamida chop etish kerak:
for (int i = 0; i < MASSIV_HAJMI; i++)
{
cout << uchinchiMassiv[i] << " ";
}
Massivlardan nusxa olish: Faraz qilaylik, sizda ikkita massiv bor, BirinchiMassiv va IkkinchiMassiv. Quyidagi sintaksisdan foydalanib, BirinchiMassivni elementlarini (qiymatlarini) IkkinchiMassivga ko‘chirish mumkin.
for (int i = 0; i < MASSIV_HAJMI; i++)
{
IkkinchiMassiv[i] = BirinchiMassiv[i];
}
Barcha elementlarni yig‘ish: yig‘indini saqlash uchun jami deb nomlangan o‘zgaruvchidan foydalanamiz. Dastlab, jami o‘zgaruvchisi qiymati 0 ga teng. Massivdagi har bir elementni quyidagi sikl yordamida jamiga qo‘shish mumkin:
|
| |