Misal 1. Aşağıdaki misalda sətrin bütün simvolları ulduzla əvəz edilir və sətrin uzunluğu hesablanır:
//Simvolların ulduzla əvəz edilməsi
#include using namespace std; int main ( ) {char s[ ]=”abcd”; int i; cin >> s; while (s[i]) {s[i++]=’*’;} cout < } Nəticə aşağıdaki kimi olar:
****
Bu proqramda dövrün yerinə yetirilməsi s[i] sıfır simvolu alana qədər davam edir.
C/C++ dilinin standart kitabxanasında sətirlərlə işləmək üçün kitabxana funksiyaları vardır. Bu funksiyaların başlıq faylının adı string.h-dır. Məsələ, sətirin uzunluğunu göstərən funksiyanın adı strlen( )-dır. Aşağıdaki proqramda strlen( )-funksiyasından istifadə edilməsi qaydası göstərilmişdir. Funksiyanın arqumenti olaraq sətrin adı göstərilir.
Misal 2. Simvollardan ibarət sətir verilmişdir. Bu sətri tərsinə çevirən proqram yazmalı. (məsələ, sətirin abcdef olarsa, nəticə fedcba-olmalıdır).
//Sətrin tərsinə çevrilməsi
#include #include using namespace std; int main( ) ; {char c, s[10]; int i; cout<<”\n sətri daxil edin”; cin>>s; for (i=0; i<=(strlen (s)-1)/2; i++) {c=s[i]; s[c]=s[strlen(s)-i-1]; s[strlen(s)-i-1]=c;} cout <<”\n tərsinə çevrilmiş sətir”; cout < } Alqoritmin ideyası sətrin başlanğıcından və sonundan eyni uzaqlıqda duran simvolların bir-biri ilə yerlərini dəyişməkdən ibarətdir. Burada sətrin birinci simvolunun indeksi 0, axırıncı simvolunun indeksi strlen(s)-1 -ə bərabərdir.
6.30.Sətir funksiyaların parametri kimi Sətirlərin funksiyalarda parametr kimi işlənməsi massivlərin parametr kimi işlənməsinə oxşardır. Nəzərə almaq lazımdır ki, massivin adı onun başlanğıcına olan göstəricidir və massivin adı üzərində əməliyyat aparmaq olmaz. Sətrin adı isə göstərici-dəyişəndir və onun qiymətini dəyişmək olar. Standart C++ dilində funksiyaların başlığında simvol göstəricilərdən istifadə olunması məsləhət olunur.
Misal 1.
Sətrin uzunluğunu hesablayan funksiya təyin edək: (strlen( )-standart funksiyasına ekvivalent olan funksiya)
int length(char *s) {int k; for (k=0; *s++!=’\0’; k++); return k; } Funksiyada göstəricilərlə işləməyin aşikar mexanizmi istifadə olunmuşdur. s-göstəricisi həm də dəyişən olduğuna görə onun qiymətini dəyişmək mümkündür. Ədədi massivlərdə bu əməliyyatı aparmaq olmaz. Sətirlər üçün bu məhdudiyyəti nəzərə alsaq for operatorunu aşağıdaki kimi yazmaq olar:
for (k=0; *(s+k)!=’\0’; k++); və ya for (k=0; s[k]!=’\0’;k++);