Toshkent axborot texnalogiyalari universiteti


Download 177.58 Kb.
Sana05.01.2023
Hajmi177.58 Kb.
#1080389
Bog'liq
2-mustaqil


MUHAMMAD AL-XORAZMIY NOMIDAGI
TOSHKENT AXBOROT TEXNALOGIYALARI UNIVERSITETI
SAMARQAND FILLIALI

KOMPIYUTER INJINERINGI FAKULTETI


KIS-21-02 GURUH TALABASI
XAYRULLAYEV JAVOXIRNING ‘’DASRURLASH’’ FANIDAN
2-MUSTAQIL ISHI

Mavzu: Matritsalarning Funksiya parametri sifatida qo’llanilishi.


Agar siz matritsalar bilan ishlasangiz, buning uchun strukturadan foydalanishingizni maslahat beraman. Birinchidan men haqiqiy matritsa ma’lumotlarini alohida tuzulmada saqlayman.
Matritsalar ushbu tuzilishga ishora qiladi (men buni egasi deb atayman) va u unga tegishli matritsalar sonini yozadi. Har bir matritsani sizga kerak bo'lmagandan keyin yo'q qilsangiz, egalari ham yo'q qilinadi va bu matritsalardan ikkitasi bir xil ma'lumotlarga tegishli bo'lgan holatlar haqida tashvishlanishingiz shart emas; hammasi juda oddiy kod bilan to'g'ri ishlanadi. Haqiqiy matritsa satr va ustun qadamlariga ega; bu matritsa elementlarining manzillari muntazam bo'lsa, xotirada ketma-ket bo'lishi shart emasligini anglatadi. Siz standart C ikki o'lchovli massivlarga mos keladiganini yaratishingiz mumkin, lekin ma'lumotni nusxa ko'chirmasdan ham matritsani ko'chirishingiz mumkin.

Va Keyin:


m matritsadagi (m matritsasi m sifatida eʼlon qilingan) r satr c ustunidagi elementga kirish uchun siz dan foydalanasiz. m.origin[r*m.rowstride + c*m.colstride] Agar m matritsaga koʻrsatgich boʻlsa, matritsa *m;, siz foydalanasiz m->origin[r*m->rowstride + c*m->colstride] Ikkala holatda ham 0 ≤ r < satrlar, 0 ≤ c < ko‘priklar. Men bunday tuzilmalarni yaratish va boshqarish bo'yicha o'z funktsiyalarimni e'lon qilishdan bosh tortmayman, lekin o'ylaymanki, ular boshlang'ich dasturchilar uchun unchalik foydali emas. Buning oʻrniga, siz oʻz funksiyalaringizni boshlangʻich elementga (men buni asl deb atayman), satrlar soni (satrlar), ustunlar soni (kollar), bir ustundagi elementlar orasidagi pozitsiyalar soni, lekin ketma-ket qatorlar ( rowstride) va bir qatordagi elementlar orasidagi pozitsiyalar soni, lekin ketma-ket ustunlar (kolstrid). Masalan

lekin shuni yodda tutingki, agar siz kodni katta matritsalar uchun ishlashni rejalashtirmoqchi boʻlsangiz, rowstride va colstride long (yoki ssize_t) turida boʻlishi kerak, chunki int barcha arxitekturada massiv oʻlchamlarini saqlash uchun yetarlicha katta emas. Aslini olganda, kolstrid bu bir qatordagi keyingi ustunga oʻtish uchun massivda oldinga oʻtish kerak boʻlgan elementlar soni (orqaga boʻlsa manfiy). rowstride bu bir xil ustundagi keyingi qatorga oʻtish uchun massivda oldinga (agar orqaga boʻlsa manfiy) oʻtish kerak boʻlgan elementlar soni. C satrning asosiy tartibini ishlatganligi sababli, oddiy 2D massivlar uchun rowstride har bir satrdagi elementlar soni (massiv kengligi) va kolstrid 1 dir. Yuqoridagilardan qanday foydalanishga misol:






Ya'ni Kolistrid nolga teng, chunki faqat bitta ustun mavjud va satr chizig'i bir qator pastga va bitta ustunni unga siljitish uchun yetarlicha katta ya'ni massivdagi ustunlar saoni +1 teng.
Download 177.58 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling