Skip to content

1-dars: Massiv (Array) asoslari

Dars haqida

Davomiyligi: 90 daqiqa Maqsad: Talaba massiv tushunchasini bilishi, e'lon qilishi, qiymatlar bilan to'ldirishi va asosiy amallarni bajara olishi kerak.

1. Massiv nima?

Massiv (array) — bir xil turdagi qiymatlarning ketma-ket to'plami.

c
int ballar[5] = {85, 92, 78, 65, 90};

Aslida — 5 ta int xotirada ketma-ket joylashgan.

Index:  0    1    2    3    4
       ┌───┬───┬───┬───┬───┐
       │ 85│ 92│ 78│ 65│ 90│
       └───┴───┴───┴───┴───┘

2. Nima uchun massiv?

Massivsiz — 100 ta talaba uchun 100 ta o'zgaruvchi:

c
int ball1 = 85;
int ball2 = 92;
int ball3 = 78;
// ... 97 ta yana
int ball100 = 60;

Massiv bilan:

c
int ballar[100];

Bir qator — 100 ta qiymat saqlash mumkin.

3. Massiv e'lon qilish

Variant 1: hajmi belgilangan, qiymat yo'q

c
int arr[5];  // 5 ta int, qiymatlar — axlat (random)

Variant 2: qiymatlar bilan

c
int arr[5] = {10, 20, 30, 40, 50};

Variant 3: hajmi avtomatik

c
int arr[] = {10, 20, 30, 40, 50};  // hajmi 5

Variant 4: barchani 0 ga

c
int arr[100] = {0};  // hammasi 0

Variant 5: chala

c
int arr[5] = {10, 20};  // {10, 20, 0, 0, 0}

4. Massiv elementiga kirish

Index — element raqami (0 dan boshlanadi).

c
int arr[5] = {10, 20, 30, 40, 50};

printf("%d\n", arr[0]);  // 10
printf("%d\n", arr[2]);  // 30
printf("%d\n", arr[4]);  // 50

Index 0 dan boshlanadi

Birinchi element — arr[0], oxirgi — arr[n-1].

arr[5] — XATO (5 elementli massivda yo'q).

5. Element qiymatini o'zgartirish

c
int arr[5] = {10, 20, 30, 40, 50};
arr[2] = 100;
// {10, 20, 100, 40, 50}

6. Massivni for sikli bilan

c
int arr[5] = {10, 20, 30, 40, 50};

// Chiqarish
for (int i = 0; i < 5; i++) {
    printf("%d ", arr[i]);
}
// 10 20 30 40 50

// Qiymat berish
for (int i = 0; i < 5; i++) {
    arr[i] = i * 10;
}
// 0 10 20 30 40

7. Massiv hajmi — sizeof

c
int arr[10] = {1, 2, 3};
int size = sizeof(arr) / sizeof(arr[0]);
printf("Hajm: %d\n", size);  // 10

sizeof(arr) — butun massivning byte hajmi. sizeof(arr[0]) — bir elementning hajmi. Bo'linmasi — element soni.

8. To'liq misol

c
#include <stdio.h>

int main(void) {
    int ballar[] = {85, 92, 78, 65, 90, 75, 88, 70, 95, 60};
    int n = sizeof(ballar) / sizeof(ballar[0]);
    
    // Chiqarish
    printf("Ballar:\n");
    for (int i = 0; i < n; i++) {
        printf("Talaba %d: %d\n", i + 1, ballar[i]);
    }
    
    // Yig'indi
    int sum = 0;
    for (int i = 0; i < n; i++) {
        sum += ballar[i];
    }
    printf("\nJami: %d\n", sum);
    printf("O'rtacha: %.2f\n", (double)sum / n);
    
    return 0;
}

9. Eng katta va eng kichik

c
int arr[] = {12, 45, 7, 23, 89, 34};
int n = sizeof(arr) / sizeof(arr[0]);

int max = arr[0];
int min = arr[0];

for (int i = 1; i < n; i++) {
    if (arr[i] > max) max = arr[i];
    if (arr[i] < min) min = arr[i];
}

printf("Max: %d, Min: %d\n", max, min);

10. Massiv va funksiyalar

c
void print_array(int arr[], int n) {
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
}

int sum_array(int arr[], int n) {
    int sum = 0;
    for (int i = 0; i < n; i++) {
        sum += arr[i];
    }
    return sum;
}

int main(void) {
    int data[] = {1, 2, 3, 4, 5};
    print_array(data, 5);
    printf("Sum: %d\n", sum_array(data, 5));
    return 0;
}

Massiv funksiyaga

C'da massiv funksiyaga pointer orqali uzatiladi (faqat manzil). Demak — hajm alohida berish kerak.

c
void func(int arr[], int n) { ... }  // hajm — n parameterda
void func(int arr[100]) { ... }       // [100] e'tiborsiz, faqat pointer

11. Massivni nusxalash

c
int src[5] = {1, 2, 3, 4, 5};
int dest[5];

// Element-element
for (int i = 0; i < 5; i++) {
    dest[i] = src[i];
}

// `dest = src;` ISHLAMAYDI! C'da massiv to'g'ridan-to'g'ri nusxa olmaydi

12. Massiv chegarasi

Out of bounds

C massiv chegarasini tekshirmaydi.

c
int arr[5];
arr[100] = 42;  // CRASH yoki tasodifiy joyga yozish

Bu — eng keng tarqalgan bug. Doim hajmni tekshiring.

13. Massivni teskari qilish

c
int arr[] = {1, 2, 3, 4, 5};
int n = 5;

for (int i = 0; i < n / 2; i++) {
    int temp = arr[i];
    arr[i] = arr[n - 1 - i];
    arr[n - 1 - i] = temp;
}

// {5, 4, 3, 2, 1}

14. Elementni topish (oddiy)

c
int arr[] = {3, 7, 1, 9, 4};
int n = 5;
int target = 9;
int found = -1;

for (int i = 0; i < n; i++) {
    if (arr[i] == target) {
        found = i;
        break;
    }
}

if (found != -1) {
    printf("Topildi! Index: %d\n", found);
} else {
    printf("Topilmadi\n");
}

15. Element sanash

c
int arr[] = {1, 2, 3, 2, 4, 2, 5};
int n = 7;
int target = 2;
int count = 0;

for (int i = 0; i < n; i++) {
    if (arr[i] == target) {
        count++;
    }
}

printf("%d soni: %d marta\n", target, count);
// 2 soni: 3 marta

16. To'liq misol: Talabalar statistikasi

c
#include <stdio.h>

int main(void) {
    int n;
    printf("Necha talaba: ");
    scanf("%d", &n);
    
    int ballar[100];
    
    // Ma'lumot olish
    for (int i = 0; i < n; i++) {
        printf("Talaba %d bali: ", i + 1);
        scanf("%d", &ballar[i]);
    }
    
    // Statistika
    int sum = 0, max = 0, min = 100;
    int passed = 0;
    
    for (int i = 0; i < n; i++) {
        sum += ballar[i];
        if (ballar[i] > max) max = ballar[i];
        if (ballar[i] < min) min = ballar[i];
        if (ballar[i] >= 60) passed++;
    }
    
    double avg = (double)sum / n;
    double pass_rate = (double)passed / n * 100;
    
    printf("\n=== STATISTIKA ===\n");
    printf("Jami: %d\n", sum);
    printf("O'rtacha: %.2f\n", avg);
    printf("Max: %d\n", max);
    printf("Min: %d\n", min);
    printf("O'tganlar: %d (%.1f%%)\n", passed, pass_rate);
    
    return 0;
}

Darsdagi topshiriqlar

1 — Asosiy

asosiy.c:

c
#include <stdio.h>

int main(void) {
    int arr[] = {12, 45, 7, 23, 89, 34, 56, 11, 78, 90};
    int n = sizeof(arr) / sizeof(arr[0]);
    
    // Chiqarish
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
    
    // Yig'indi
    int sum = 0;
    for (int i = 0; i < n; i++) sum += arr[i];
    printf("Sum: %d\n", sum);
    
    return 0;
}

2 — Min va Max

min-max.c — 10 ta raqamdan min va max topish.

3 — Element sanash

count.c — foydalanuvchi raqam beradi, massivda necha marta borligini topish.

4 — Teskari

reverse.c — massivni teskari qilish.

5 — Yig'indi va o'rtacha

stats.c — talabalar ballari uchun to'liq statistika.

6 — Massiv nusxalash

copy.c — bir massivni boshqasiga nusxalash.

7 — Funksiyalar

array-fn.c:

c
void print_arr(int arr[], int n);
int sum_arr(int arr[], int n);
double avg_arr(int arr[], int n);
int max_arr(int arr[], int n);
int min_arr(int arr[], int n);
int find_arr(int arr[], int n, int target);
int count_arr(int arr[], int n, int target);

Hammasini yozing.

8 — Talabalar statistikasi

Dars matnidagi to'liq dasturni yarating.

9 — Histogram

histogram.c:

1: ###
2: #####
3: ##
4: ########
5: ####

Massivdagi qiymatlarni * yoki # bilan ko'rsatish.

10 — GitHub

bash
$ mkdir 5-oy-dars-1
$ # fayllar
$ git add . && git commit -m "feat: dars 1 - arrays" && git push

Lug'at

TerminIzoh
ArrayMassiv
ElementMassivdagi bitta qiymat
IndexElement raqami (0 dan)
Length / SizeMassiv hajmi
Out of boundsChegaradan tashqari
Static arrayHajmi belgilangan
sizeofHajmni topish

Keyingi dars

2-dars: Massivda qidiruv →

Master IT o'quv markazi — o'qitish rejasi