logo

Dasturlashda satrlar va ular bilan ishlash amallari

Загружено в:

12.08.2023

Скачано:

0

Размер:

142.56640625 KB
DASTURLASH ASOSLARI VA TILLARI FANIDAN
“Dasturlashda satrlar va ular bilan ishlash amallari” mavzusida
KURS ISHI MUNDARIJA.
KIRISH.....................................................................................................................................3
1.1. C++ DASTURLASH TILIDA SATR TURI VA   ULARDAN FOYDALANISH  
USULLARI.....................................................................................................................4
1.2. C++   DASTURLASH   TILIDA   STRING   TURIGA   MANSUB   BO’LGAN SATRLI  
O’ZGARUVCHILAR....................................................................................................24
XULOSA...................................................................................................................................32
FOYDALANILGAN ADABIYOTLAR ................................................................................33 KIRISH.
C++   dasturlash   tili   tarkibida   satr,   to’plam,   fayl   va   struktura   turiga   mansub
bo’lgan   ma‘lumotlar   ustida   amallar   bajarish   imkoniyati   ham   mavjud.   Satr   turi   bu
dasturlashning   asosiy   turlaridan   hisoblanadi,   bunda   char   turiga   mansub   barcha
ma‘lumotlar   shu   tur   asosida   qayta   ishlanadi.   Dasturlash   aoslarida   satr   turi   bilan
ishlash   bu   fanning   asosiy   maqsadi   hisoblanadi.   Tashkilot   va   muassasalarning
axborotlarini qayta ishlash  vaqtida uning tarkibida asosan  satr  turlari bilan ishlashga
to’g‘ri   keladi.   Bu   bobda   satrlar   ustida   satrning   uzunligi,   satrni   nusxalash,   satrni
kerakli   joyga   o’rnatish   kabi   bir   qator   vazifalar   ko’rib   o’tiladi.   C++   dasturlash   tilida
to’plam   va   fayl   turlari   ham   asosiy   turlardan   hisoblanadi.   Matematik   masalalarni   hal
etishda   asosan   to’plam   turi   katta   ahmiyat   kasb   etadi.   C++   dasturlash   tilida   to’plam,
to’plam   elementlari,   element   to’plamga   tegishli   ekanligini   aniqlash   masalalarini   hal
etish   imkoniyati   mavjud.   Dasturlash   asoslari   fanida  struktura   turiga   mansub   bo’lgan
ma‘lumotlar   katta   ahamiyat   kasb   etadi.   Struktura   turidagi   ma‘lumotlar   tarkibida   bir
nechta   turlar   birgalikda   qaraladi,   masalan,   tashkilot   xodimlari   haqida   ma‘lumotlar
struktura   turiga   tegishli   bo’ladi.   Struktura   turiga   e‘tibor   qaratsak,   bu   tur
dasturlashning   asosiy   turlari   hisoblanadi,   bu   tur   asosan   ma‘lumotlar   bazasini
boshqarish   tizimlarining   asosi   hisoblanadi.   Yuqorida   ko’rilgan   turlar   va   ulardan
foydalanish   imkoniyati   C++   dasturlash   tili   tarkibida   mavjud.   Mazkur   qullanmaning
joriy bobida yuqoridagi turlar va ulardan foydalanish usullari qarab   o’tiladi.
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.
C++   dasturlash   tilida   satrlar   uchun   standart   turdan   tashqari   string   turi   ham
qushimcha   sifatida   qaralgan.   String   turiga   mansub   bo’lgan   satrlar   nol   terminatori
bilan   tugallanmasdan   u   oddiy   belgilar   massivi   sifatida   qaraladi.   String   turini
afzalliklari satrlar ustida amallar bajarilgandan So’ng dinamik ravishda o’zgartirishlar
mumkin. 1.1. C++ DASTURLASH TILIDA SATR TURI VA   ULARDAN
FOYDALANISH   USULLARI
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.
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#include <iostream.h>
#include <string.h> 
using namespace std; 
int main()
{ char s[10]; // s satrli o’zgaruvchini e‘lon qilish 
return 0;
} 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
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..
#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
5
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
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);
strcpy(satr1,   satr2)   funksiyasi   satr2   dagi   elementlarni   to’laligicha   satr1   ga
nusxalaydi. Satr1 ni elementlar soni doimo satr2 elementlar sonidan katta bo’lishi
kerak.
Misol:  Berilgan s satr elementlarini p satrga nusxalang.
#include <iostream.h>
#include <string.h> 
using namespace std; 
int main()
{ char s[100]; 
cin.getline(s,10);
char p[10]; 
strcpy(p,s);
cout<<p; 
return 0;
}
Kiritish ma‘lumotlari
s=dastur Dastur natijasi
Dastur
Satrlarni nusxalash uchun  strncpy()  funksiyasidan foydalanish mumkin, 
strncpy() funksiyasining umumiy ko’rinishi quyidagicha bo’ladi.
strncpy(satr1, satr2,n); strncpy(satr1,   satr2,n)   funksiyasi   satr2   dagi   elementlarni   n   tasini   satr1   ni
boshiga nusxalaydi. Strncpy() funksiyasini strcpy() funksiyasidan farqi satr2 ni nta
elementini satr1 ni boshiga nusxalaydi.
Misol:  Berilgan s satrni 3 ta elementini p satrga nusxalang.
#include <iostream.h>
#include <string.h> 
using namespace std; 
int main()
{ char s[100]; 
cin.getline(s,10); 
char p[10]; 
cin.getline(p,10); 
strncpy(p,s,3);
cout<<p; 
return 0;
}
Kiritish ma‘lumotlari
s=algoritm
p=dastur Dastur natijasi
Algtur
strncpy (st1, st2, n)  funksiyasi. Bunda funksiya  st1  satrining dastlabki  n
ta belgisi ustiga  st2  ning  n  dastlabki  n  ta belgisini nusxalaydi.
strdup (satr)  funksiyasi. Funksiya xotiradan  satr  uchun joy ajratib, o’sha
joyga  satr  ni nusxalaydi.
Agar   zarurat   bo’lsa   ko’rsatkichlardan   foydalanib,   satrning   nechanchidir
belgisidan   keyingilarini   ham   nusxalash   mumkin.   Quyidagi   dastur   bu
funksiyalar mohiyatini ochishga yordam beradi.
1 #include   <iostream.h>
2 #include   <string.h>
3 using namespace   std;
4 int   main()
5 { int   i,j,n,m;
6 char*star1="Satr nusxasini olish";
7 char*satr2;
8 char str3[30]="Assalom", st1[20]="123456789   soni",
9 st2[26];
10 char*korsat=st1; cout<<korsat<<'\n'; 11 korsat+=4;   cout<<korsat<<'\n';
12 strcpy(st2, "nusxalashga misol");   cout<<st2<<'\n';
13 strncpy(st2, "soniga qarab nusxalash", strlen (str3)); cout<<st2<<'\n';
14 strncpy(st1, "dastlabki 4 belgini nusxalash",4);   cout<<st1<<'\n';
15 satr2=strdup(satr1); cout<<satr2<<'\n';
16 s y ste 4 m (― pa u s	e‖ ) ;
17 return   0;
18 }
Dastur   natijasi   quyidagicha   bo’ladi:
123456789 soni
56789 soni 
nusxalashga misol
soniga shga misol 
dast 56789   soni
satr nusxasini olish
10-satrda   «ko’rsat»   nomli   ko’rsatkichga   st1   massivi   qiymati
initsializatsiyalangan.   11-satrda   korsar+=4;   buyrug’i   bilan   ko’rsatkich
o’zgaruvchining   qiymati   4   bayt   o’ngga   siljitildi.   12-satrda   «nusxalashga
misol»   matni   strcpy(   )   funksiyasi   yordamida   st2   masssiviga   nusxalandi.   13-
satrdagi buyruq bo’yicha   «soniga qarab nusxalash»   matnining dastlabki 7 ta
belgisi   st2   massivining   dastlabki   7   ta   belgisi   o’rniga   nusxalandi.   Chunki
strlen(str3)   funksiyaning   qiymati   7   ga   tengligini   tushunish   qiyin   emas.   15-
satrdagi   buyruq   bo’yicha   satr1   ko’rsatkichning   qiymati   satr2   ko’rsatkichga
nusxalandi.
Satrlarni ulash
Bir nechta satrlarni ulash natijasida yangi satrlarni hosil qilish mumkin. C++
dasturlash   tili   tarkibida   satrlarni   bir   biriga   ulashni   bir   nechta   usullari   mavjud,
satrlarni bir biriga ulab yangi satrlar hosil qilinadi.
C++ dasturlash tilida strcat() funksiyasi yordamida satrlarni bir biriga ulash
imkoniyati   mavjud,   strcat()   funksiyasining   umumiy   ko’rinishi   quyidagicha
ko’rinishda bo’ladi.
strcat(satr1, satr2);
C++ dasturlash tilida strcat(satr1, satr2) funksiyasi satr2 ni satr1ni oxiriga 
ulaydi.
Misol:  Berilgan s satrni p satrga birlashtiring.
#include <iostream.h> #include <string.h> 
using namespace std;
int main()
{ char s[100]; 
cin.getline(s,10); 
char p[10]; 
cin.getline(p,10); 
strcat(p,s,3);
cout<<p; 
return   0;
}
Kiritish ma‘lumotlari
s=ali 
p=vali Dastur natijasi
Valiali
C++ dasturlash tilida strncat() funksiyasi yordamida satrlarni bir biriga faqat
n   ta   elementini   ulash   imkoniyati   mavjud,   strncat()   funksiyasining   umumiy
ko’rinishi quyidagicha ko’rinishda bo’ladi.
strncat(satr1, satr2,n);
C++   dasturlash   tilida   strncat(satr1,   satr2,   n)   funksiyasi   satr2   ni   n   ta
boshlang‘ich elementlarini satr1ni oxiriga ulaydi.
Misol:   Berilgan   s   satrni   boshidagi   3   ta   elementini   p   satr   oxiriga
birlashtiring.
#include <iostream.h>
#include <string.h> 
using namespace std; 
int main()
{ char s[100]; 
cin.getline(s,10); 
char p[10]; 
cin.getline(p,10); 
strncat(p,s,3);
cout<<p; 
return 0;
}
Kiritish ma‘lumotlari Dastur natijasi  s=algoritm
p=dastur Dasturalg
Satrlarni solishtirish (taqqoslash) funksiyalari
C++ da satrlarni solishtirish uchun quyidagi funksiyalardan foydalaniladi.
1. Strcmp   (satr1,   satr2)   funksiyasi.   Bu   funksiya   satr1   satrining   har   bir
belgisi   satr2   satrining   mos   nomerlaridagi   belgilarining   EXM   xotirasidagi
kodlarni   solishtiradi.
Eslatma:   Lotin alifbesining kichik harflari kodi katta harflari kodidan   32   ga
ortiq   qilib   kodlangan   va   solishtirish   natijasi   qandaydir   n   butun   soniga   qiymat
sifatida berilishi kerak. Masalan , n=strcmp (s1.s2)
Agar
s1>s2bo’lsa n>0
s1=s2bo’lsa n=0
s1<s2bo’lsa n<0  bo’ladi
n ning qiymati birinchi farq qiluvchi belgilar kodlarini solishtirish bilan
aniqlanadi.
satr1 va satr2  larning birinchi belgilari  P  va  p larning kodlari farq qilayapti.
Shuning uchun dastur natijasi  m=-1; n=1  kabi bo’lmoqda.
2. Agar   satrlarni   solishtirishda   harflarning   registrlarini   (ya‘ni   katta   yoki
kichikligini)   farqlash   kerak   bo’lmasa,   u   holda   strcmpi   (satr1,   satr2)
funksiyasidan foydalaniladi. Bu hol quyidagi dasturda o’z aksini   topgan.#include <iostream.h>
#include <string.h> 
using namespace std; 
int main()
{
int   j,i,s,n,m; char k1[20]="",k2[20]="";
char satr1[60]="Programmalash ";char *kor1=satr1; 
char satr2[60]="prograMMalash ";char *kor2=satr2;
m=strcmp(kor1,kor2); cout<<" m="<<m; 
n=strcmp(kor2,kor1); cout<<" n="<<n<<'\n'; 
system("pause");
return 0;
}
#include   <iostream.h> #include <string.h> 
using namespace std;
int main()
{
int j,i,s,n,m;
char satr1[60]="Programmalash ";char *kor1=satr1; 
char satr2[60]="prograMMalash ";char *kor2=satr2; 
char satr3[60]="pragraMMalash ";char *kor3=satr3; 
m=strcmpi(kor1,kor2); cout<<" m="<<m; 
n=strcmpi(kor2,kor3); cout<<" n="<<n<<'\n';
system("pause");
return 0;
}
Dastur natijasi  m=0, n=1  kabi bo’lishini tushunish qiyin emas.
3. Agar ikkita satrning faqat dastlabki  n  ta belgilarini solishtirish talab etilgan
bo’lsa,   strncmp(satr1,   satr2,n)   funksiyasidan   foydalaniladi.   Quyidagi   dasturni
tahlil qilib bunga ishonch hosil qilish   mumkin.
#include <iostream.h>
#include <string.h> 
using namespace std; 
int main()
{
int j,i,s,n,m;
char satr1[60]="programmalash ";char *kor1=satr1; 
char satr2[60]="prograMMalash ";char *kor2=satr2; 
m=strncmp(kor1,kor2,6); cout<<" m="<<m; 
n=strncmp(kor1,kor2,7); cout<<" n="<<n<<'\n';
system("pause");
return 0;
}
Dastur natijasi  m=0, n=32  kabi bo’ladi.
Misol.  Ikkita satr berilgan. Ularning farq qiluvchi belgilarini aniqlash 
dasturini tuzing.
#include <iostream.h> 
#include   <string.h>  Dastur natijasi quyida kltirilgan. Mustaqil tahlil qiling.
1- chi belgisi har xil, ular: p va P 
5-chi belgisi har xil, ular: o va r 
8-chi belgisi har xil, ular: a va f 
25-chi belgisi har xil, ular: R va r
26-chi belgisi har xil, ular: c va g
32-chi belgisi har xil, ular: Z va   z
Satrdagi harflar registrini almashtirish funksiyalari
Agar   satrdagi   belgilari   ichida   harflar   bo’lsa,   ularni   bosh   harflardan   kichik
harflarga almashtirsh uchun  strlwr(satr)  funksiyasidan, aksincha kichik harflarni
bosh   harflarga   almashtirish   uchun   esa   strupr(satr)   funksiyasidan   foydalaniladi.
Masalan using namespace std; 
int   main()
{
int j, i, s,   n,   m; char k1[20]="",   k2[20]="";
char satr1[60]="progoamalash tillarini oRcanamiZ"; char
*kor1=satr1;
char satr2[60]="Programflash tillarini organamiz"; char
*kor2=satr2;
for(i=1; i<=32; i++) {
strncpy(k1, kor1, 1);strncpy(k2, kor2, 1); kor1+=1; kor2+=1;
n=strcmp(k1, k2);
if(n!=0) cout<<i<<"-chi belgisi har xil, ular: "<<k1<< " va "
<<k2<<'\n';
}
system("pause");
return 0;
}
#include <iostream.h>
#include <string.h> 
using namespace std; 
int main()
{
char satr2[30]="maktabda o’qiyman"; 
strupr(satr2); cout<<satr2<<'\n';
char satr3[30]="MEN TALABAMAN";
strlwr(satr3); 
cout<<satr3<<'\n';
system("pause"); 
return 0;
}
Dastur natijasi MAKTABDA O’QIYMAN
men talabaman
kabi   bo’ladi
Satrlarni teskari tartiblash
Satrlarni   teskari   tartiblash   uchun   C++   dasturlash   tilidan   tashqari   boshqa
dasturlash   tillarida   takrorlanish   jarayonlari   orqali   bajariladi.   C++  dasturlash   tilida
satrlarni teskari tartiblash uchun strrev() funksiyasi yordamida bajarish mumkin.
Strrev() funksiyasining umumiy ko’rinishi quyidagicha bo’ladi.
strrev(<satrO’zgaruvchisi>); 
Strrev(s) funksiyasi s satrni teskari tartibda jaoylashtiradi.
Misol:  Berilgan s satrni teskari tartiblang.
#include <iostream.h>
#include <string.h> 
using namespace std; 
int main()
{ char s[100]; 
cin.getline(s,10);
cout<<strrev(s);
return 0;
}
Kiritish ma‘lumotlari
s=algoritm Dastur natijasi
Mtirogla
Satrdan belgini izlash
Satr tarkibidan birorta belgini qidirish uchun C++ dasturlash tilining string.h
kutubxonasi   ichidan   strchr()   funksiyasidan   foydalanish   kerak.   Strchr()
funksiyasining umumiy ko’rinishi quyidagicha bo’ladi.
strchr(<s,p>); Strchr(s) funksiyasi s satr ichida p    belgini izlaydi agar    topilsa shu
elementdan keyingi qismni aks holda nullni   qaytaradi.
Misol:  Berilgan s satrdan p belgini qidiring.
#include <iostream.h>
#include <string.h> 
using namespace std; 
int main()
{ char s[100]; 
cin.getline(s,10);
char p; cin>>p;
cout<<strchr(s,p);
return 0;
}
Kiritish ma‘lumotlari
s=algoritm
p=t Dastur natijasi
Tm
Satr ichidan satr qismini izlash
Satr   tarkibidan   birorta   qism   satrni   qidirish   uchun   C++   dasturlash   tilining
string.h   kutubxonasi   ichidan   strstr()   funksiyasidan   foydalanish   kerak.   Strstr()
funksiyasining umumiy ko’rinishi quyidagicha bo’ladi.
strstr(<s,p>);
Strstr(s) funksiyasi s satr ichida p qism satrni izlaydi agar topilsa shu satrdan
keyingi qismni aks holda nullni qaytaradi.
Misol:  Berilgan s satrdan p satrni qidiring.
#include <iostream.h>
#include <string.h> 
using namespace std; 
int main()
{ char s[100]; 
cin.getline(s,100); 
char p[100]; 
cin.getline(p,100);
cout<<strstr(s,p);
return 0;
} Kiritish ma‘lumotlari
s=aliakbar
p=ak Dastur natijasi
Akbar
Satr turini o’zgartiruvchi funksiyalar
Ko’pincha sonlarni qayta ishlashni talab qiluvchi masalalarda sonni matematik
almashtirishlardan   foydalanib   qayta   ishlagandan   ko’ra   uni   satr   ko’rinishda   qayta
ishlab, keyin satrni songa aylantirib qo’yish ancha qulay bo’ladi. Buning uchun C+
+   dagi   <stdlib.h>   funksiyalar   kutubxonasidagi   quyidagi   funksiyalardan
foydalaniladi.
1. atoi(satr) funksiyasi.   Bu   funksiya   turi   butun   (int)   bo’lib,   satr   ko’rinishida
berilgan   sonni   butun   turga   aylantiradi.   Satrni   to’liq   songa   aylantirish   uchun
satrning   belgilari   to’liq   raqamlar   bo’lishi   kerak.   Agar   satrning   boshidagi   bir   nechta
belgilarigina  raqamlardan  iborat   bo’lsa,   atoi()   funksiyasi  faqat  shu   qismini   songa
aylantiradi   va   qolgan   qismini   tashlab   yuboradi.   Agar   satr   raqam   bilan
boshlanmagan bo’lsa, funksiya 0(nol) ga teng qiymatni oladi. Yuqorida keltirilgan
fikrlarni quyidagi dastur misolida tahlil   qiling.
#include <iostream.h> 
#include <stdlib.h> 
using namespace std; 
int main()
{
int i,j,k,n,m;
char satr1[30]="215625", satr2[30]="25"; 
char   satr3[30]="2154254254698",
satr4[30]="7458TALA215AN",satr5[]="assalom"; 
k=atoi(satr1); n=atoi(satr2); i=atoi(satr3); j=atoi(satr4);
m=atoi(satr5);
cout<<"i="<<i<<"\nj="<<j<<'\n';
cout<<"k="<<k<<"\nn="<<n5<<'\n';
cout<<"m="<<m<<'\n';
system("pause");
return 0;
}
Dastur natijasi quyidagicha bo’ladi
i=-1819327894  Satrni songa aylantirishda son tur chegarasidan chiqib ketsa C++ kutilmagan
natijani chop etadi. Masalan, dastur  i  paramatri uchun shunday qiymat tanlangan.
2. atof(satr)  funksiyasi. Bu funksiya ham  atoi()  funksiyasi kabi ishlaydi. Faqat
bu funksiyaning qiymati   long   turiga mansub bo’ladi. Bundan tashqari  funksiyaga
float   yoki   double   turi   berilsa,   satr   ko’rinishidagi   sonni   double   ko’rinishidagi,
ya‘ni   sonning   mantissasi   va   tartibini   ko’tsatish   bilan   yoki   o’nli   kasr   ko’rinishiga
o’tkazadi.   Agar   songa   aylantirilayotgan   satr   chegaradan   chiqib   ketsa,   funksiya
kutilmagan qiymatni   oladi.
#include <iostream.h>
#include <stdlib.h> 
using namespace std; 
int main()
{
int k,n,m; double i,j ;
char   satr1[]="3.14D15E+2";
char satr3[30]="21.34254254E15", satr4[30]="745.8215";
n=atoi(satr1); i=atof(satr3); j=atof(satr4); 
cout<<"i="<<i<<"\nj="<<j<<<<"\nn="<<n<<'\n';
system("pause");
return 0;
}
Dastur natijasi quyidagicha bo’ladi
i=2.13425e+016
j=745.822
n=3
3. itoa (n,satr,m)  funksiyasi. Bu funksiya  int  turiga mansub bo’lgan  n  sonini   m
lik   sanoq   sistemasiga   o’tkazib,   satr   turiga   o’tkazadi   va   hosil   bo’lgan   qiymatni
satrli  massivga   beradi.
ltoa   (n,satr,m)   funksiyasi   vazifasi   ham   itoa()   funksiyasi   vazifasi   kabi.   Faqat
ltoa()   funksiyasi   long   turiga   mansub   sonlarni   ham   satrga   aylantiradi.   Quyidagi
dasturni tahlil qilib, bunga ishonch hosil qilish mumkin. j=7458 
k=215625
n=25
m=0
#include <iostream.h> #include <stdlib.h> 
#include <string.h> 
using namespace std;
int main()
{
int n=3245,m; long int i,j=568324557; long double k=5.6e4; 
char   satr1[20],satr2[20],
satr3[20],satr4[20],satr5[20],satr6[20],*satr7;
itoa(n,satr1,2); itoa(n,satr2,8);itoa(n,satr3,16);itoa(n,satr4,10); 
cout<<"satr1="<<satr1<<"\nsatr2="<<satr2<<"\nsatr3="<<satr3<<"\nsa
tr4="<<satr4<<'\n';
ltoa(j,satr1,2); ltoa(k,satr2,8);ltoa(j,satr3,16);ltoa(j,satr4,10); 
cout<<"satr1="<<satr1<<"\nsatr2="<<satr2<<"\nsatr3="<<satr3<<"\nsatr4
="<<satr4<<'\n';
itoa(n,satr5,10);ltoa(j,satr6,10);satr7=strstr(satr6,satr5);cout<<"
satr7="<<satr7<<'\n';
system("pause");
return 0;
}
Dastur natijasi quyidagicha bo’ladi. 
satr1=110010101101
satr2=6255
satr3=cad 
satr4=3245
satr1=100001110111111111000111001101
satr2=155300 
satr3=21dff1cd 
satr4=568324557
satr7=324557
4. gcvt  (son,raqamlar soni, satr)   funksiyasi.  Bu  funksiya   float   yoki   doudle
turidan   sonni   satrga   aylantiradi.   Bunda   son   float   yoki   double   turiga   mansub   son
bo’lilshi   kerak, raqamlar   soni   satrga   aylantirilgan   sonning   raqamlar   soni.   Agar
sonning raqamlari soni ko’rsatilgan sondan ortiq bo’lsa, quyidagi ikki hol bo’lishi
mumkin.
1) Butun son berilgan bo’lsa,  unEm  ko’rinishida   ifodalanadi;
2) O’nli   kasar   ko’rinishida   bo’lsa,   ortiqcha   raqamlari
yaxlitlanadi. Quyidagi dasturda bu imkoniyatlar o’z aksini   topgan  #include <iostream.h>
#include <stdlib.h> 
using namespace std; 
int main()
{
int n=4; double i=4562, m=1234567,k=12.455476;
char   satr[20];
gcvt(i,n,satr);cout<<"i ning satr korinishi="<<satr<<'\n'; 
gcvt(m,n,satr);cout<<"m ning satr korinishi="<<satr<<'\n'; 
gcvt(k,n,satr);cout<<"k ning satr korinishi="<<satr<<'\n'; 
system("pause");
return 0;
}
Dastur natijasi quyidagicha bo’ladi. 
i ning satr   korinishi=4562
m ning satr korinishi=1.235e+006
k ning satr korinishi=12.46 1.2. C++   DASTURLASH   TILIDA   STRING   TURIGA   MANSUB   BO’LGAN SATRLI
O’ZGARUVCHILAR
String turidagi o’zgaruvchilarni e’lon qilish
C++   dasturlash   tilida   string   turidagi   o’zgaruvchilarni   e‘lon   qilish   uchun
string xizmatchi so’zi orqali amalga oshiriladi.
string s,s1;
String turiga mansub bo’lgan satrlar ustida amallar bajarish imkoniyati C++
dasturlash tilida keng imkoniyatga ega. C++ dasturlash tilida string turiga mansub
bo’lgan   satrlarni   boshlang‘ich   qiymatlarini   bir   nechta   usullarda   berish   mumkin.
String turidagi satrlarni boshlang‘ich qiymatlarini berish jarayonini quyidagi dastur
orqali qaraymiz:
#include <iostream.h>
#include <string.h> 
using namespace std; 
int main()
{   string s,s1; // s va s1 larni e‘lon qilish 
s="dastur"; // s ni boshlang‘ich qiymatini   berish String turidagi satrlar ustida amallar bajarish uchun uning elementlari bilan
ishlashga   to’g‘ri   keladi.   String   turidagi   satrlarni   har   bir   elementlariga   murojat
qilish uchun at() funksiyasi yoki oddiy [] elementga murojat qilish orqali murojat
qilinadi. Masalan s.at(3) s satrning uchinchi elementiga murojat qilinadi. s.at(3) va
s[3] holatlari teng kuchli   hisoblanadi.
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.
Misol:  Berilgan satrni ixtiyoriy elementini ekranga chiqaring.
#include <iostream.h>
#include <string.h> 
using namespace std; 
int main()
{   string   s;   int   n;
cin>>s;   cin>>n;
cout<<s.at(n-1);
return 0;
}
Kiritish ma‘lumotlari
s=dastur
n=3 Dastur natijasi
S
Demak, satrlarni yuqoridagi qoidalarga asoslanib e‘lon qilib uning ixtiyoriy
elementlariga ta‘sir qilish mumkin.
String turdagi satrlar ustida amallar bajarish
C++ dasturlash tilida string turdagi satrlar ustida bir nechta amallar bajarish
mumkin. String satrlarini char tipidagi satrlardan afzalliklari bir qancha amallarni
bajarish   inkoniyati   kengdir.   C++   dasturlash   tilida   string   satrlari   ustida   quyidagi
amallarni bajarish mumkin:
Amal Mazmuni Misol
=,+= Qiymat berish amaliS=	‖d
a s tu r	; ‖
s	
+=	‖a b s d	;‖
s1=s;s1=s; // s1 ni boshlang‘ich qiymatini berish
return 0;
} + Satrlarni ulash s=s+s1
==,!=,<,>,<=,>= Satrlarni solishtirish amallari
s==s1
s>=s1
s==s1 && s<s1
[] Indeks berish s[2]
<< Oqimga chiqarish cout<<s;
>> Oqimdan o’qish cin>>s1;
String turidagi satrlarni nusxalash
String turidagi satrlarni nusxalash uchun assign() funksiyasidan
foydalaniladi.   Assign()   funksiyasining   umumiy   ko’rinishi   quyidagicha   bo’ladi:
<s1>.assign(<s2>);
Assign funksiyasi s2 satrni s1 satrga nusxalash amalini bajaradi.
Misol:  s2 satrni s1 satrga nusxalash amalini bajaring.
#include <iostream.h>
#include <string.h> 
using namespace std; 
int main()
{ string  s1,s2; 
cin>>s2;
s1.assign(s2); // s1=s2 amaliga teng kuchli 
cout<<s1;
return 0;
}
Kiritish ma‘lumotlari
S2=dastur Dastur natijasi
Dastur
Bu funksiyaning quyidagi ko’rinishlaridan foydalaniladi.
a) satr2. assign (satr1);  ko’rinishi. Bu holda funksiya satr1ni to’liq satr2 ga
nusxalaydi.   Agar   satr2   initsializatsiyalangan   bo’lsa   ham   uning   oldingi   qiymati
unutiladi.
b) satr2.   assign   (satr1,n,m);   ko’rinishi.   Ushbu   variantida   funksiya   satr1ning
n- belgisidan keyingi m ta belgisini satr2 ga nusxalaydi.n-belgisi   kirmaydi.
c) satr2. assign (satr1,n);   ko’rinishi. Bu holda satr1 char turli satrli massiv
bo’lishi kerak. Funksiya char turli massivni string turiga aylantirib, uning   dastlabki  n ta belgisini satr2 ga nusxalaydi. Barcha variantlaridan foydalanish usullari 
quyidagi dasturda o’z aksini topgan.
Satrning biror qismidan nusxa olish funksiyasi
Bu amalni bajarish uchun satr1.substr(n,m) funksiyasidan foydalaniladi.
Funksiyaning quyidagicha ko’rinishlari mavjud.
a) satr1.substr(n,m).  Bunda  satr1  qismidan nusxa olinayotgan satr bo’lib, 
funksiya shu satrning  n -belgisidan keyingi  m  ta belgisidan nusxa   oladi;
b) satr1.substr(n)   ko’rinishida   foydalanilsa   satr1   satrning   n -belgisidan
oxirigacha nusxa   olinadi;
c) satr1.substr()   ko’rinishidan   foydalanilganda   esa   satr1 dan   to’liq   nusxa
olinadi. Bu holda funksiyaning qiymati qandaydir  string  turli o’zgaruvchiga 
berilishi kerak.
Satrning oxiriga boshqa satrni o’rnatish
String   turidagi   satrni   qismiga   boshqa   satrni   o’rnatish   uchun   append()
funksiyasidan   foydalaniladi.   append()   funksiyasining   umumiy   ko’rinishi
quyidagicha bo’ladi.
s1.append(s2,n,m);
Append funksiyasi s2 satrni n-elementidan m ta elementni s1 satr oxiriga 
o’rnatish amalini bajaradi.
Misol:  s2 satrni ikkinchi elementidan uchtasini s1 satrga o’rnating amalini 
bajaring.
#include <iostream.h>
#include <string.h> 
using namespace std; 
int main()
{ string s1,s2; 
cin>>s1;   cin>>s2;
s1.append(s2,2,3);
cout<<s1;
return 0;
}
Kiritish ma‘lumotlari
S1=dastur
S2=amal Dastur natijasi
Dastural
S2 satrning ikkinchi elementida a joylashgan, chunki satr nolinchidan 
boshlangan.
Bu funksiyani quyidagi ko’rinishlari mavjud: a) satr2. append (satr1);   ko’rinishidan foydalanilganda satr2 ning oxiridan
satr1 ulanadi. Agar satr2 initsializatsiya qilinmagan bo’lsa, satr2 o’zgaruvchi satr1
o’zgaruvchining qiymatini   oladi;
b) satr2.   append   (satr1,n,m);   ko’rinishidan   foydalanilganda   satr1ning   n   –
belgisidan keyingi m ta belgisi satr2 ning oxiridan   ulanadi;
c) satr2.   append   (satr1,n);   ko’rinishidan   foydalanilganda   satr1   char   turli
massiv   bo’lishi   kerak.   Funksiya   char   turli   satr1ni   string   turga   aylantirib,   uning
dastlabki n ta belgisini satr2 oxiridan ulaydi.
Funksiyaning   vazifasini   o’zlashtirish   uchun   quyidagi   dastur   va   uning
natijasini tahlil qiling.
#include <iostream.h>
#include <string.h> 
using namespace std; 
int main()
{ int j,i,s,n,m;
string s1="matnniulash",s3,s4="bo’lakni",s5,s7="bizning 
",s2="matnga   ";
char s6[]="assalom"; s2.append(s1);cout<<"s2="<<s2<<'\n'; 
s3.append(s1);cout<<"s3="<<s3<<'\n';
s4.append(s1,6,6);cout<<"s4="<<s4<<'\n' ; 
s5.append(s6,4);cout<<"s5="<<s5<<'\n'; 
s7.append("maktabdosh",6);cout<<"s7="<<s7<<'\n'; 
system("pause");
return 0;
}
Dastur natijasi quyidagicha bo’ladi 
s2=matnga matnni ulash
s3=matnni ulash 	
s4=bo’lakni ulash 
s5=assa
s7=bizning maktab
Satr tarkibiga boshqa satrni joylashtirish
String   turidagi   satrni   qismiga   boshqa   satrni   o’rnatish   uchun   insert()
funksiyasidan   foydalaniladi.   insert()   funksiyasining   umumiy   ko’rinishi
quyidagicha   bo’ladi.
satr2.insert (n,satr1,m,k)
Funksiyaning quyidagi ko’rinishlaridan foydalaniladi: a) satr2.insert (n,satr1);  ko’rinishidan foydalanilganda funksiya  satr2  ning  n -
o’rnidan boshlab  satr1  ni   joylashtiradi.
b) satr2.insert   (n,satr1,m,k);   ko’rinishidan   foydalanilganda   funksiya   satr2
ning   n -   belgisidan   keyin   satr1   ning   m -belgisidan   keyingi   k -ta   belgisini
joylashtiradi. m  - belgisi   kirmaydi.
s)  satr2.insert (n,satr1,m);  ko’rinishidan foydalanilganda funksiya  satr2   ning
n-b elgisidan keyin  satr1  ning dastlabki  m  ta belgisini joylashtiradi.   Maslan,
#include <iostream.h>
#include <string.h> 
using namespace std; 
int main()
{ int j,i,s,n,m;
string s1=" matnni joylash",s3,s4="bo’lakni",s5="tezroq ",s7="bizning
",s2="matnga ";
char s6[]="bo’ladi"; s2.insert(6,s1);cout<<"s2="<<s2<<'\n'; 
s4.insert(6,s1,10,4);cout<<"s4="<<s4<<'\n' ; 
s5.insert(3,s6,4);cout<<"s5="<<s5<<'\n';
s7.insert(3," maktabdosh",7);cout<<"s7="<<s7<<'\n';
system("pause");
return 0;
}
Dastur natijasi quyidagicha bo’ladi 
s2=matnga matnni joylash 
s4=bo’lakylasni
s5=tezbo’lroq 
s7=biz maktabning
Satr qismini o’chirish
String turidagi satrni qismini o’chirish uchun erase() funksiyasidan
foydalaniladi.   erase   ()   funksiyasining   umumiy   ko’rinishi   quyidagicha   bo’ladi:
s1.erase(n,m);
Erase funksiyasi s1 satrni n-elementidan m ta elementni o’chirish amalini 
bajaradi.
Misol:  s1 satrni ikkinchi elementidan uchtasini o’chirish amalini bajaring.
#include <iostream.h>
#include <string.h> using namespace std;
int main()
{ string s1; 
cin>>s1; 
s1.erase(2,3);
cout<<s1;
return 0;
}
Kiritish ma‘lumotlari
S1=dastur Dastur natijasi
Dar
Matn qismini boshqa matn qismi bilan almashtirish funksiyasi
Bu   amalni   bajarish   uchun   satr1.replace(n,m,satr2,i,j)   funksiyasidan
foydalaniladi. Funksiyaning quyidagicha ko’rinishlari mavjud.
a) satr1.replace(n,m,satr2);   ko’rinishidan   foydalanilganda   satr1   ning   n -
belgisidan keyingi  m  ta belgisi  satr2  bilan   almashtiriladi.
b) satr1.replace(n,m,satr2,i,j);   ko’rinishidan   foydalanilganda   satr1   ning   n -
belgisidan   keyingi   m   ta   belgisi   satr2   ning   i -belgisidan   keyingi   j   ta   belgisi   bilan
almashtiriladi.
s)   satr1.replace(n,m,satr2,k);   ko’rinishidan   foydalanilganda   satr1 ning   n -
belgisidan   keyingi   m   ta   belgisi   satr2char   turli   massivning   dastlabki   k   ta
belgisidan tashkil  topgan qismini   string   turiga aylantirib almashtiriladi. Quyidagi
dasturni tahlil qilish bilan bu fikrlarga ishonch hosil qilish   mumkin.
#include <iostream.h>
#include <string.h> 
using namespace std; 
int main()
{ char s4[]="bo’lmaydi";
string   s1="matn   bo’lagini   almashtirish",s2="bugun   dars   bo’ladi"; 
string s3="nima"; s1.replace(5,9,"qismini");cout<<"s1="<<s1<<'\
n'; s1.replace(4,8,s3,0,2);cout<<"s1="<<s1<<'\n' ; 
s2.replace(11,7,s4,9);cout<<"s2="<<s2<<'\n';
system("pause");
return 0;}
Dastur natijasi quyidagicha   bo’ladi  Satr tarkibidan satr qismini izlash
String   turidagi   satrni   tarkibidan   satr   qismini   izlash   uchun   find()
funksiyasidan foydalaniladi. find () funksiyasining umumiy ko’rinishi quyidagicha
bo’ladi:
s1.find(s2);
Find funksiyasi s1 satr ichidan s2 satrni izlash amalini bajaradi, agar topilsa,
s2 ning boshlanish indeksini saqlaydi aks holda -1 natija qaytaradi.
Misol:  s1 satr tarkibidan s2 satrni izlash amalini bajaring.
#include <iostream.h>
#include <string.h> 
using namespace std; 
int main()
{ int i; 
string  s1,s2;
cin>>s1; cin>>s2; 
i=s1.find(s2); 
cout<<i;
return 0;
}
Kiritish ma‘lumotlari
S1=dastur
S2=tur Dastur natijasi
3
Agar   satr   tarkibida   izlanadigan   qism   bir   necha   marta   bajarilsa,   oxirgi
qismning   indeksini   aniqlash   uchun   rfind()   funksiyasidan   foydalaniladi.   Rfind()
funksiyasini ishlash jarayoni find() funksiyasini ishlash jarayoni bilan bir xil.
Satrlarni solishtirish funksiyalari
Satrlarni   solishtirish   funksiyalari   satrdagi   belgilarning   kodlari   bo’yicha
solishtiradi.   Shuning   uchun   dastlab   klavituradagi   ko’p   foydalaniladigan
belgilarning kodlarini aniqlash dasturini va uning natijasini keltiramiz. s1=matn qismini almashtirish 
s1=matnni almashtirish 
s2=bugun dars bo’lmaydi
#include <iostream.h>
#include <string.h> 
using namespace std; int main()
{ int x,y,z,n,m,t,i;
char
a[40]="ABCDEFGHIJKLMNOPQRSTUVWXYZ",b[30]="abcdefghijklmnopq 
rstuvwxyz";
char c[40]="0123456789 !@#$%&*()+-=;,?^<>\/,.:";
for(i=0;i<=32;i++) {x=(int)a[i];y=(int)b[i];z=(int)c[i]; if(i<=25)
{cout<<"  "<<a[i]<<"   ning   kodi="<<x<<" "<<b[i]<<"   ning
kodi="<<y;
cout<<" "<<c[i]<<" ning kodi="<<z<<'\n';} else cout<<" "<<c[i]<<" 
ning kodi="<<z<<'\n';}
system("pause");
return 0;
}
Dastur natijasi quyidagicha   bo’ladi
A   ning   kodi=65 a   ning   kodi=97 0   ning   kodi=48 ^  ning kodi=94 
B   ning   kodi=66 b   ning kodi=98 1   ning   kodi=49 < ning kodi=60 
C   ning   kodi=67 c   ning kodi=99 2   ning   kodi=50 > ning  kodi=62
D   ning   kodi=68 d   ning   kodi=100 3   ning   kodi=51 /  ning kodi=47
E   ning   kodi=69 e   ning   kodi=101 4   ning   kodi=52 ,  ning   kodi=44
F   ning   kodi=70 f   ning kodi=102 5   ning   kodi=53 .  ning kodi=46
G   ning   kodi=71 g   ning   kodi=103 6   ning   kodi=54 :  ning kodi=58 
H   ning   kodi=72 h   ning   kodi=104 7  ning   kodi=55
I   ning   kodi=73 i   ning kodi=105 8  ning   kodi=56
J   ning   kodi=74 j   ning kodi=106 9  ning   kodi=57
K   ning   kodi=75 k   ning   kodi=107 probel ning   kodi=32
L   ning   kodi=76 l   ning   kodi=108 !  ning kodi=33 
M   ning   kodi=77 m   ning   kodi=109 @  ning kodi=64
N   ning   kodi=78 n   ning   kodi=110 #  ning kodi=35 
O   ning   kodi=79 o   ning   kodi=111 $  ning kodi=36 
P   ning   kodi=80 p   ning   kodi=112 %  ning kodi=37
Q   ning   kodi=81 q   ning   kodi=113 &  ning kodi=38
R   ning   kodi=82 r   ning   kodi=114 *  ning kodi=42 
S   ning   kodi=83 s   ning   kodi=115 (  ning kodi=40
T   ning   kodi=84 t  ning   kodi=116 )  ning kodi=41
U   ning   kodi=85 u   ning   kodi=117 +  ning   kodi=43
V   ning   kodi=86 v   ning   kodi=118 -  ning   kodi=45 W  ning kodi=87 w  ning kodi=119 =  ning kodi=61
X  ning kodi=88 x  ning kodi=120 ;  ning kodi=59
Y  ning kodi=89 y  ning kodi=121 ,  ning kodi=44
Z  ning kodi=90 z  ning kodi=122 ?  ning kodi=63
Satrlarni solishtirishda compare funksiyasining quyidagi bir nechta
ko’rinishlaridan foydalaniladi.
s=satr1.compare   (satr2);
Bunda  satr1 va  satr2  lar solishtiriladi. Agar
satr1> satr2 bo’lsa s>0 
satr1= satr2 bo’lsa s=0
 satr1 <satr2 bo’lsa s<0
bo’ladi.   Satrlarni   solishtirishda,   ularning   mos   nomerlaridagi   belgilarining
ASCII   kodlari solishtirilib ketilaveradi. Qaysidir nomerli belgilari bir-biridan farq
qilsa va ulardan qaysi birining kodi katta bo’lsa, o’sha satr katta hisoblanadi.
a) s=satr1.compare (n,m,satr2);   ko’rinishidan foydalanilganda   satr1   ning   n -
nomeridan keyingi  m  ta belgilari ketma-ketligi  satr2  bilan   solishtiriladi.
b) s=satr1.compare  (n,m,satr2,i,j);   ko’rinishidan  foydalanilganda   satr1   ning
n -belgisidan keyingi   m   ta belgilari ketma-ketligi   satr2   ning   i -belgisidan keyingi   j
ta belgilari ketma-ketligi bilan   solishtiriladi.
Solishtirish funksiyasining imkoniyatlarini quyidagi dastur misolida namoyish
qilamiz.
#include <iostream.h>
#include <string.h> 
using namespace std; 
int main()
{ int x,y,z,n,m,t,s5,s6,s7,s8;
string   s1="daraja   ko’rsatkichida",s2="ABCDEF",s3="ABCD";
string s4="daraja ko’rsat",s9="ab",s10="aa3-"; 
s5=s2.compare(s3); cout<<"s5="<<s5;
s6=s2.compare(s1); cout<<" s6="<<s6; 
s8=s9.compare(s10); cout<<" s8="<<s8; 
s7=s1.compare(s4); cout<<" s7="<<s7<<'\n';
x=s1.compare(0,14,s4); cout<<" x="<<x; 
y=s2.compare(0,5,s3); cout<<" y="<<y; 
z=s1.compare(1,4,s4,1,4); cout<<"   z="<<z; n=s1.compare(3,4,s4,2,4); cout<<" n="<<n; 
m=s1.compare(3,5,s4,3,4); cout<<" m="<<m<<'\n'; 
system("pause");
return 0;
}
Dastur natijasi quyidagicha bo’ladi 
s5=2 s6=-1 s8=1 s7=7
x=0 y=1 z=0 n=-1 m=1
Satr xossalarini aniqlash funksiyalari
Satrning xossalarini aniqlash uchun quyidagi funksiyalardan foydalaniladi.
x=satr.size();  funksiyasi  satr  ning o’lchamini aniqlaydi. 
x=satr.length();  funksiyasi  satr  ning belgilari sonini aniqlaydi. 
x=satr.max_size();  funksiyasi  satr  ning maksimal o’lchamini aniqlaydi. 
x=satr.capacity();  funksiyasi  satr  ning xotirada egallagan joyi hajmini
aniqlaydi.
x=satr.empty();   funksiyasi   qiymati   bool   turli   bo’lib,   agar   satr   bo’sh   bo’lsa, 
funksiya qiymati  true , aks holda  false  bo’ladi. Quyidagi dasturni va uning 
natijalarini tahlil   qling.
#include <iostream.h>
#include <string.h> 
using namespace std; 
int main()
{ int z,n,m,t,s6,s7,s8;bool x,y;float s5;
string s1="daraja ko’rsatkichida",s2="ABCDEF",s3="ABCD";
string s4="daraja ko’rsat",s9="ab87,/+|",s10="";
s5=s9.size(); cout<<"s5="<<s5; 
s6=s9.length(); cout<<" s6="<<s6; 
s8=s10.max_size(); cout<<" s8="<<s8; 
s7=s9.capacity(); cout<<" s7="<<s7<<'\n'; 
x=s9.empty(); cout<<" x="<<x; 
y=s10.empty(); cout<<" y="<<y<<'\n'; 
system("pause");
return 0;
}
Dastur natijasi quyidagicha bo’ladi s5=8
s6=8 s8=1073741820 s7=8
x=0 y=1  XULOSA.
C++   dasturlash   tilida   satrlar   bilan   ishlashda   men   char[],   String
tiplari   bilan   tanishib   chiqdim   undagi   barcha   funksiyalar   bilan   tanishib
chiqdim.
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.
C++   dasturlash   tilida   satrlar   uchun   standart   turdan   tashqari   string
turi ham qushimcha sifatida qaralgan. String turiga mansub bo’lgan satrlar
nol   terminatori   bilan   tugallanmasdan   u   oddiy   belgilar   massivi   sifatida
qaraladi.   String   turini   afzalliklari   satrlar   ustida   amallar   bajarilgandan
So’ng dinamik ravishda o’zgartirishlar mumkin. FOYDALANILGAN ADABIYOTLAR.
1. Стефан Р.Девис. С++ для чайников. Диаликтика. Москва -
2003. 337 с.
2.  2.Страуструп   Б.   Язик   программирования   С++.  
Специальное   издание.   –
Москва 1997. -1055 с.
3.Фролов А.Б. Фролов Г.Б. Язик С# Самоучитель. Москва 
2003.-559 с. 4.Герберт Ш. С++ Базовый курс.
Москва Издательский дом―
Ви ль я м с	.‖2 0 1 0 . - 6 2 1   с.
5. Стенли Липпман. Язык    программирование С++.
Базовой курс.  Вильямс - М.:   2014.
6. Никита Культин. Microsoft Visual C++ в задачах и
примерах.
БХВ-Петербург - Петербург.:2010.
7. Б. Страуструп. Язык программирования С++.
Специальное  издание.-М.:ООО «Бином-Пресс», 2006.-
1104   с.
8. Павловская   Т.А.   С++.   Программирование   на   языке   высокого  
уровня
–СПб.: Питер. 2005.- 461 с.
9. Подбельский В.В. Язык С++.- М.; Финансы и статистика-
2003 562с. 10.Павловская Т.С. Щупак Ю.С.
С/С++. Структурное
программирование. Практикум.-СПб.: Питер,2002-240с
11. Павловская Т.С. Щупак Ю.С. С++. Объектно- 
ориентированное программ-мирование. Практикум.-СПб.:  
Питер,2005-265с
12. С++: Учебный курс.- Харьков: Фолио; М.: ООО 
«Издательство АСТ»,   2001.-500с.

DASTURLASH ASOSLARI VA TILLARI FANIDAN “Dasturlashda satrlar va ular bilan ishlash amallari” mavzusida KURS ISHI

MUNDARIJA. KIRISH.....................................................................................................................................3 1.1. C++ DASTURLASH TILIDA SATR TURI VA ULARDAN FOYDALANISH USULLARI.....................................................................................................................4 1.2. C++ DASTURLASH TILIDA STRING TURIGA MANSUB BO’LGAN SATRLI O’ZGARUVCHILAR....................................................................................................24 XULOSA...................................................................................................................................32 FOYDALANILGAN ADABIYOTLAR ................................................................................33

KIRISH. C++ dasturlash tili tarkibida satr, to’plam, fayl va struktura turiga mansub bo’lgan ma‘lumotlar ustida amallar bajarish imkoniyati ham mavjud. Satr turi bu dasturlashning asosiy turlaridan hisoblanadi, bunda char turiga mansub barcha ma‘lumotlar shu tur asosida qayta ishlanadi. Dasturlash aoslarida satr turi bilan ishlash bu fanning asosiy maqsadi hisoblanadi. Tashkilot va muassasalarning axborotlarini qayta ishlash vaqtida uning tarkibida asosan satr turlari bilan ishlashga to’g‘ri keladi. Bu bobda satrlar ustida satrning uzunligi, satrni nusxalash, satrni kerakli joyga o’rnatish kabi bir qator vazifalar ko’rib o’tiladi. C++ dasturlash tilida to’plam va fayl turlari ham asosiy turlardan hisoblanadi. Matematik masalalarni hal etishda asosan to’plam turi katta ahmiyat kasb etadi. C++ dasturlash tilida to’plam, to’plam elementlari, element to’plamga tegishli ekanligini aniqlash masalalarini hal etish imkoniyati mavjud. Dasturlash asoslari fanida struktura turiga mansub bo’lgan ma‘lumotlar katta ahamiyat kasb etadi. Struktura turidagi ma‘lumotlar tarkibida bir nechta turlar birgalikda qaraladi, masalan, tashkilot xodimlari haqida ma‘lumotlar struktura turiga tegishli bo’ladi. Struktura turiga e‘tibor qaratsak, bu tur dasturlashning asosiy turlari hisoblanadi, bu tur asosan ma‘lumotlar bazasini boshqarish tizimlarining asosi hisoblanadi. Yuqorida ko’rilgan turlar va ulardan foydalanish imkoniyati C++ dasturlash tili tarkibida mavjud. Mazkur qullanmaning joriy bobida yuqoridagi turlar va ulardan foydalanish usullari qarab o’tiladi. 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. C++ dasturlash tilida satrlar uchun standart turdan tashqari string turi ham qushimcha sifatida qaralgan. String turiga mansub bo’lgan satrlar nol terminatori bilan tugallanmasdan u oddiy belgilar massivi sifatida qaraladi. String turini afzalliklari satrlar ustida amallar bajarilgandan So’ng dinamik ravishda o’zgartirishlar mumkin.

1.1. C++ DASTURLASH TILIDA SATR TURI VA ULARDAN FOYDALANISH USULLARI 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. 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#include <iostream.h> #include <string.h> using namespace std; int main() { char s[10]; // s satrli o’zgaruvchini e‘lon qilish return 0; }

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 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;