orqali chiqarishdan tashqari sikl
bilan ham chiqarish mumkin:
1)
for
(
int
i = 0; i <
strlen
(s); i++){
cout<}
2)
for
(
int
i = 0; s[i] !=
'\0'
; i++){
cout<}
s[i] !=
'\0'
bilan
s[i] !=
NULL
bir
xil
.
Alohida belgilar ko‟rinishida ham berish mumkin:
char
s[10] = {
'a'
,
'b'
,
'c'
,
'd'
};
char tipli massiv bilan ishlash funksiyalari.
char tipli massiv satr deb ham nomlanadi.
Funksiya
Tavsifi
strlen
(
satr_nomi
)
char massiv uzunligini aniqlaydi . Bunda NULL simvol hisobga olmaydi.
Nusxa olish
strcpy
(
s1,s2
)
s2 char massiv simvollarini s1 ga ko’chiradi.
char
s1[] =
"abcd123456"
;
char
s2[] =
"efghij"
;
strcpy
(s1,s2);
chiqadi.
cout<efghij
strncpy
(
s1,s2, n
)
s2 massivning dastlabki n ta simvolini s1 massivning dastlabki dastlabki n ta
indeksiga joylashtiradi.
char
s1[] =
"abcdefghijklmn"
;
char
s2[] =
"123456"
;
strncpy
(s1, s2, 4);
cout<endl
;
strncpy
(s1, s2, 40);
cout<endl
;
Natija
:
1234efghijklmn
123456
Ulash
strcat(
s1,s2
)
s2 massivni s1 massivning davomiga birlashtiradi.
char
s1[] =
"ab"
;
char
s2[] =
"ba"
;
strcat
(s1, s2);
cout<endl
;
Natija:
abba
strncat(
s1,s2,n
)
s2 ning dastlabki n ta harfini satrni s1 massivning davomiga birlashtiradi.
Satrlarni taqqoslash
strcmp(
s1,s2
)
s1 char massiv bilan s2 char massivni leksikografik jihatdan taqqoslaydi va int tipidagi
son qaytaradi. Agar s1=s2 teng bo’lsa
-
0, s1>s2 bo’lsa
- 1, s1bo’lsa
- -1
qaytaradi. Harflarning kata kichikligi hisobga olinadi.
strncmp(
s1,s2,n
)
s1 va s2 satrlarning dastlabki n ta simvollarini taqqoslaydi va agar satrlar teng bo’ls
a 0,
s1>s2
bo’lsa
- 1
, s1- -1 qiymat qaytaradi. Harflarning katta kichikligi hisobga
olinadi.
stricmp(
s1,s2
)
s1 char massiv bilan s2 char massivni leksikografik jihatdan taqqoslaydi va int tipidagi
son qaytaradi. Agar s1=s2 teng bo’lsa
-
0, s1>s2 bo’lsa
-
1, s1- -1
qaytaradi. Harflarning kata kichikligi hisobga olinmaydi.
char
s1[100] =
"abA"
;
char
s2[100] =
"ABa"
;
cout<<
stricmp
(s1, s2);
Natija: 0
strnicmp(
s1,s2,n
)
s1 va s2 satrlarning dastlabki n ta simvollarini taqqoslaydi va agar satrlar teng bo’lsa 0,
s1>s1 bo’lsa >0, s1Harflarning kata kichikligi hisobga
olinmaydi.
Simvollar bilan ishlash
isalnum(
c
)
agar c harf yoki raqam bo’lsa
true
, boshqa holatlardan
false
qaytaradi.
isalpha(
c
)
agar c harf bo’lsa
true
, boshqa holatlardan
false
qaytaradi.
isdigit(
c
)
agar c raqam bo’lsa
true
, boshqa holatlardan
false
qaytaradi.
islower(
c
)
agar c kichik ingliz harf bo’lsa
true
, boshqa holatlardan
false
qaytaradi.
isupper(
c
)
agar c katta ingliz harf bo’lsa
true
, boshqa holatlardan
false
qaytaradi.
isspace(
c
)
agar c probel bo’lsa
true
, boshqa holatlardan
false
qaytaradi.
toupper(
c
)
agar c simvoli kichik ingliz harfi bo’lsa u holda unga mos katta harfni qaytaradi.
Aks
holda o’zgartirilishsiz qoldiriladi.
O’zgartirish funksiyalari
O’zgartirish funksiyalaridan foydalanish uchun
#include
kerak bo‟ladi.
atof(
s
)
s1
satrni
double tipidagi songa o’zgartiradi.
char
s[100] =
"123.45"
;
double
a
=
atof
(s); cout<
atoi(
s
)
s1
satrni
int tipidagi songa o’zgartiradi.
atoll(
s
)
s1
satrni
long long tipidagi songa o’zgartiradi.
Funksiya
Tavsifi
itoa(a,
s, k
)
a int sonini s char massivga k asosli sanoq sistemasida
o’tkazadi. To’g’ridan
-
to’g’ri o’zini o’tkazish uchun sanoq
sistemasi asosiga 10 yozish lozim.
char
s[100];
int
a = 456;
itoa
(a,
s, 10); cout<
lltoa(a,
s, k
)
a long long tipidagi sonni sonini s char massivga k asosli sanoq
sistemasida o’tkazadi.
Standart kutibxonaning kiritish/chiqarish funksiyalari
getchar(
с
)
Bitta belgili o’zgaruvchini(char) o’qib uning qiymatini qaytaradi. putchar(с) c char
o’zgaruvchining qiymatini chiqarish.
char
с
= getchar(); putchar(
с
);
gets(
s
)
s
char
massivga toki ENTER bosilmagunga qadar bir qatorni o’qib oladi. puts(s) satrni
chiqarish funksiyasi.
char
s[100];
gets
(s);
puts
(s);
Masala.
Berilgan satrdagi katta ingliz alvafiti harflari sonini, katta harflar sonini, kichik
harflar sonini, raqamlar sonini, ma‟lum tinish belgilar sonini(
. , ! ? : ;
) aniqlaydigan
dastur tuzing. Satr bir qatordan beriladi uzunligi 1000 simvoldan oshmaydi.
#include
#include
#include
using
namespace
std;
int
main
() {
char
s[1000];
gets
(s);
int
cnt_lowers = 0;
int
cnt_uppers = 0;
int
cnt_letters = 0;
int
cnt_digits = 0;
int
cnt_punkt_marks = 0;
for
(
int
i = 0; i <
strlen
(s); i++)
{
if
(s[i] >=
'a'
&& s[i] <=
'z'
) cnt_lowers++;
if
(s[i] >=
'A'
&& s[i] <=
'Z'
) cnt_uppers++;
if
(s[i] >=
'0'
&& s[i] <=
'9'
) cnt_digits++;
if
(s[i]==
'.'
|| s[i]==
','
|| s[i]==
'!'
|| s[i]==
'?'
|| s[i]==
':'
|| s[i]==
';'
) cnt_punkt_marks++;
if
((s[i] >=
'a'
&& s[i] <=
'z'
) || (s[i] >=
'A'
&& s[i] <=
'Z'
)) cnt_letters++; }
cout<<
"Kichik harflar soni: "
<endl
;
cout<<
"Katta harflar soni: "
<endl
;
cout<<
"Harflar harflar soni: "
<endl
;
cout<<
"Raqamlar harflar soni: "
<endl
;
cout<<
"Tinish belgilari soni: "
<endl
;
}
C++ ning simvollar bilan ishlaydigan funksiyalari orqali
ham tekshirishimiz mumkin.
Masalani yechishning boshqa usuli:
#include
#include
#include
using
namespace
std;
int
main
() {
char
s[1000];
gets
(s);
int
cnt_lowers = 0;
int
cnt_uppers = 0;
int
cnt_letters = 0;
int
cnt_digits = 0;
int
cnt_punkt_marks = 0;
for
(
int
i = 0; i <
strlen
(s); i++) {
if
(
islower
(s[i]))
if
(s[i] >=
'A'
&& s[i] <=
'Z'
)
cnt_uppers++;
if
(
isdigit
(s[i])) cnt_digits++;
if
(
ispunct
(s[i])) cnt_punkt_marks++;
if
(
isalpha
(s[i])) cnt_letters++;
}
cout<<
"Kichik harflar soni: "
<endl
;
cout<<
"Katta harflar soni: "
<endl
;
cout<<
"Harflar harflar soni: "
<endl
;
cout<<
"Raqamlar harflar soni: "
<endl
;
cout<<
"Tinish belgilari soni: "
<endl
;
}
Mavzu: C++ da string
Ishdan maqsad.
C++ da satrlar bilan ishlash uchun kiritilgan
string
sinfi bilan
tanishish, uning metodlarini misollarda qo‟llash.
C++ dasturlash tilining C dasturlash tilidan farqlaridan biri C++ da satrlar bilan
ishlash uchun
string
sinfi mavjud
. string
tipli o‟zgaruvchi o‟zida oldingi
laboratoriya ishida ko‟rib chiqilgan
simvollar ketma-ketligini saqlash va amallar
bajarish uchun foydalaniladi. string C++ ning standart kutbxonasi tarkibiga
kiradi, shuning uchun u bilan ishlash uchun
using
namespace
std ni yozish
lozim.
#include
using
namespace
std;
int
main
() {
string
s;
cin>>s;
cout<}
Bu dasturda klaviatura orqali kiritilgan simvollar ketma-ketligini (satr) o‟qiydi
va chiqarib beradi. cin>>s birinchi probelgacha bo‟lgan satrni o‟qiydi. Bir
qatorni to‟liq kiritish uchun
getline
dan foydalanamiz:
string
s;
getline
(cin, s);
cout<Satr uzunligi deb satrdagi simvollar soni ga aytiladi. Satr uzunlgini topish uchun
satr o‟zgaruvchisidan keyin nuqta yozilib length() moydoniga mujorat qilanadi:
cout<Satr simvollari
0 dan s.length()-1
gacha
indekslanadi.
string tipli satrning simvollariga murojat qilish char tipli massiv dagi kabi bo‟ladi.
Misol.
Bitta qatorda katta harflardan va probellalrdan iborat matn berilgan. Undagi
A
harfini
B
ga,
B
harfini esa
A
ga o‟zgartiruvchi dastur tuzing.
№
Kiruvchi ma’lumot
Chiquvchi ma’lumot
1
AB
BA
2
CBADE BREDA
CABDE AREDB
Yechimi:
0>
Do'stlaringiz bilan baham: