• TYPE a[LENGTH]; int indx; for(indx=0; indx ...a[indx]...;
  • Kirish Massiv tushunchasi. Statik massivlar




    Download 208,13 Kb.
    bet3/5
    Sana20.05.2024
    Hajmi208,13 Kb.
    #244829
    1   2   3   4   5
    Bog'liq
    21- lectures Basic prog Massiv

    type a[length];

    Bu buyruqda type turiga tegishli maxsus a[0], a[1], ..., a[length-1] nomli o’zgaruvchilar e’lon qilinadi. Massivning har bir elementi o’z nomeri - indeksga ega bo’ladi. Massivning x - elementiga murojat qilish indeksatsiya amali yordamida amalga oshiriladi:




    int x = ... ; // Butun qiymatli indeks
    TYPE value = a[x]; // x - elementni o’qish
    a[x] = value; // x- elementga yozish

    Indeks sifatida butun turdagi qiymat beruvchi ixtiyoriy ifodani ishlatish mumkin: char, short, int, long. C tilida massiv elementlarining indeksi 0 dan (1 dan emas) boshlanadi, LENGTH uzunlikdagi massivning oxirgi elementining indeksi esa LENGTH-1 (LENGTH emas). Shuning uchun ham massivning barcha elementlari bo’yicha sikl quyidagicha yoziladi:




    TYPE a[LENGTH]; int indx;
    for(indx=0; indx < LENGTH; indx++)
    ...a[indx]...;

    Bu erda indx < LENGTH sharti indx <= LENGTH-1 ga teng kuchli. Massiv chegarasidan chiqish (mavjud bo’lmagan elementni o’qish/yozish) kutilmagan natijalarga va dastur ishida ham kutilmagan holatlarga olib kelishi mumkin. Bunday xatolar massivlar bilan ishlashdagi eng ko’p yo’l qo’yiladigan xatolar hisoblanadi.


    Statik massivlarni uning elementlari qiymatlarini {} ichida vergul bilan ajratib yozish, ya’ni initsializatsiya qilish yo’li bilan ham e’lon qilish mumkin. Agar massiv uzunligidan kam elementlar berilgan bo’lsa, u holda qolgan elementlari nol deb hisoblanadi:


    int a10[10] = { 1, 2, 3, 4 }; // va 6 ta nol

    Agar massivlarni initsializatsiya qilishda uning o’lchovi berilmasa u kompilyator tomonidan hisoblanadi:




    int a3[] = { 1, 2, 3 }; // Xuddi a3[3] kabi.
    C++ tilida massiv elementlarining turiga cheklovlar qo’yilmaydi, lekin bu turlar chekli o’lchamdagi ob'ektlarning turi bo’lishi kerak. Chunki kompilyator massivning xotiradan qancha joy (bayt) egallashini bilishi zarur. Xususan, massiv komponentasi massiv bo’lishi ham mumkin, ya’ni «vektorlar-vektori» natijada matritsa deb nomlanuvchi ikki o’lchovli massivni hosil qiladi.
    Agar matritsaning elementi ham vektor bo’lsa, uch o’lchamli massiv hosil bo’ladi. Shu yo’l bilan ixtiyoriy o’lchamdagi massivni hosil qilish mumkin.
    Ikki o’lchovli statik massivning sintaksisi quyidagi ko’rinishda bo’ladi:
    [][];
    Masalan, 5x15 o’lchamli haqiqiy sonlar qabul qiluvchi statik massivning e’loni quyidagicha bo’ladi:
    float s_mas[5][15];
    E’lon qilingan s_mas massiv o’zgaruvchisi 5 ta satr va 15 ta ustundan tashkil topgan matritsaga o’xshaydi, ya’ni uning 75 ta elementi mavjud.
    Endi adres nuqtai–nazaridan ko’p o’lchovli massiv elementlariga murojaat qilishni ko’raylik. Quyidagi e’lonlar berilgan bo’lsin:
    int a[4][5];
    float b[3][2][4];
    Birinchi e’londa ikki o’lchovli massiv, ya’ni 4 ta satr va 5 ta ustundan iborat matritsaga o’xshash massiv e’lon qilingan, ikkinchisida esa uch o’lchovli, ya’ni 3 ta satr, 2 ta ustun va 4 ta qavatdan iborat massiv e’lon qilingan.
    Massiv elementlariga murojaat qilish uchun massiv nomidan keyin kvadrat qavsda har bir o’lcham uchun indeks yozilishi kerak, masalan, a[i][j] ko’rinishidagi asosiy murojaatdan tashqari, vositali murojaat qilish *(*(a+i)+j) yoki *(a[i]+j) va b[i][j][k] ko’rinishidagi asosiy murojaatdan tashqari, vositali murojaat qilish *(*(*(b+i)+j)+k) yoki *(*(b[i]+j)+k) yoki *(b[i][j]+k) ham mumkin.
    Ko’p o’lchovli massivlarni initsializatsiyalash quyidagi misollar yordamida ko’rsatiladi:
    int s_mas[3][4]={0,4,1,-5,2,-22,15,-46,18,98,12,-3};
    int b[4][3]={{5,1,24},{1,34,-12},{76,-2,7},{7,-25,7}};
    Birinchi e’londa boshlanьich qiymatlar ketma-ket yozilgan, ikkinchi e’londa esa qiymatlar guruhlashgan.
    Endi ikki o’lchovli dinamik massivlar tashkil qilishni qarab chiqamiz. Bunday massivlarni tashkil etishning sintaksisi quyidagi:
    **;
    ko’rinishda bo’lgan «ko’rsatkichga ko’rsatkich» ishlatiladi.
    Dastlab massiv satrlari soniga qarab ko’rsatkichlar massiviga dinamik xotiradan joy ajratiladi:
    d_mas=new int *[n]; // bu erda n massiv satrlari soni
    Keyin, dinamik massivning har bir satri uchun takrorlash operatoridan foydalanib xotiradan joy ajratish va ularning boshlanьich adreslarini d_mas massiv elementlariga joylashtirish zarur bo’ladi:
    for(int i=0;i //m ustunlar soni
    Shuni ta’kidlash kerakki, dinamik massivning har bir satri xotiraning turli joylarida joylashishi mumkin.
    Ikki o’lchovli dinamik massivni o’chirish uchun esa oldin massivning har bir elementi (satri), so’ngra massivning o’zi o’chiriladi:






    for (i=0;i
    delete [] d_mas;


    Download 208,13 Kb.
    1   2   3   4   5




    Download 208,13 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Kirish Massiv tushunchasi. Statik massivlar

    Download 208,13 Kb.