Massivlar Massiv – bir XIL tipdagi elementlar guruhi bo‘lib, bitta umumiy nom va xotiraga EGA
Sana 25.01.2022 Hajmi 1,39 Mb. #409163
Bog'liq
Massivlar
Massiv tushunchasi. Statik massivlar. Dinamik massivlar. Massiv – bir xil tipdagi elementlar guruhi bo‘lib, bitta umumiy nom va xotiraga ega. Xossalari: Barcha elementlari bitta tipga ega Massiv bitta nomga ega Barcha elementlar xotirada ketma-ket joylashtirilgan Misollar: o‘quvchilar ro‘yxati ko‘p qavatli uydagi xonadonlar shahardagi universitetlar Yil bo‘yicha havoning temperaturasi massiv elementi NOMERI (INDEKS) massiv elementi NOMERI (INDEKS) : 2 massiv elementi QIYMATI: 15 C++ da massiv elementlari NOLdan boshlanadi! Nima uchun e’lon qilinadi ? Massiv nomini aniqlash uchun Massiv tipini aniqlash uchun Elementlar sonini aniqlash uchun Xotiradan joy ajratish uchun Misol: O‘lchamni konstanta orqali kiritish: Massiv o‘lchami (elementlar soni) int X[10], Y[10]; float zz, A[20]; char s[80] ; Boshlang‘ich qiymatlarni berish: int A[4] = { 8, -3, 4, 6 }; float B[2] = { 1. }; char C[3] = { 'A', '1', 'Ю' }; Agarda boshlang‘ich qiymatlar berilmagan bo‘lsa, elementlari ixtiyoriy keraksiz qiymat olishi mumkin! float X[5]; int n = 1; X[n-2] = 4.5; X[n+8] = 12.; Massiv chegarasidan chiqish (ma’lumotlar xotiradan o‘chiriladi) Kasr qismi olib tashlanadi (xatolik yo‘q) float B[2] = { 1., 3.8, 5.5 }; E’lon qilish: Klaviaturadan kiritish: Element bo‘yicha amallar : Ekranga chiqarish: const int N = 5; int A[N], i; cout<<“Massivni 5 ta elementini kiriting:\n”; for( i=0; i < N; i++ ) { cout<<"A[i] = ", i ; cin>> A[i] ; } A[0] = A[1] = A[2] = A[3] = A[4] = for( i=0; i < N; i++ ) A[i] = A[i]*2; cout<<“Natija:\n”; for( i=0; i < N; i++ ) cout<< A[i]<<“ ”; #include #include main() { const int N = 5; int A[N], i; // массив элементларини киритиш // массивларни қайта ишлаш // натижаларни чиқариш getch(); } Masala: Klaviaturadan massivni 5 ta elementini kiriting va ularni barchasini 2 ga ko‘paytiring hamda hosil bo‘lgan yangi massivni chiqaring. «4»: Klaviaturadan massivni 5 ta elementini kiriting va ularni o‘rta arifmetigini toping. Misol: 5 ta son kiriting: 4 15 3 10 14 o‘rta arifmetigi 9.200 «5»: Klaviaturadan massivni 5 ta elementini kiriting va ularni eng kichigini toping. Misol: 5 ta son kiriting : 4 15 3 10 14 eng kichigi 3 Masala: Massivni eng katta elementni toping . Algoritm: // eng katta element deb A[0] – ni olamiz for ( i=1; i < N; i++ ) if ( A[i] > eng kattasi) // A[i] ning yangi eng katta elementini saqlash Tasodifiy sonlar bilan to‘ldirish RAND_MAX – eng katta ixtiyoriy butun son (оdatda RAND_MAX = 32767) [0,RAND_MAX] intervaldagi butun sonlar x = rand(); // birinchi son x = rand(); // endi boshqa son Ketma-ketlikni boshlang‘ich qiymatini o‘rnatish : srand ( 345 ); // 345 dan boshlanadi #include // ixtiyoriy son Tasodifiy sonlar bilan to‘ldirish #include #include main() { const int N = 10; int A[N], i; printf(“Massiv:\n"); for (i = 0; i < N; i++ ) { A[i] = random(100) + 50; cout< } ... } int random(int N) { return rand() % N; } Funktsiya 0 dan N-1 gacha bo‘lga ixtiyoriy sonlarni chiqaradi #include #include main() { const int N = 5; int A[N], i, iMax; // [100,150] ixtiyoriy sonlarni kiriting //eng katta element va uni nomerini toping printf("\nEng katta element A[%d] = %d", iMax, A[iMax]); getch(); } Мasala: massiv elementlarini teskari tartibda chiqaring (inversiyani qo‘llang). Аlgoritm: Joylarini almashtir A[0] ва A[N-1] , A[1] ва A[N-2], … for ( i = 0; i < N; i++ ) // A[i] ва A[N-1-i] o‘rinlarini almashtirish Qanday almashtirish mumkin? Masala: Ikkita piyolani o‘rnini almashtirish. Маsala: Ikkita katakni xotiradagi joyini almashtirish. C siz ham amalga oshirish mumkin? main() { const int N = 10; int A[N], i, c; // Massivni to‘ldirish // joriy massivni kiritish for ( i = 0; i < N/2; i++ ) { c = A[i]; A[i] = A[N-1-i]; A[N-1-i] = c; } // olingan massivni chiqarish } har bir o‘zgaruvchining nomi (massiv) bo‘ladi, o‘sha nom vositasida unga murojaat qilinadi. o‘lchami oldindan ma’lum (dastur tuzayotganda aniqlanadi) xotira e’lon qilinganda ajratiladi dastur ishlash davomida o‘lchamni o‘zgartirish mumkin emas. int x, y = 20; float z, A[10]; char str[80]; o‘lchami oldindan noaniq, dastur ishlashi davomida aniqlanadi. xotira dastur ishlash davomida ajratiladi. Muammo: agar berilganlarning nomi bo‘lmasa ularga qanday murojaat qilamiz? Yechim: xotiradagi adresi orqali. Muammo: 1) qanday o‘zgaruvchilarda adresni saqlash mumkin ? 2) adreslar bilan qanday ishlanadi? Massiv toifasi *massiv nomi; Masalan: float *a, *b; Bunda haqiqiy sonlardan tashkil topgan a nomli bir o‘lchovli massiv e’lon qilinmoqda. Massiv uzunligi new protsedurasi yordamida aniqlanishi lozim. Masalan, a=new float[4] ; Bunda a nomli massiv uchun operativ xotiradan 0 dan 3 gacha bo‘lgan 4 ta joy ajratilmoqda. ni hisoblash dasturini tuzing. #include #include using namespace std; int main () { float *x, *y, a; int i,n; cout<<"a="; cin>>a; cout<<"n="; cin>>n; x=new float[n]; y=new float[n]; cout< for (i=0; i cout<<"x["<>x[i];} for (i=0; i { y[i]=pow(sin(x[i]),2)+3*a; cout<<"y["< } return 0; } Masala. Massiv o‘lchamini kiriting va uning elementlarini kiriting. Massivni tartiblang va uni ekranga chiqaring. Muammo : massiv o‘lchami oldindan ma’lum emas. yechish usullari : Xotirani ortig‘i bilan ajratish Xotirani o‘lchov aniq bo‘lganda keragicha ajratish. Algoritm: Massiv o‘lchovini kiritish; Xotira ajratish ; Massiv elementlarini kiritish; Massivni tartiblash va ekranga chiqarish ; Massivni xotiradan o‘chirish. #include void main() { int *A, N; printf (“Massiv o’lchovini kiriitng > "); scanf ("%d", &N); A = new int [N]; if ( A == NULL ) { printf(“хотира ажратишда муаммо"); return; } for (i = 0; i < N; i ++ ) { printf ("\nA[%d] = ", i+1); scanf ("%d", &A[i]); } ... delete pI; } for (i = 0; i < N; i ++ ) { printf ("\nA[%d] = ", i+1); scanf ("%d", &A[i]); } oddiy massiv kabi ishlaydi! if ( A == NULL ) { printf(“xotira ajratish muammo"); return; } Do'stlaringiz bilan baham: