9. Satrlar va tuzilmalar
С-satr belgilariga kirish
Download 244.41 Kb.
|
09.Satrlar va tuzilmalar
С-satr belgilariga kirish. С-satr aniqlanganidan keyin o‘zgaruvchida birinchi belgining manzili saqlanadi. Ya’ni, o‘zgaruvchining nomi satrning birinchi belgisiga murojaat qiluvchi ko‘rsatkich hisoblanadi. Shu sababli, massiv elementiga kirish kvadrat qavs ichida ko‘rsatilgan indeks bo‘yicha (indeks noldan boshlanadi) yoki manzilli arifmetikadan foydalanilgan holda amalga oshirilishi mumkin. Masalan, quyidagi chiqarish ko‘rsatmalari ekvivalent:
char str[] = "String"; cout << str[1] << endl; // t cout << *(str+1) << endl; // t Bunday yo‘l bilan belgini nafaqat olish, balki o‘zgartirish ham mumkin: char str[] = "String"; str[0]='s'; // Indeks yordamida o'zgartirish *(str + 1)='Т'; // Ko'rsatkich yordamida o'zgartirish cout << str << endl; // sTring Alohida belgi qo‘shtirnoq ichida emas, balki apostroflar ichida ko‘rsatilishini e’tiborga olish lozim. Agar belgi qo‘shtirnoq ichida ko‘rsatilsa, bir belgi o‘rniga ikki belgi bo‘ladi: belgining o‘zi va hol belgi. Quyidagicha yo‘l bilan ko‘rsatkichni e’lon qilish va unga satr manzilini o‘zlashtirish mumkin: char *р = 0; char str[] = "String"; р = str; +р = 's'; ++р; // Ko'rsatkichni ikkinchi belgiga ko'chirish р = 'T'; cout << str << endl; // sTring E’tibor bering, satr nomidan oldin & operatori ko‘rsatilmadi, chunki o‘zgaruvchining nomi birinchi belgining manzilini oladi. agar operatordan foydalanilsa, u holda qo‘shimcha ravishda kvadrat qavs ichida indeksni ko‘rsagtish lozim. р = &str[0]; // р = str; ga ekvivalent Ko‘rsatkich nomlashda unga satr o‘zlashtirish mumkin. Bunday satrlarni o‘zgartirish tavsiya etilmaydi, shu sababli, odatda tipdan oldin const kalit so‘zi ko‘rsatiladi. Misol: const char *str = "String"; cout << str << endl; // String С-satr belgilarini saralash uchun for siklidan foydalanish qulay. Siklning brinchi parametrida o‘zgaruvchi-hisoblagichga nol ('0') qiymat o‘zlashtiriladi (satrda belgilar noldan boshlab tartiblanadi), satrdagi belgilar sonidan kam qiymat o‘zgaruvchi-hisoblagichning davom ettirish sharti hisoblanadi. Satrdagi belgilar sonini strlen() funksiyasi orqali olish mumkin. Funksiyaning prototipi: #include size_t strlen(const char *Str); strlen() funksiyasi nol belgini hisobga olmagan holda belgilar sonini qaytaradi. size_t tipi ishorasiz butun sifatida aniqlangan. for siklining uchinchi parametrida siklning har bir takrorlanishida (iteratsiya) bittaga orttirish ko‘rsatiladi. Satrning barcha belgilarini to‘g‘ri va teskari tartibda chiqarish dasturi kodini yozamiz: char str[] = "String"; int len = strlen(str); // Belgilarni to'g'ri tartibda chiqarish for(int i = 0; i < len; i++) { cout << str[i] << endl; } cout << " " << endl; // Belgilarni teskari tartibda chiqarish for(int j = len - 1; j >= 0; j--) { cout << str[j] << endl; } Bu misolda belgilar soni len o‘zgaruvchisida sikldan tashqarida saqlanadi. Agar strlen() funksiyasi shart ichida ko‘‘rsatilsa, u holda belgilar soni siklning har bir iteratsiyasida hisoblanadi. shu sababli, uni sikldan tashqarida olgan yoki for siklining birinchi parametrida o‘zlashtirgan ma’qul. for(int i = 0, len = strlen(str); i < len; i++) { cout << str[i] << endl; } C-satr belgilarini ko‘rsatkich va for sikli yordamida chiqatish quyidagicha bajariladi: char str[] = "String"; for(char *p = str; *p; p++) { cout << *p << endl; } Bunda boshlang‘ich qiymat birinchi belgining manzili hisoblanadi. Siklning davom etish sharti korsatkich murojaat qilayotgan qiymat hisoblanadi. '0' koda ega bo‘lgan nol belgidan tashqari, har qanday belgi true sifatida qaraladi. C-satr nol belgi vbilan tugallanganligi sababli, bu belgi false qiymat qaytaradi va sikl tugallanadi. for siklining uchinchi parametrida har bir iteratsiyada ko‘rsatkichning birga ortishi ko‘rsatiladi. Bu holda manzilli arifmetika qoidasidan foydalanilladi. Har doim for sikli oʻrniga while siklidan foydalanish mumkin: char *р = 0; char str[] = "String"; p = str; while (*p) { cout << *p++ << endl; } p = str; // Ko'rsatkichning holatini tiklash Keltirib o‘tilgan misolni tahlil qilib chiqamiz. Boshlanishda ko‘rsatkich va satr e’lon qilinadi. Keyin ko‘rsatkichga birinchi belgining manzili o‘zlashtiriladi. Ko‘rsatkich murojaat qilayotgan qiymat nol belgiga teng bo‘lmaguncha while sikli bajariladi. while sikli ichida ko‘rsatkich murojaat qilayotgan belgi chiqariladi, so‘ngra ko‘rsatkich navbatdagi belgiga ko‘chadi (*р++). р++ ifoda joriy manzilni qaytaradi, soʻngra uni bir birlikka orttiradi. '*' belgisi koʻrsatilgan manzil boʻyicha belgini olish imkonini beradi. Bajarilish ketma-ketligi qavsning quyidagicha *(р++) qoʻyilishiga yoki ikkita koʻrsatma: *р va р=р+1 ga mos keladi. Download 244.41 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling