Belgi va satrlar
REJA 1. Belgi va satrlar; 2. Satr uzunligini aniqlash; 3. Satrlarni nusxalash; 4. Satrlarni ulash; 5. Satrlarni teskari tartiblash; 6. Satrdan belgini izlash; 7. Satr ichidan satr qismini izlash. KIRISH Shomurodov Sunnat 225 guruh
C++ dasturlash tilida satr turi va ulardan foydalanish usullari va tamoyillarini qarab o’tamiz. Satr turi bu belgilardan tashkil topgan ma‘lumotlar majmuasi hisoblanadi. Satrlarning uzunligini aniqlash, satrlarni nusxalash, satrlarni kerakli joyga o’rnatish kabi amallarni bajarish uchun C++dasturlash tilida keng imkoniyati mavjud. C++ dasturlash tilida satrlar ham boshqa turlar kabi oldin dastur tarkibida e‘lon qilinishi kerak. Satrlar e‘lon qilingandan keyin ular ustida amallar bajarish mumkin. Belgi va satrlar C++ dasturlash tilida bir nechta turlardan foydalanish va ular ustida amallar bajarish mimkin, dasturlash muhitida boshqa turlar kabi belgili turlar ham mavjud. C++ dasturlash tilida belgili turlar char turiga mansub bo’lgan yagona elementli tur hisoblanadi. C++ dasturlash tilida satrlar uchun alohida maxsus turlar ishlab chiqilmagan satrlarni belgilar massivi sifatida ishlatish imkoniyati mavjud. Ta‘rif: Alohida nom bilan saqlanuvchi bir nechta belgilardan tashkil topgan belgilar majmuasi satr deyiladi. Satrlarni belgilar massivi sifatida qarab ular ustida amallar bajarish mumkin. C++ dasturlash tilida satrlar nol(‘\0‘) terminatori bilan tugaydi. Nol terminatori bilan tugaydigan satrlar ASCIIZ –satrlari deyiladi. Satrlardan foydalanish va ular ustida amallar bajarish uchun albatta oldin ularni e‘lon qilish kerak. Satr turiga mansub bo’lgan o’zgaruvchilarni char xizmatchi so’zi orqali e‘lon qilinadi. Satrlarni e‘lon qilish uchun quyidagi dasturlarga etibor bering. #include <iostream.h> #include <string.h> using namespace std; int main() { char s[10]; // s satrli o’zgaruvchini e‘lon qilish return 0; } Yuqoridagi dastur tarkibida s[10] satr o’zgaruvchisi 9 ta elementga va bitta nol terminatoriga mo’ljallangan. Satrlarni boshlang‘ich qiymatlarini berish jarayonida uning elementlar sonini berish shart emas. Agar satrlarni elementlar soni berilmasa dastur avtomatik ravishda uning elementlar soniga boshlang‘ich qiymatdagi elementlar sonidan bitta ortiq qilib ta‘minlaydi, chunki oxiriga bitta nol terminatorini hisobga oladi. Doim satrlarni kiritishda uning elementlar soni e‘lon qilinganidan oshib ketmasligi kerak aks holda faqat e‘lon qilingan elementlar soniga teng elementlarni saqlab qolinib qolganlari olinmaydi. Satrlarni kiritish jarayonida >> oqim bo’yicha kiritishdan foydalanmasdan getline() funksiyasidan foydalanish maqsadga muvofiq bo’ladi. Agar oqim Shomurodov Sunnat 225 guruh
bo’yicha kiritishdan foydalanilsa unda probellar inkor qilinib satrni ikkinchi qismlari qabul qilinmaydi. getline(s,n) funksiyasi ikkita parametrni o’z ichiga oladi, birinchisi s satr o’zgaruvchisi ikkinchisi n satr elementlar soni. Getline funksiyasi satr elementlaridan ortiq qiymatlarni ham kiritish imkoniyatini yaratadi, natijada satr elementlari ortadi. Kiritish jarayonini amalga oshirish uchun quyidagi dasturlarga etibor bering. Misol: Berilgan satrni ekranga chiqaring. #include <iostream.h> #include <string.h> using namespace std; int main() { char s[10]; // s satrli o’zgaruvchini e‘lon qilish cin.getline(s,10); cout<<s; return 0; } Kiritish ma‘lumotlari Absdefghl Dastur natijasi Absdefghl Yuqoridagi dastur tarkibidagi s satrli o’zgaruvchi faqat 9 ta elementni qbul qiladi, agar 9 tadan ortiq bo’lsa natija qaytarmaydi. Satr uzunligini aniqlash Satrlar ustida amallar bajarish vaqtida albatta satrlarning uzunligi kerak bo’ladi. Satr uzunligini aniqlash uchun string.h kutubhonasiga murojat qilish kerak aksariyat satr uchun ishlatiladigan funksiyalarni string.h kutubhonasiga murojat qilib ishlatishimiz mumkin. Satr uzunligini aniqlashni ikki hil usuli mavjud. -satr tarkibidagi mavjud elementlar sonini nol terminatorisiz aniqlash; -satr tarkibidagi elementlarga ajratilgan sonini nol terminatori bilan aniqlash; Satr tarkibidagi mavjud elementlar sonini nol terminatorisiz aniqlash funksiyasining umumiy ko’rinishi quyidagicha bo’ladi. strlen(<satrli o‘zgaruvchi>); Strlen funksiyasi o’z tarkibiga satrli o’zgaruvchi yoki satr uzini qabul qilishi mumkin. Masalan strlen (―absd ) bo’lsa uning natijasi 4 ga teng bo’ladi. ‖ Misol: Berilgan satr tarkibidagi elementlar sonini aniqlang.. Shomurodov Sunnat 225 guruh
#include <iostream.h> #include <string.h> using namespace std; int main() { char s[10]; cin.getline(s,10); x=strlen(s); cout<<x; return 0; } Kiritish ma‘lumotlari Dastur Dastur natijasi 6 Demak strlen(s) funksiyasi s satrni tarkibidagi mavjud elementlari sonini aniqlaydi. Satr tarkibidagi elementlarga ajratilgan sonini nol terminatori bilan aniqlash uchun sizeof(s) funksiyasidan foydaliniladi. Sizeof(s) funksiyasi s satr uchun ajratilgan elementlar sonini aniqlaydi, s satrni 10 ta elementga moslab e‘lon qilib lekin 5 ta element kiritilsa ham sizeof funksiyasi 10 qiymatni qaytaradi. Satr tarkibidagi elementlarga ajratilgan sonini nol terminatori bilan aniqlash funksiyasining umumiy ko’rinishi quyidagicha bo’ladi. sizeof(<satrli o‘zgaruvchi>); Sizeof funksiyasi o’z tarkibiga satrli o’zgaruvchi yoki satr uzini qabul qilishi mumkin. Masalan strlen (―absd ) bo’lsa uning natijasi 5 ga teng bo’ladi.‖ Misol: Berilgan satr tarkibidagi elementlar sonini aniqlang. #include <iostream.h> #include <string.h> using namespace std; int main() { char s[10]; cin.getline(s,10); x=sizeof(s); cout<<x; return 0; } Kiritish ma‘lumotlari Salom Dastur natijasi 10 Demak sizeof(s) funksiyasi s satrni tarkibidagi mavjud elementlari sonini emas balki unga ajratilgan qiymatni aniqlaydi. Agar sizeof funksiyasi tarkibida o’zgaruvchi emas satr uzini kiritsa unda sizeof funksiyasi tarkibidagi Shomurodov Sunnat 225 guruh
elementlardan bitta ko’p qiymatni qaytaradi chunki nol terminatorini ham qo’shadi. Quyidagi dasturga e‘tibor bering. #include <iostream.h> #include <string.h> using namespace std; int main() { cout<<sizeof("dastur"); return 0; } Dastur natijasi 6 Misol: Berilgan s satr tarkibidan p element necha marta ishtirok etganligini aniqlang. #include <iostream.h> #include <string.h> using namespace std; int main() { int x,n=0; char s[100]; cin.getline(s,10); //s satrni kiritish char p; cin>>p; //p belgini kiritish x=strlen(s); for(int i=0;i<=x-1;i++) if(s[i]==p) n+ +; cout<<n; return 0; } Kiritish ma‘lumotlari s=assalom p=a Dastur natijasi 2 Satrlarni ixtiyoriy elementiga murojat qilish uchun doimo bitta kam qilib buyruq berish kerak chunki satrlar belgili massiv bo’lganligi uchun boshlang‘ich element nolinchi o’rindan boshlanadi. Satrlarni nusxalash C++ dasturlash tilida satrlarni bir biriga nusxalashni bir qancha usullari mavjud. Satrlarni nusxalash uchun strcpy() funksiyasidan foydalanish mumkin, strcpy() funksiyasining umumiy ko’rinishi quyidagicha bo’ladi. strcpy(satr1, satr2); Shomurodov Sunnat 225 guruh