Тилига кириш услубий қўлланма



Download 1,05 Mb.
bet69/86
Sana25.04.2022
Hajmi1,05 Mb.
#580284
1   ...   65   66   67   68   69   70   71   72   ...   86
Bog'liq
C qo`llanma

const this кўрсаткичи.


Ўзгармас объект эълон қилингандан кейин, унинг this кўрсаткичи ҳам ўзгармас кўрсаткич сифатида ишлатилади. соnst this кўрсаткичи орқали фақатгина const спецификатори мавжуд бўлган методларни чақириш мумкин.


Бу масала навбатдаги машғулотларда батафсил ўрганилади.

Кўрсаткичлар ёрдамида ҳисоблаш


Бир кўрсаткични бошқа кўрсаткичдан айириш мумкин. Масалан, агарда иккита кўрсаткич массивнинг турли элементларига мурожаат қилса, бир кўрсаткичнинг иккинчисидан айирмаси, берилган массив элементларининг орасидаги элементлар сонига тенг бўлади. Бу методика белгили массивлар устида иш бажаришда самарали тарзда қўлланилади. Бунга мисол 8.11. листингда келтирилган.


8.11. – листинг. Белгили массивдан сўзларни белгилаш.

  1. # inсlude < iostream.h>

  2. # inсlude < ctype.h>

  3. # inсlude < string.h>

  4. bool GetWord ( char * string, char * word, int& WordOff Set);

  5. // Асосий дастур

  6. int main( )

  7. {

  8. const int bufferSize = 255;

  9. char buffer[bufferSize+1];// Барча сатрларни //сақлаш учун ўзгарувчи

  10. char word[bufferSize+1];//Барча сўзларни сақлаш //учун ўзгарувчи

  11. int wordOffSet=0; //Биринчи белгидан бошлаймиз

  12. cout <<”Enter a string:”

  13. cin.getLine(buffer, bufferSize);

  14. While(GetWord( buffer, word, wordOffSet))

  15. {

  16. cout<< “Got this word:”<

  17. }

  18. return 0;

  19. }

  20. // Белгилар сатридан сўзни белгилаб олувчи функция

  21. bool GetWord(char *string, char *word, int &wordOffSet)

  22. {

  23. if(!string[wordOffSet])//Сатр охирини аниқлайди.

  24. return false;

  25. char* p1, p2;

  26. p1= p2 = string+ wordOffSet // навбатдаги сатрга кўрсаткич

  27. // Cатр бошидаги пробелларни ўчирамиз.

  28. for(int i=0;i<(int)strlen(p1)&& !isalnum(p1[0]); i++)

  29. p1++;

  30. // Cўз мавжудлигини текшириш

  31. if(!isalnum(p1[0]))

  32. return false;

  33. // p1 кўрсаткич навбатдаги сўзнинг бошини // кўрсатади. худди шундай p2 ҳам

  34. р2 = p1;

  35. // P2 ни сўзнинг охирини кўрсатишига қадар ўзгартирамиз

  36. while (isalnum(p2[0]))

  37. p2++;

  38. // р2 сатр охирини кўрсатади.

  39. // р1 эса cатр бошини кўрсаткичларнинг айирмаси //эса сўзнинг узунлигини беради.

  40. int len = int (p2- p1);// Сўзни буферга оламиз.

  41. Strncopy(word, p1, len );

  42. // ва янги сатрга ўтиш белгиини қўямиз

  43. word[len]=“\0”;

  44. //Навбатдаги сўзини бошланишини излаймиз.

  45. for(inti=int(p2–string); i<(int)strlen(string)&& !isalnum(p2[0]); i++);

  46. p2++;

  47. wordOffSet = int(p2–string );

  48. return true;

  49. }

НАТИЖА:
Enter a string: this code first appeared in C++ Report
Got this word : this
Got this word : code
Got this word : first
Got this word : appeared
Got this word : in
Got this word : C++
Got this word : Report
ТАҲЛИЛ
Листингнинг 13 – сатрида фойдаланувчи матн киритади. Киритилган сатр GetWord() функцияси орқали қайта ишланади. Бу функцияга WordOffSet бутун ўзгарувчиси параметр сифатида узатилади. WordOffSet ўзгарувчисига 11 – сатрда 0 қиймат ўзлаштирилади.
GetWord() функцияси ҳар сафар чақирилганда дастур бошқаруви 23–сатрга берилади. 23–сатрда эса string[wordOffSet] қиймати 0 га тенг ёки тенг эмаслиги текширилади. Шартни бажарилиши сатрни чегарасида эканлигимизни англатади. GetWord() функцияси false қиймат қайтаради.
24–сатрда белгили типга кўрсаткич бўлган иккита ўзгарувчи эълон қилинади. 26 – сатрда бу ўзгарувчиларга WordOffSet ўзгарувчиси қийматининг навбатдаги сўзи бошланишининг адреси ўзлаштирилади. p1 кўрсаткичига ҳарф ёки рақам бўлган 1 – белгининг адреси ўзлаштирилади. Агарда бундай белги учрамаса, функция false қиймат қайтаради.
Шундай қилиб p1 кўрсаткичи навбатдаги сўзнинг бошига мос келади. 46 – сатрда p2 кўрсаткичга ҳам худди шу қиймат ўзлаштирилади.
45 – ва 49 – сатрларда берилган сатрдан ҳарф ҳам, рақам ҳам бўлмаган биринчи белгини излаш амалга оширилади. p2 кўрсаткич шу белгига кўчирилади. Энди p1 ват p2 кўрсаткичлар мос равишда сўзнинг бошини ва охирини кўрсатиб турадилар. p2 кўрсаткичнинг қийматидан p1 кўрсаткични қийматини айириб уни бутун сонли типга ўгирамиз. Бундай операциянинг бажарилиши натижасида шу сўзнинг узунлигини олишимиз мумкин. Кейин эса сўзнинг бошланиш жойи ва узунлигига асосланган ҳолда уни буфер ўзгарувчисига кўчирамиз.

Download 1,05 Mb.

Do'stlaringiz bilan baham:
1   ...   65   66   67   68   69   70   71   72   ...   86




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish