Toshkent axborot texnalogiyalar universiteti farg’ona filiali 715-22 guruh talabasi




Download 159.45 Kb.
Pdf ko'rish
Sana29.03.2024
Hajmi159.45 Kb.
#181342
Bog'liq
DASTURLASH MUSTAQIL ISH
Bolalarning maktabga psixologik tayyorgarligi, Zokirov Dasturlash xx, Роль компьютера в жизни современного человека, Шахсий компютернинг асосий компонентларилот, Kompyuterni tashkil etilishining mantiqiy asoslari, 40 IELTS Listening Tests - Section 3 (with answers), Murodali, 4-deadline, Deadline 3(21-30), Zbekiston respublikasi axborot texnologiyalari va kommunikatsiya, 1 амалий машгулотга топширик, 2 амалий машгулотга топширик, 1-mavzu Qattiq jismlarda diffuziya xodisasi, round-up-0, 5G security


 
 
 
TOSHKENT AXBOROT TEXNALOGIYALAR 
 
UNIVERSITETI FARG’ONA FILIALI 
 
715-22 GURUH TALABASI 
 
IBROHIMOVA ODINANING 
 
DASTURLASH 
 
FANIDAN TAYYORLAGAN 
 
MUSTAQIL ISHI 
 
 
 
 
 
 
 
 
 

TAYYORLADI: IBROHIMOVA . O 
TEKSHIRDI: JO’RAYEVA. G
 
 
 
 
 
 
 
 
FARG’ONA 2024 


 
Mavzu : Bir o`lchovli massivlarni funksiya
parametrlari 
 
Reja: 
 
1. Bir o’lchovli massivlar
 
2. Massivlarni navlarga ajratish 
 
3.
 
Umumiy massiv algoritmlari
 
 


1 Bir o’lchovli massivlar 15.2 Massivlarni navlarga ajratish Kalit so’zlar:, 
ro’yxat, manzil, nolinchi ko’rchsatkich, tugun, adres olish &, bo’shatish, 
ko’rsatkich, virtual destruktor, xotira, xotira chiqishi, destruktor, toifani 
o’zlashtirish, resurslar chiqishi, a’zo destruktori. 15.1. Bir o’lchovli massivlar 
Massiv tushunchasi. Massiv bu bir turli nomerlangan ma’lumotlar jamlanmasidir. 
Massiv indeksli o’zgaruvchi tushunchasiga mos keladi. Massiv ta’riflanganda turi, 
nomi va indekslar chegarasi ko’rsatiladi. Masalan, type turidagi length ta 
elementdan iborat a nomli massiv shunday e’lon qilinadi: type a[length]; Bu maxsus 
a[0], a[1], ..., a[length -1] nomlarga ega bo’lgan type turidagi o’zgaruvchilarning 
e’lon qilinishiga to’g’ri keladi. Massivning har bir elementi o’z raqamiga - indeksga 
ega. Massivning x-nchi elementiga murojaat indekslash operasiyasi yordamida 
amalga oshiriladi: int x = ...; //butun sonli indeks TYPE value = a[x]; //x-nchi 
elementni o‘qish a[x] = value; //x- elementga yozish Indeks sifatida butun tur 
qiymatini qaytaradigan har qanday ifoda qo’llanishi mumkin: char, short, int, long. 
C da massiv elementlarining indekslari 0 dan boshlanadi (1 dan emas), length 
elementdan iborat bo’lgan massivning oxirgi elementining indeksi esa - bu length -
1 (length emas) ga teng. Massivning int z[3] shakldagi ta’rifi, int turiga tegishli 
z[0],z[1],z[2] elementlardan iborat massivni aniqlaydi. Massiv chegarasidan 
tashqariga chiqish (ya’ni mavjud bo’lmagan elementni o’qish/yozishga urinish) 
dastur bajarilishida kutilmagan natijalarga olib kelishi mumkin. Shuni ta’kidlab 
o’tish lozimki, bu eng ko’p tarqalgan xatolardan biridir. Agar massiv inisializasiya 
qilinganda elementlar chegarasi ko’rsatilgan bo’lsa, ro’yxatdagi elementlar soni bu 
chegaradan kam bo’lishi mumkin, lekin ortiq bo’lishi mumkin emas. Misoluchun int 


a[5] = {2,-2}. Buholda a[0] va a[1] qiymatlarianiqlanganbo’lib, mosholda 2 va –2 
gateng. 
Agarmassivuzunligigaqaragandakamroqelementberilganbo’lsa, 
qolganelementlar 0 hisoblanadi: int a10[10] = {1, 2, 3, 4}; //va 6 ta nol Agar 
nomlangan massivning tavsifida uning o’lchamlari ko’rsatilmagan bo’lsa, 
kompilyator tomonidan massiv chegarasi avtomatik aniqlanadi: 
15.2 Massivlarni navlarga ajratish Navlarga ajratish - bu berilgan ko’plab 
ob’ektlarni biron-bir belgilangan tartibda qaytadan guruhlash jarayoni. 
Massivlarning navlarga ajratilishi tez bajarilishiga ko’ra farqlanadi. Navlarga 
ajratishning n*n ta qiyoslashni talab qilgan oddiy usuli va n*log(n) ta qiyoslashni 
talab qilgan tez usuli mavjud. Oddiy usullar navlarga ajratish tamoyillarini 
tushuntirishda qulay hisoblanadi, chunki sodda va kalta algoritmlarga ega. 
Murakkablashtirilgan usullar kamroq sonli operasiyalarni talab qiladi, biroq 
operasiyalarning o’zi murakkabroq, shuning uchun uncha katta bo’lmagan massivlar 
uchun oddiy usullar ko’proq samara beradi. Oddiy usullar uchta asosiy kategoriyaga 
bo’linadi: - oddiy kiritish usuli bilan navlarga ajratish; - oddiy ajratish usuli bilan 
navlarga ajratish; - oddiy almashtirish usuli bilan navlarga ajratish. Oddiy kiritish 
usuli bilan navlarga ajratish Massiv elementlari avvaldan tayyor berilgan va 
dastlabki ketmaketliklarga bo’linadi. i = 2 dan boshlab, har bir qadamda dastlabki 
ketmaketlikdan i-nchi element chiqarib olinadi hamda tayyor ketma-ketlikning 
kerakli o’rniga kiritib qo’yiladi. Keyin i bittaga ko’payadi va h.k. Kerakli joyni 
izlash jarayonida, ko’proq o’ngdan bitta pozisiyadan tanlab olingan elementni 
uzatish amalga oshiriladi, ya’ni tanlab olingan element, j: = i-1 dan boshlab, navlarga 
ajratib bo’lingan qismning navbatdagi elementi bilan qiyoslanadi. Agar tanlab 


olingan element a[i] dan katta bo’lsa, uni navlarga ajratish qismiga qo’shadilar, aks 
holda a[j] bitta pozisiyaga suriladi, tanlab olingan elementni esa navlarga ajratilgan 
ketma-ketlikning navbatdagi elementi bilan qiyoslaydilar. To’g’ri keladigan joyni 
qidirish jarayoni ikkita turlicha shart bilan tugallanadi: agar a[j]>a[i] elementi 
topilgan bo’lsa; agar tayyor ketma-ketlikning chap uchiga bo’lsa. int i, j, x; for(i = 
1; i < n; i++) { x = [i]; // kiritib qo‘yishimiz lozim bo‘lgan elementni esda saqlab 
qolamiz j = i - 1; while(x = 0)//to‘g‘ri keladigan joyni qidirish } a[j+1] = 
a[j]; //o‘ngga surish j--; } a[j+1] = x; //elementni kiritish } Oddiy tanlash usuli bilan 
navlarga ajratish Massivning minimal elementi tanlanadi hamda massivning birinchi 
elementi bilan joy almashtiriladi. Keyin jarayon qolgan elementlar bilan takrorlanadi 
va h.k. int i, min, n_min, j; for(i = 0; i < n-1; i++) { min = a[i]; n_min = i; //minimal 
qiymatni qidirish for(j = i + 1; j < n; j++) if(a[j] < min){min = a[j]; n + min = j;} 
a[n_min] = a[i]; //almashtirish a[i] = min; } Oddiy almashtirish usuli bilan navlarga 
ajratish Elementlar juftlari oxirgisidan boshlab qiyoslanadi va o’rin almashinadi. 
Natijada massivning eng kichik elementi uning eng chapki elementiga aylanadi. 
Jarayon massivning qolgan elementlari bilan davom ettiriladi. for(int i = 1; i < n; 
i++) for(int j = n - 1; j > = i; j— if(a[j] < a[j-1]) {int r = a[j]; a[j] = a[j-1]; a[j - 1] = 
r;} } Bir o’lchamli massivlarni funksiya parametrlari sifatida uzatish. Massivdan 
funksiya parametri sifatida foydalanganda, funksiyaning birinchi elementiga 
ko’rsatkich uzatiladi, ya’ni massiv hamma vaqt adres bo’yicha uzatiladi. Bunda 
massivdagi elementlarning miqdori haqidagi axborot yo’qotiladi, shuning uchun 
massivning o’lchamlari haqidagi ma’lumotni alohida parametr sifatida uzatish 
kerak. Umumiy massiv algoritmlari Quyidagi bo’limlarda biz, qiymatlar ketma- 


ketligini qayta ishlash uchun ba’zi eng keng tarqalgan algoritmlarni muhokama 
qilamiz.Biz algoritmlarni shunday taqdim etamizki, siz ularni to’liq va qisman 
to’ldirilagan massivlar hamda (6.7 bo’limda tanishtiradigan)vektorlar yordamida 
foydalanishingiz mumkin.Qiymatlar miqdori (size of values) ifodasini 
ishlatganimizda, siz uni massivda elementlar miqdorini anglatuvchi doimiy yoki 
o’zgaruvchan bilan almashtirishingiz kerak. ( yoki values.size() if values is a vector 
ifodasi.) Elementni olib tashlash Joriy miqdori o’zgaruvchan joriy miqdorda 
saqlanovchi qisman to’ldirilgan massiv miqdorini ko’rib chiqamiz. Deylik, siz pos 
indeksli elementni qiymatdanolib tashlamoqchisiz.Agar elementlar hyech qanday 
aniq tartibda bo’lmasa, buvazifani amalag oshirish yengil kechadi.Shunchaki, oxirgi 
elementdan olibtashlangan elementni qaytadan yozing.So’ng, miqdorni kuzatuvchi 
o’zgaruvchinikamaytiring. (6 - shaklga qarang). values[pos] = values[current_size - 
1]; current_size--; Agar elementlar tartibi muhim bo’lsa vaziyat yanada 
murakkablashadi. Bundayholda siz barcha elementlarni keyingi indeksi pastroq 
elementgaalmashtirishingiz kerak.So’ng massivni miqdorini saqlagan holda 
o’zgaruvchinikamaytirishingiz kerak. 


Dastur kodi : 
#include  
void funksiya(int arr[], int uzunlik) { 
for (int i = 0; i < uzunlik; i++) { 
std::cout << arr[i] << " "; 


int main() { 
int massiv[] = {1, 2, 3, 4, 5}; 
int uzunlik = sizeof(massiv) / sizeof(massiv[0]); 
funksiya(massiv, uzunlik); 
return 0; 

Dastur natijasi: 



Download 159.45 Kb.




Download 159.45 Kb.
Pdf ko'rish

Bosh sahifa
Aloqalar

    Bosh sahifa



Toshkent axborot texnalogiyalar universiteti farg’ona filiali 715-22 guruh talabasi

Download 159.45 Kb.
Pdf ko'rish