Dasturlash II 3-hafta mavzu: Ob’yektga yo‘naltirilgan fikrlash uslubi



Yüklə 2,27 Mb.
səhifə6/18
tarix11.11.2023
ölçüsü2,27 Mb.
#132197
1   2   3   4   5   6   7   8   9   ...   18
D2 maruza-3 Ob’ektga yo‘naltirilgan fikrlash. String sinfi, ob’yektlar massivi

3.2.12. Satrlarni bo`laklash
Satrdan so`zlarni ajratibolish masalasiga tez-tez duch kelamiz. So`zlar satrda bo`sh joylar (probellar) bilan ajratilgandeb tasavvur qilamiz. Biz bu masalani yechish uchun yuqoridagi qismda ta’kidlaganimizdek,stringstreamsinfidan foydalanishimiz mumkin. 3.1-kodli ro`yxatda so`zlarni satrdan ajratibolishva ularni alohida satrlarda chiqarish jarayoni keltirilgan.
3.1-kodli ro`yxat. ExtractWords.cpp
1 #include
2 #include
3 #include
4 using namespace std;
5
6 int main()
7 {
8 string text("Dasturlash qiziqarli!");
9 stringstream ss(matn);
10
11 cout << "Matndagi so`zlar: " << endl;
12 string word;
13 while (!ss.eof())
14 {
15 ss >> word;
16 cout << word << endl;
17 }
18
19 return 0;
20 }



Matndagi so`zlar:
Dasturlash
qiziqarli!

Dastur matn satri (9-qator) uchun stringstream ob’yekt yaratadi va bu ob’yektdan kiruvchi oqim sifatida konsoldan ma’lumotni o`qish uchun foydalanish mumkin. U satr oqimidan ma’lumotlarni olib word satr ob’yektiga yuboradi (15-qator). stringstream sinfidagi eof() funksiyasi satrli oqimdagi barcha elementlar o`qilganda trueqiymat qaytaradi (13-qator).


3.2.13. Amaliy qism: Satrlarni almashtirish
Ushbu qismda s satrda mavjud bo`lgan oldSubStr ichki satr tarkibiga kiruvchi satrni newSubStr satr bilan almashtiruvchi funksiya yozamiz.
boolreplaceString(string& s, const string& oldSubStr,
conststring& newSubStr)
Agar s satr o`zgargan bo`lsa, funksiya true, aks holda, false qiymat qaytaradi. 3.2-kodli ro`yxatda uning dasturi keltirilgan.
3.2-kodli ro`yxat. SatrniAlmashtirish.cpp
1#include
2#include
3usingnamespacestd;
4
5// s daoldSubStrninewSubStr ga almashtirish
6boolreplaceString(string&s,conststring&oldSubStr,
7conststring&newSubStr);
8
9intmain()
10 {
11//Foydalanuvchinis,oldSubStrvanewSubStr ni kiritishga undash
12cout<<"s,oldSubStr,vanewSubStr satrlarni kiriting:";
13strings,oldSubStr,newSubStr;
14cin>>s>>oldSubStr>>newSubStr;
15
16boolisReplaced=replaceString(s,oldSubStr,newSubStr);
17
18if(isReplaced)
19cout<<"Almashtirilgan satr:"<20else
21cout<<"Moslik yo`q"<22
23 return0;
24 }
25
26 boolreplaceString(string&s,conststring&oldSubStr,
27 conststring&newSubStr)
28 {
29boolisReplaced=false;
30intcurrentPosition=0;
31while(currentPosition32{
33intposition=s.find(oldSubStr,currentPosition);
34if(position==string::npos)// Boshqa moslik yo`q
35returnisReplaced;
36else
37{
38s.replace(position,oldSubStr.length(),newSubStr);
39currentPosition=position+newSubStr.length();
40isReplaced=true;//Hech bo`lmaganda bitta moslik
41}
42}
43
44returnisReplaced;
45 }

Natija:


s, oldSubStr, va newSubStr satrlarni kiriting:abcdabab ab AAA
Almashtirilgan satr: AAAcdAAAAAA




s, oldSubStr, va newSubStr satrlarni kiriting:abcdabab gb AAA
Moslik yo`q

Dastur foydalanuvchini satrni, oldingi ichki satrni va yangi ichki satrni kiritishga undaydi (14-qator). Dastur eski satrning barcha tarkibiy elementlarini yangi ichki satrning barcha tarkibiy elementlari bilan almashtiruvchi (16-qator)va bu jarayonning amalga oshirilganlik holati bo`yicha xabar beruvchi (18-21-qatorlar)repalceString funksiyasini chaqiradi.


replaceString funksiyasi s satrdan oldSubStr ni currentPosition dan, ya’ni 0 dan boshlab qidiradi.string sinfidagi find funksiyasi satr tarkibidagi ichki satrni qidirish uchun ishlatiladi (33-qator). Agar utopilmasa, string::nposni qaytaradi. Bunday vaziyatda qidirish to`xtatiladi va funksiya isReplaced ni qaytaradi (35-qator). isReplaced – bool o`zgaruvchi hisoblanib, uning boshlang`ich qiymati false hiosblanadi (29-qator). Qachonki, ichki satrga moslik aniqlanganida unga true qiymati ta’minlanadi (40-qator).
Funksiya almashtirish funksiyasidan foydalanib, qaytadan ichki satrni qidiradi, uni yangi ichki satr bilan almashtiradi (38-qator) va satrda keying moslikni topish uchun joriy qidiruv joyini qayta o`rnatadi (39-qator).



Yüklə 2,27 Mb.

Dostları ilə paylaş:
1   2   3   4   5   6   7   8   9   ...   18




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin