Mavzu: C++ da char tipli massivlar bilan ishlash Ishdan maqsad



Download 392,82 Kb.
Pdf ko'rish
bet4/4
Sana09.02.2022
Hajmi392,82 Kb.
#439099
1   2   3   4
Bog'liq
C da char va string

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


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
)

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:
#include

using
namespace
std; 
int
main
() { 
string
s;
getline
(cin, s); 
for
(
int
i = 0; i < s.length(); i++) {
if
(s[i]==
'A'

s[i] = 
'B'

else
if
(s[i]==
'B'
)
s[i] = 
'A'


cout<
substr(
begin_index, length
) funksiyasi. 
Satrining qism satri deb uning ichidan uzluksiz ketma-ket olingan qismiga 
aytiladi.
abcdefghijklmn
satridan
cdefg 
qism satrini olish uchun uning 
2-indeksdan boshlab 5 ta simvol olishimiz kerak. substr(begin_index, length) 
funksiyasi ikkita parametrga ega, boshlang‟ich indeks va bu indekdan boshlab 
qanda belgini olish kerakligi.
string
s = 
"abcdefghijklmn"
;
string
sub_s = s.substr(3, 5); 
cout<Natija: cdefg 
chiqadi.
substr(
begin_index
) funksiyasi. 
Bu funksiya faqat bitta parametrga ega bo‟lib 
begin_index
indeksdan boshlab 
oxirigacha bo‟lgan qism satrni qaytarib beradi.
string
s = 
"abcdefghijklmn"
;
string
sub_s = s.substr(2);
cout<Natija: 
cdefghijklmn
Matndagi so’zlarniga ajratish.
Misol. 
Matndagi so‟zlardan massiv hosil qiling va bosh harf bilan boshlangan 
so‟zlarni alohida qatorlarda chiqaring. Matn bitta qatorda berilgan. So‟zlar 
probel bilan ajratilgan. Simvollar soni 1000 dan oshmaydi.


№ 
Kiruvchi ma’lumot 
Chiquvchi ma’lumot 
1
Adsk asd SsjdDsd dDsd
Adsk
SsjdDsd
Echimi. 
Birinchi usul.
Qatorni o‟qib olgach uni probellar bilan ajratib chiqamiz.
#include

using
namespace
std; 
int
main
() { 
string
s; 
getline
(cin, s); 
// qatorni kiritamiz
s += 
" "

// 
ohiriga bitta probel qo'shamiz
string
words[1000]; 
// so'zlarni saqlash uchun massiv
int
cnt_w = 0; 
// 
so'zlarning soni o'zgaruvchisi, dastlabki qiymari nol
int
begin_index = 0;
// navbatdagi so'zning 
boshlang'ich indeksini saqlaydigan o'zgaruvchi, birinchi 
so'z nolinchi indeksdan boshlanadi
for
(
int
i = 0; i < s.length(); i++) {
if
(s[i]==
' '
) { 
// probel so'z yakunini topamiz
words[cnt_w++] = s.substr(begin_index, i-
begin_index);
//navbatdagi so'z begin_index da boshlanib i-
1 da tugallanadi. begin_index dan boshlanadigan i-
begin_index ta harfni qirqib olamiz
begin_index = i+1; 


for
(
int
i = 0; i < cnt_w; i++) { 
if
(words[i][0] >= 
'A'
&& words[i][0] <= 
'Z'
)
//bosh 
harf bilan boshlanganligini tekshiramiz
cout<"\n"



Ikkinchi usul.
cin>>s 
orqali
navbatdagi so‟zni o‟qib olamiz va uni 
massivga joylashtiramiz.
while
sikli ichiga yozsak kiritishni to‟xtatmagunga 
qadar o‟qib oladi. 
Crtl+Z
orqali to‟xtatiladi.
#include

using
namespace
std; 


int
main
() {
string
words[1000];
string
s;
int
cnt_w = 0;
while
(cin>>s) { 
words[cnt_w++] = s; 

for
(
int
i = 0; i < cnt_w; i++) {
if
(
isupper
(words[i][0]))
cout<endl



string tipli o’zgaruvchi ustiga bajariladigan boshqa 
funksiyalar. 
Funksiya 
Tavsifi 
s.find(t) 
s satrdan t satrni qidiradi va agar t satr topilsa 
uning boshlanish indeksini qaytaradi. Agar 
topilmasa 
-1
qaytaradi.
string
s = 
"erfabceabc"
;
string
t = 
"abc"
;
int
ind = s.find(t);
cout<Natiija: 3
 
s.insert(
from
, t) 

satrga 
from
indeksiga t satrni qo‟shadi.
string
s = 
"abcde"
;
string
t = 
"fgh"
;
int
from = 2; 
s.insert(from, t);
cout<Natijada s satr qiymati
 
ab
fgh
cde
ga teng bo’ladi
 
s.append(t) 
s
satr davomiga 
t
satrni qo‟shadi.
string
s = 
"abcde"
;
string
t = 
"fgh"
;
s.append(t);
cout<Natijada s satr qiymati
 
abcde
fgh
ga teng bo’ladi

Oxiriga satr qo‟shishni


 
s += t 
shaklida yozish 
ham mumkin.
s.erase(from,
cnt
); 


s satrdan form indeksidan boshlab 
cnt ta belgini o’chirib tashlaydi.
string
s = 
"abcdefghij"

int
from = 2;
int
cnt = 3; 
s.erase(from, cnt); 
cout<Natijada s satr qiymati
 
abfghij
ga teng bo’ladi
s.copy(a,
cnt
, from); 

satrdan
from 
indexdan boshlab
cnt 
ta 
simvolni

char massivga nusxa olish

Oxirgi indeksni
null 
qiymatga aulantirish 
lozim. 
string
s = 
"abcdefghijklm"
;
char
a[100];
int
cnt = 5, from = 3;
s.copy(a, cnt, from); 
a[cnt] = 
'\0'

cout<simvolli massiv
defgh
qiymatini qabul qiladi. 

satrni to‟liq
a char 
massiviga o‟tirish 
uchun
s.copy(a, s.length(), 0); 
a[s.length()] = 
'\0'

Yoki sikl yordamida amalga oshirishimiz mumkin:
for
(
int
i = 0; i < s.length(); i++) {
a[i] = s[i]; 

a[s.length()] = 
'\0'

s.c_str();

satrni char massivga o‟zgaruvchida saqlamasdan 
o‟tish.
Bu funksiydan string ko‟rinishida berilgan satr sonni 
butunga o‟tishda foyldalanishimiz mumkin.
string
s = 
"42351"

int
a = 
atoi
(s.c_str());
cout<

Download 392,82 Kb.

Do'stlaringiz bilan baham:
1   2   3   4




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