Belgili tur va undan foydalanish
Reja:
1.Belgili tur haqida umimiy ma’lumotlar.
2.C++ tarkibidagi belgili turga oid standart funksiyalar.
3.Belgili turga oid misollar(amaliy qism).
Belgili tur haqida umumiy ma’lumotlar
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.
#include include Using namespace std; int main() { char s[10]; //s satrli o’zgaruvchini e’lon qilish return 0 ; }
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.
#include #include using namespace std; int main() {char s[10]; //s satrli o'zgaruvchini e'lon qilish cin.getline(s,10); cout<
Kiritish ma’lumotlari Absdefghl
Dastur natijasi Absdefghl
C++ tarkibidagi belgili turga oid standart funksiyalar
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();
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.
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.
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.
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.
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.
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();
Strrev(s) funksiyasi s satrni teskari tartibda jaoylashtiradi.
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();
Strchr(s) funksiyasi s satr ichida p belgini izlaydi agar topilsa shu elementdan keyingi qismni aks holda nullni qaytaradi.
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();
Strstr(s) funksiyasi s satr ichida p qism satrni izlaydi agar topilsa shu satrdan keyingi qismni aks holda nullni qaytaradi.
MISOLLAR.
1. S matn berilgan bo‘lsin. Bu matnda “a” belgisi necha marta uchraydi ?
#include
#include
using namespace std;
int main()
{int n,x=0;string s;
getline(cin,s);
for(int i=0;s[i];i++)
{if(s[i]=='a') x++;}
cout << x<< endl;
return 0;
}
2.C belgisi va S1, S2 satrlari berilgan. S1 satriga shu satrda uchragan har bir C belgisidan keyin S2 satrini qo’shuvchi programma.
#include
using namespace std;
int main()
{int n,x=0;string s,p,t=" ";
getline(cin,p);
getline(cin,s);
for(int i=0;s[i];i++)
{if(s[i]=='c')t+=s[i]+p;
else t+=s[i];}
cout << t;
return 0;}
3. Berilgan matndan katta xarflar bilan boshlanadigan so’zlar sonini toping.
.
#include
using namespace std;
int main()
{string s; int j=0;
while(getline(cin,s))
{int l=s.length();
if(s[0]>='A'&&s[0]<='Z') j++;
for(int i=1;i<=l-1;i++)
{if(s[i]==' '&&s[i+1]>='A'&&s[i+1]<='Z') j++;} cout<
4.Sizga bitta natural sonni anglatuvchi satr berilgan shu sonning raqamlarini
teskari tartibda chiqarish.
#include
using namespace std;
int main()
{string s; cin>>s;
int l=s.length(); string y=” ”;
for(int i=l-1;i>=0;i--)
{y+=s[i];} cout<
return 0;}
5.S matn berilgan. Bu matndadagi katta harflarni alohida chiqaring.
#include
using namespace std;
int main()
{string s;
cin>>s;
int l=s.length(); string y=" ";
for(int i=0;i<=l;i++) {
if((int)s[i]>=65&&(int)s[i]<=90)
y+=s[i];}
cout<
return 0;}
6.s satrdagi raqamlar ko’paytmasini toping.
#include
using namespace std;
int main()
{string s;
cin>>s;
int l=s.length(); int y=1;
for(int i=0;i<=l;i++) {
if((int)s[i]>=48&&(int)s[i]<=57)
y*=(int)s[i];}
cout<
return 0;}
7. Matndagi unli хarflarning umumiy sоnini хisоblоvchi dastur tuzilsin (lotin alifbosidagi unli xarflar A,a,O,o,I,i,U,u,E,e)
#include
using namespace std;
int main()
{string s; getline(cin,s); int l=s.length(); int k=0;
for(int i=0;i
s[i]=='U'||s[i]=='u'|| s[i]=='O`'||s[i]=='o`')
k++;}
cout<
8.S satr tarkibida d harfi necha marta qatnashganini toping.
#include
using namespace std;
int main()
{string s;
getline(cin,s); int l=s.length();
int k=0;
for(int i=0;i
{if(s[i]=='d')
k++;} cout<
return 0;}
9.S satr berilgan.undagi lotin katta belgilarning Ascii kodlari yig’ndisini toping.
#include
using namespace std;
int main()
{string s;
cin>>s;
int l=s.length(); int y=0;
for(int i=0;i<=l;i++) {
y+=(int)s[i];}
cout<
return 0;}
10. Matndagi A va Y хarflarining sоnini aniqlash dasturi tuzilsin
#include
using namespace std;
int main()
{ int n1 = 0 , n2 = 0 ; string s ;
getline(cin, s);
for ( int i = 0 ; s[i] ; i++ ){
if ( s[i] == 'A' ) n1++ ;
else if ( s[i] == 'Y' ) n2++ ; }
cout << n1 << endl ; cout << n2 ;
return 0 ; }
Do'stlaringiz bilan baham: |