2. 2§. Indeksatorning turi va uning parametrlari turlari haqida
Asosiy massivsiz indeksatorlar. Indeksatorlarni ortiqcha yuklash
Download 0.67 Mb.
|
19.08 A Tojiyeva Saboxon Dasturlash kurs ishi
- Bu sahifa navigatsiya:
- 2.5§.Indeksator va xossalar yordamida misollar yechish.
- 3. Int qiymatini qaytaradigan bir olchovli indeksatorni elon qilish misoli
- Bir indeks bolgan bir olchovli elon 4. misol char turiga amalga oshirilmoqda.
- 5. Ikki olchovli indeksatorni elon qilish misoli
- 6. Uch olchovli indeksatorni elon qilish misoli
- 7. Indeksatorlardan tayanch massivsiz foydalanish xususiyatlari qanday
- 8. Indeksatorni oz ichiga olgan, lekin bazaviy qatorni oz ichiga olmagan sinf deklaratsiyasiga misol. N-Fibonachchi sonining qiymatini hisoblash
- 9. Indeksatorning ortiqcha yuklanishi nima deyiladi
- 10. Haddan tashqari yuklangan indeksatorlardan foydalanadigan sinf deklaratsiyasiga misol
Asosiy massivsiz indeksatorlar. Indeksatorlarni ortiqcha yuklashIndexer burchakli Qavslar foydalanib, bir qator kabi indeksi bir ob'ekt imkonini beradi C # tili xususiyati hisoblanadi [] . Indeksatorlardan foydalanib, siz turli xil cheklovlarga duch keladigan o'zingizning ixtisoslashtirilgan massivlaringizni amalga oshirishingiz mumkin. Indeksatorlarni dasturlarda ishlatish uchun indeksatorni o'z ichiga olgan sinfni e'lon qilishingiz kerak. Sinf ichki qatorga ega bo'lishi mumkin, uning elementlariga indeksator yordamida kirish mumkin. Sinfni indeksator bilan e'lon qilgandan so'ng, siz ushbu sinf ob'ektini massiv sifatida ishlatishingiz mumkin (kvadrat qavslardan foydalanib [] ). Indeksatordan foydalanish uchun uni ommaviy deb e'lon qilish kerak. Massivlar singari indeksatorlar ham bir o'lchovli yoki ko'p o'lchovli bo'lishi mumkin. Ba'zi bir sinflarda indeksatorni e'lon qilishning umumiy shakli: yozing , bu [ type_index indeks ] { olish { // indeksdagi qiymatni qaytaradigan kod // ... } o'rnatilgan { // qiymatni indeks bo'yicha belgilaydigan kod // ... } } Indeksator turlari. tip - indeksator elementining turi; indeks - elementga erishilgan massivdagi indeks yoki pozitsiya; type_index - indeksatorning indeks turi (pozitsiyasi). Odatda, bu int turi. Biroq, boshqa turlarga ruxsat beriladi (masalan, ikkilamchi , char ); bu indeksator amalga oshirilgan berilgan sinfga havola; get , set - mos ravishdaelementning qiymatinio'qish ( olish ) va elementga qiymatini yozish ( set ). 2.5§.Indeksator va xossalar yordamida misollar yechish.Bir-o'lchovli indeksator e'lon 2. misol, deb qaytib bir char qiymatiBir o'lchovli indeksator bir o'lchovli massivga to'g'ri keladi. Misol indeksatorni o'z ichiga olgan CharArray sinfini e'lon qiladi . // CharArray indeksator sinfini o'z ichiga olgan sinf { char [] A; // class constructor public CharArray ( int size) { agar (hajmi> 26) hajmi = 26; A = yangi char [size]; uchun ( int i = 0; i } // indeksatorni umumiy char deb e'lon qilish [ int index] { get // pozitsiya indeksidan o'qing { if ((index> = 0) && (index aks holda "A" qaytish ; } set // pozitsiya indeksiga yozish { agar ((indeks> = 0) && (indeks } } } Yuqoridagi kod char elementlarining qiymatini qaytaradigan indeksatorni e'lon qiladi . Indeks qiymatlari int turiga ega . Indeksator ikkita kirishni amalga oshiradi: get , set . Aksessuarlarni amalga oshirish tanasida [0 .. Size-1] oralig'idan tashqaridagi indeksni tekshirish amalga oshiriladi . Boshqa dastur kodlarida sinfdan foydalanishni namoyish etish ... // CharArray sinfidan foydalanib CharArray cA = new CharArray (15); // 15 belgidan iborat massiv char c; c = cA [0]; // c = 'A' c = cA [3]; // c = 'D' c = cA [10]; // c = 'K' c = cA [14]; // c = 'O' c = cA [15]; // c = 'A' - c = cA doirasidan tashqariga kirishga urinish [30]; // c = 'A' - doiradan tashqariga kirishga urinish cA [3] = 'Z' ; c = cA [3]; // c = 'Z' cA [30] = 'X' ; // ruxsat berilgan, lekin aksessuarlar to'plamida bloklangan {...} c = cA [30]; // c = 'A' ... 3. Int qiymatini qaytaradigan bir o'lchovli indeksatorni e'lon qilish misoliMisol, int qiymatini qaytaradigan bir o'lchovli indeksatorni o'z ichiga olgan sinfni amalga oshiradi . Indeksatorda indekslarning turi ham int . // Indexer olgan sinf darslarini IntArray { int [] qator; // qator umumiy IntArray ( int hajmi) { // Array massivi uchun xotira ajratish = new int [size]; // uchun qatorni bekor qilish ( int i = 0; i } // public int indexer bu [ int index] { // accessors get { return Array [index]; } set {Array [index] = qiymat ; } } } Boshqa dastur kodlarida IntArray sinfidan foydalanish // IntArray sinfidan foydalaning IntArray iA = yangi IntArray (100); int i; int d; // for indexer orqali massivni qiymatlar bilan to'ldirish (i = 0; i <100; i ++) iA [i] = i * i + 1; d = iA [3]; // d = 10 d = iA [25]; // d = 626 iA [25] = 15; d = iA [25]; // d = 15 Bir indeks bo'lgan bir o'lchovli e'lon 4. misol char turiga amalga oshirilmoqda.Indeksatorda indeksning turi tamsayı bo'lishi shart emas. Shuningdek, indeksning boshqa turini e'lon qilishingiz mumkin, masalan double , char . Ammo bu holda ichki massivdan foydalanganda indeks turini boshqa turdan ( double , char , ...) int turiga o'tkazish kerak bo'ladi . Quyidagi misol indeksatori char raqami bo'lgan sinfda indeksatordan foydalanishni namoyish etadi . Ushbu misol berilgan qatorda 'A' ... 'Z' lotin alifbosidagi belgilar sonini hisoblashni amalga oshiradi . // indeksator tarkibidagi indeks CharIndex tipidagi char sinf bo'lgan sinf { int [] qator; int hajmi; ommaviy CharIndex () { Hajmi = 26; Array = new int [Size]; uchun ( int i = 0; i } // public int indeksatori bu [ char belgisi] { olish { agar ((belgi> = 'A' ) && (belgi <= 'Z' )) Qaytish Array [( int ) (( int ) belgisi - ( int ) 'A' )]; qaytish 0; } o'rnatilgan { agar ((belgi> = 'A' ) && (belgi <= 'Z' )) Array [( int ) belgisi- ( int ) 'A' ] = qiymat ; } } } Yuqoridagi koddan ko'rinib turibdiki, get va set accessors-da , Array indekslari int turiga o'tkaziladi . Biroq, dastur kodidan CharIndex sinfining ob'ektiga char tipidagi indeks orqali kirish mumkin . Boshqa dastur kodlarida sinfdan foydalanish // CHARINDEX CHARINDEX sinfidan foydalaning cI = yangi CHARINDEX (); string s = "PROGRAMMALARDA KO'RSATUVCHILARNI FOYDALANISH" ; int d; int i; char c; // .. "Z" belgilar "A" sonini hisoblash uchun (i ++; i d = cI [ 'U' ]; // d = 1 d = cI [ 'A' ]; // d = 2 d = cI [ 'N' ]; // d = 4 d = cI [ 'I' ]; // d = 3 5. Ikki o'lchovli indeksatorni e'lon qilish misoliMasalan, ikki o'lchovli juftlik qatorini amalga oshiradigan ikki o'lchovli indeksator e'lon qilinadi . // TwoDimIndexes ikki o'lchovli indeksator sinfini amalga oshiruvchi sinf { ikki baravar [,] A; // int m, n elementlarning ichki massivi ; // massiv o'lchovi // constructor public TwoDimIndexes ( int _m, int _n) { m = _m; n = _n; A = yangi juftlik [m, n]; uchun ( int i = 0; i } // ikki o'lchovli indeksator jamoatchilik buni ikki baravar oshiradi [ int i, int j] { get { return A [i, j]; } belgilangan {A [i, j] = qiymat ; } } } TwoDimIndexes sinfidan ba'zi kodlarda foydalanish // TwoDimIndexes sinfidan foydalaning TwoDimIndexes dI = yangi TwoDimIndexes (3, 5); er-xotin x; // ( int i = 0; i <3; i ++) uchun ( int j = 0; j <5; j ++) uchun indeksator yordamida massiv hosil qilish dI [i, j] = i * 2 + j; x = dI [1, 3]; // x = 1 * 2 + 3 = 5 x = dI [2, 0]; // x = 4 6. Uch o'lchovli indeksatorni e'lon qilish misoliUch o'lchovli indeksatorni o'z ichiga olgan sinf e'lon qilindi // uch o'lchovli indeksator sinf ThreeDimIndexes deb e'lon qilingan sinf { juft [ ,, ] M; // int x, y, z uch o'lchovli massiv ; // massiv o'lchovi // public ThreeDimIndexes konstruktori ( int _x, int _y, int _z) { x = _x; y = _y; z = _z; // M M = new double [3, 4, 5] massivi uchun xotirani ajratish ; } // uch o'lchovli indeksator jamoatchilik buni ikki baravar oshiradi [ int i, int j, int k] { olish { bool fi, fj, fk; // qator indekslarining haqiqiy chegaralarini tekshiring fi = (i> = 0) && (i return M [i, j, k]; aks holda qaytarish 0.0; } o'rnatilgan { bool fi, fj, fk; // qator indekslarining haqiqiy chegaralarini tekshiring fi = (i> = 0) && (i M [i, j, k] = qiymat ; boshqa M [i, j, k] = 0,0; } } } Boshqa dastur kodlarida sinfdan foydalanish // sinfdan foydalaning ThreeDimIndexes ThreeDimIndexes dI = yangi ThreeDimIndexes (3, 4, 5); er-xotin x; // int i, j, k indeksatori yordamida massiv elementlari qiymatlarini shakllantirish ; for (i = 0; i <3; i ++) for (j = 0; j <4; j ++) for (k = 0; k <5; k ++) dI [i, j, k] = i * 2.5 + j * 2 + k; x = dI [0, 1, 3]; // x = 0 * 2.5 + 1 * 2 + 3 = 5.0 x = dI [1, 3, 2]; // x = 1 * 2.5 + 3 * 2 + 2 = 10.5 |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling