25 / 90

C++ Arrays

C++ massivlari

C++ tilida massiv bir xil turdagi bir nechta qiymatlarni saqlashi mumkin bo'lgan o'zgaruvchidir. Masalan,

Aytaylik, sinfda 27 o'quvchi bor va biz ularning barcha baholarini saqlashimiz kerak. 27 ta alohida o'zgaruvchini yaratish o'rniga, biz oddiygina massiv yaratishimiz mumkin:

example.cpp
double grade[27];

Bu yerda grade double tipidagi maksimal 27 ta elementni sig‘dira oladigan massivdir.

C++ da massivlarning o‘lchami va turini uning e’lon qilinganidan keyin o‘zgartirib bo‘lmaydi.

C++ massiv deklaratsiyasi

example.cpp
dataType arrayName[arraySize];

Masalan,

example.cpp
int x[6];

Bu yerga,

  • int - type of element to be stored
  • x - massiv nomi -6 - massivning o'lchami

C++ massividagi elementlarga kirish

C++ tilida massivdagi har bir element raqam bilan bog'langan. Raqam massiv indeksi sifatida tanilgan. Biz ushbu indekslar yordamida massiv elementlariga kirishimiz mumkin.

example.cpp
// massiv elementlariga kirish uchun sintaksis
array[index];

Yuqorida ko'rgan x massivni ko'rib chiqing.

Elements of an array in C++

C++ Array Declaration

Eslash kerak bo'lgan bir nechta narsa:

  • Massiv indekslari 0 dan boshlanadi. Ma’nosi x[0] 0 indeksida saqlanadigan birinchi elementdir.
  • Agar massivning o'lchami n bo'lsa, oxirgi element (n-1) indeksida saqlanadi. Bu misolda x[5] oxirgi element hisoblanadi.
  • Massivning elementlari ketma-ket manzillarga ega.

Masalan, x[0] ning boshlang'ich manzili 2120 deylik. Keyin, keyingi x[1] elementining manzili 2124, x[2] manzili 2128 bo'ladi va hokazo. Bu yerda har bir elementning hajmi 4 ga oshiriladi. Buning sababi int hajmi 4 bayt.

C++ massivni ishga tushirish

C++ da deklaratsiya paytida massivni ishga tushirish mumkin. Masalan,

example.cpp
// 
int x[6] = {19, 10, 8, 17, 9, 15};

C++ Array elements and their data

C++ Array Initialization

Deklaratsiya paytida massivni ishga tushirishning yana bir usuli:

example.cpp
// 
int x[] = {19, 10, 8, 17, 9, 15};

Bu erda biz massivning o'lchamini eslatmadik. Bunday hollarda kompilyator o'lchamni avtomatik ravishda hisoblab chiqadi.

Bo'sh a'zolar bilan C++ massivi

C++ da, agar massiv n o'lchamiga ega bo'lsa, biz massivda n tagacha elementlarni saqlashimiz mumkin. Biroq, agar biz n dan kamroq elementlarni saqlasak nima bo'ladi.

Masalan,

example.cpp
// massivda faqat 3 ta elementni saqlang
int x[6] = {19, 10, 8};

Bu erda x massivi 6 o'lchamiga ega. Biroq, biz uni faqat 3 elementlari bilan ishga tushirdik.

Bunday hollarda kompilyator qolgan joylarga tasodifiy qiymatlarni belgilaydi. Ko'pincha, bu tasodifiy qiymat oddiygina 0 dir.

Massivning bo'sh a'zolariga avtomatik ravishda 0 qiymati beriladi

C++ Array with empty members

Massiv elementlarini qanday kiritish va chop etish kerak?

example.cpp
int mark[5] = {19, 10, 8, 17, 9}

// 4-elementni 9 ga o'zgartiring
mark[3] = 9;

// foydalanuvchidan ma'lumot oling
// qiymatni uchinchi holatda saqlang
cin >> mark[2];

// foydalanuvchidan ma'lumot oling
// i holatiga kiriting
cin >> mark[i-1];

// massivning birinchi elementini chop eting
cout << mark[0];

// massivning uchinchi elementini chop eting
cout >> mark[i-1];

1-misol: Massiv elementlarini ko'rsatish

example.cpp
#include <iostream>
using namespace std;

int main() {

  int numbers[5] = {7, 5, 6, 12, 35};

  cout << "The numbers are: ";

  // Massiv elementlarini chop etish
  // for loop asosidagi diapazondan o'tkazish
  for (int n : numbers) {
    cout << n << "  ";
  }

  cout << "\nThe numbers are: ";

  // Massiv elementlarini chop etish
  // an'anaviy for loop va jo'natish
  for (int i = 0; i < 5; ++i) {
    cout << numbers[i] << "  ";
  }

  return 0;
}

Chiqish

kod
The numbers are: 7  5  6  12  35
The numbers are: 7  5  6  12  35

Bu erda biz i = 0 dan i = 4 ga takrorlash uchun for loop dan foydalandik. Har bir iteratsiyada biz numbers[i] ni chop etdik.

Massiv elementlarini chop etish uchun biz yana diapazonga asoslangan for siklidan foydalandik. Ushbu sikl haqida ko'proq bilish uchun C++ Ranged for Loop ni tekshiring.

2-misol: Foydalanuvchidan ma'lumotlarni oling va ularni massivda saqlang

example.cpp
#include <iostream>
using namespace std;

int main() {

  int numbers[5];

  cout << "Enter 5 numbers: " << endl;

  // foydalanuvchidan massivga kirishni saqlash
  for (int i = 0; i < 5; ++i) {
    cin >> numbers[i];
  }

  cout << "The numbers are: ";

  // massiv elementlarini chop etish
  for (int n = 0; n < 5; ++n) {
    cout << numbers[n] << "  ";
  }

  return 0;
}

Chiqish

kod
Enter 5 numbers: 
11
12
13
14
15
The numbers are: 11  12  13  14  15

Yana bir bor, biz i = 0 dan i = 4 ga takrorlash uchun for siklidan foydalandik. Har bir iteratsiyada biz foydalanuvchidan ma'lumot oldik va uni numbers[i] da saqladik.

Keyin, biz massivning barcha elementlarini chop etish uchun boshqa for siklidan foydalandik.

C++ massivi chegaradan tashqarida

Agar biz 10 o'lchamli massivni e'lon qilsak, u holda massiv indeks 0 dan 9 gacha bo'lgan elementlarni o'z ichiga oladi.

Biroq, agar biz 10 yoki 10 dan ortiq indeksdagi elementga kirishga harakat qilsak, bu aniqlanmagan xatti-harakatlarga olib keladi.

Ushbu turdagi xatolik, biz normal for siklidan foydalanganimizda va massiv elementiga [] operatori yordamida kirishimiz mumkin.

[!NOTE] Ushbu turdagi xatolarni bartaraf qilish uchun biz range based for loop ni afzal ko'rishimiz kerak, bu erda massiv elementlariga kirish uchun bunday operatorlar kerak emas.

3-misol: For Loop yordamida massiv elementlarining yig‘indisi va o‘rtacha qiymatini ko‘rsatish

example.cpp
#include <iostream>
using namespace std;

int main() {
    
  // massivni o'lchamni ko'rsatmasdan ishga tushirish
  double numbers[] = {7, 5, 6, 12, 35, 27};

  double sum = 0;
  double count = 0;
  double average;

  cout << "The numbers are: ";

  // massiv elementlarini chop etish
  // diapazonga foydalanish uchun loopdan jo'natish
  for (const double &n : numbers) {
    cout << n << "  ";

    // summasini hisoblang
    sum += n;

    // raqamni hisoblang. massiv elementlaridan
    ++count;
  }

  // summani chop eting
  cout << "\nTheir Sum = " << sum << endl;

  // o'rtachani toping
  average = sum / count;
  cout << "Their Average = " << average << endl;

  return 0;
}

Chiqish

kod
The numbers are: 7  5  6  12  35  27
Their Sum = 92
Their Average = 15.3333

Ushbu dasturda:

  1. Biz raqamlar deb nomlangan double massivini ishga tushirdik, lekin uning hajmini ko'rsatmasdan. Shuningdek, biz uchta double o'zgaruvchisini e'lon qildik: sum, count va o'rtacha. Bu erda sum =0 va count = 0 .
  2. Keyin massiv elementlarini chop etish uchun diapazonga asoslangan for siklidan foydalandik. Davrning har bir iteratsiyasida biz joriy massiv elementini summaga qo'shamiz.
  3. Shuningdek, biz har bir iteratsiyada hisoblash qiymatini 1 ga oshiramiz, shunda massiv hajmini for siklining oxiriga qadar olishimiz mumkin. 4.Barcha elementlarni chop etgandan so'ng, biz barcha raqamlarning yig'indisini va o'rtachasini chop etamiz. Raqamlarning o'rtacha qiymati average = sum / count; tomonidan berilgan

Shuningdek oʻqing