Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

9-LEKCIYA PREZENTACIYA

.pdf
Скачиваний:
0
Добавлен:
25.12.2023
Размер:
496.83 Кб
Скачать

9-LEKCIYA. QATARLAR HÁM KEŃEYTILGEN BELGILER (CHAR TIPINDE). QATAR STANDART FUNKCIYALARÍ HÁM

OLAR JÁRDEMINDE QATARLARDÍ QAYTA ISLEW.

Standart C++ tili eki tiptegi belgiler jıynaǵın qollapquwatlaydı. Birinshi tipke

ádettegidey “tar” belgiler dep atalıwshı 8-bitli belgiler jıynaǵı kiredi, ekinshisine 16-bitli “keń‟” belgiler kiredi. Til kitapxanasında hár bir topar belgileri ushın ayrıqsha funkciyalar toplamı anıqlanǵan.

C++ tilinde qatar ushın ayrıqsha tip anıqlanbaǵan. Qatar char - tipindegi belgiler massivi sıpatında

qaraladı

hám

bul

belgiler

izbe-izligi

qatar

terminatorı dep atalıwshı 0 kodlı belgi menen tamamlanadı („\0‟). Ádette nol-terminatorlar menen tawsılǵan qatarlar ASCIIZ-qatarlar dep ataladı.

Tómendegi tablicada C++ tilinde belgi sıpatında isletiliwi múmkin bolǵan

turaqlılar toplamıTó endkeltirilgengi abl cada C++. tilinde belgi sıpatında isletiliwi múmkin bolǵan

turaqlılar toplamı keltirilgen.

1-keste. C++ tilindegi belgi turaqlılar

1-keste. C++ tilindegi belgi turaqlılar

Belgiler klassları

 

Belgi turaqlılar

 

 

 

Bas háripler

 

„A‟ …‟Z‟, „A‟…‟Я‟

 

 

 

Kishi háripler

 

„а‟ …‟z‟, „á…‟я‟

 

 

 

Sanlar

 

„0‟ …‟9‟

 

 

 

Bos orın

 

Gorizontal tabulyaciya (ASCII kodı 9), qatardı

 

 

ótkeriw (ASCII kodı 10), vertikal tabulyaciya

 

 

(ASCII kodı 11), formanı ótkeriw (ASCII kodı

 

 

12), karetkani qaytarıw (ASCII kodı 13).

 

 

 

Punktuaciya

belgileri

! ” # $ & „ ( ) * + - , . / : ; < = > ? @ [ \ ] ^ _ { | } ~

(ajıratıwshılar)

 

 

 

 

 

Basqarıw belgileri

 

ASCII kodı 0...1Fh aralıǵında hám 7Fh bolǵan

 

 

belgiler

 

 

 

Probel

 

ASCII kodı 32 bolǵan belgi

 

 

 

On altılıq sanlar

 

„0‟…‟9‟, „Á…‟F‟, „á…‟f‟

 

 

 

Qatar massivin járiyalaw waqtında, qatar sońına terminator qoyılıwı hám nátiyjede qatarǵa qosımsha bir bayt bolıwın itibarǵa alıwımız kerek:

char qatar[10];

Bul járiyalawda qatar qatarı ushın jámi 10 bayt ajıratıladı, sonnan 9 bayt qatar payda etiwshi belgiler ushın hám 1 bayt terminator ushın.

Qatar ózgeriwshileri járiyalanǵanda baslanǵısh mánislerdi qabıl etiwi múmkin. Bunday jaǵdayda kompilyator avtomat túrde qatar uzınlıǵın esaplaydı hám qatar sońına terminatordı qosıp qoyadı:

char hapte_kuni[]=”Juma”;

bul járiyalaw tómendegi járiyalaw menen ekvivalent:

char hapte_kuni[]={’J’,’ú,’m’,’á,’\0’};

Qatar

mánisin

oqıwda

aǵımlı

oqıw

operatorı

“>>”

ornına getline() funkcıyasın isletken maqul boladı, sebebi aǵımlı oqıwda probeller biykar etiledi (olar qatar belgisi bolıp esaplansada) hám oqılıp atırǵan belgiler izbe-izligi qatarda asıp ketkende de belgilerdi kiritiw dawam etiwi múmkin.

Nátiyjede qatar ózine ajıratılǵan ólshemnen artıq belgilerdi “qabıl” etedi. Sol sebepli, getline() eki parametrge iye bolıp, birinshi parametr oqıw ámelge asırıp atırǵan qatarǵa kórsetkish, ekinshi parametrde bolsa oqılıwı kerek bolǵan belgiler sanı kórsetiledi. Qatardı getline() funkciyası arqalı oqıwına mısal kóreyik:

#include <iostream.h> int main()

{

char qatar[6];

cout << ”qatardı kiritiń “ << ’\n’; cin.getline(satr, 6); cout << ”siz kiritken qatar: “ << qatar; return 0;

}

Programmada isletilgen qatar qatarı 5 belgini qabıl etiwi múmkin, artıqları taslap jiberiledi. getline() funkciyasına múráját etiwde ekinshi parametr mánisi oqılıp atırǵan qatar uzınlıǵınan úlken bolmawı kerek.

Qatar menen islesetuǵın funkciyanıń kópshiligi «string.h» kitapxanasında jaylasqan. Salıstırmalı kóp isletiletuǵın funkciyalar ańlatpaların keltiremiz.

Qatar uzınlıǵın anıqlaw funkciyaları.

Qatarlar menen islewde, kópshilik jaǵdaylarda qatar uzınlıǵın biliw zárúr boladı. Bunıń ushın «string.h» kitapxanasınan strlen() funkciyası anıqlanǵan bolıp, onıń sintaksisi tómendegishe boladı:

size_t strlen(const char* string)

Bul funkciya uzınlıǵı esaplanıwı kerek bolǵan qatar basına kórsetkish bolǵan jalǵız parametrge iye hám ol nátiyje sıpatında belgisiz (+,-) pútin sandı qaytaradı. strlen() funkciyası qatardıń haqıyqıy uzınlıǵınan bir kem mánis qaytaradı, yaǵnıy nol-terminator ornı esapqa alınbaydı.

Dál sonday maqsette sizeof() funkciyasınan da paydalanıw múmkin hám ol strlen() funkciyasınan parıqlı túrde qatardıń haqıyqıy uzınlıǵın qaytaradı. Tómendegi keltirilgen mısalda qatar uzınlıǵın esaplawdıń hár eki variantı keltirilgen:

#include <iostream.h> #include <string.h> int main()

{

char Str[] = "1234567890";

cout << "strlen(Str) = " << strlen(Str) << endl; cout << "sizeof(Str) = " << sizeof(Str) << endl; return 0;

}

Programma islewi nátiyjesinde ekranǵa

strlen(Str) = 10 sizeof(Str) = 11

xabarı shıǵadı.

Ádette sizeof() funkciyası getline() funkciyasınıń ekinshi argumenti sıpatında isletiledi hám qatar uzınlıǵın anıq kórsetpew imkanın beredi:

cin.getline(Qatar, sizeof(Qatar));

Mısalı ushın: Tek ǵana latın háriplerinen ibarat bolǵan qatar berilgen. Ondaǵı hár túrli háripler muǵdarı anıqlansın.

int main()

{

const int n = 80; char qatar[n];

cout << "Qatardı kiritiń: "; cin.getline(qatar, sizeof(qatar)); float s = 0;

int k;

for(int i = 0; i < strlen(qatar); i++) if(qatar[i] != ' ')

{

k = 0;

for(int j = 0; j < strlen(qatar); j++) if(qatar[i]==qatar[j] ||

abs(qatar[i]- qatar[j]) == 32) k++; s += 1. / k;

}

cout << "qatardaǵı túrli háripler muǵdari: " << (int)s; return 0;

}

Programmada qatar ushın 80 uzınlıǵındaǵı qatar belgileri massivi járiyalanǵan hám onıń mánisi klaviaturadan kiritiledi. Másele tómendegishe sheshiledi. Ishpe-ish jaylasqan tákirarlaw operatorı járdeminde qatar massiviniń hár bir elementi – qatar[i] massiviniń hámme elementleri - qatar[j] menen ústi-

ústine túsiwi yamasa olar bir-birinen 32 sanına parıq etıwı (úlken hám kishi latın háripleriniń kodları ortasındaǵı parıq) jaǵdayları k ózgeriwshisinde sanaladı hám s ulıwmalıq jıyındıǵa 1/k mánisi menen qosıladı. Programma sońında bir-birinen ajıratıwshı probel belgisi sheklep ótiledi.

Programmaǵa

qatardaǵi túrli háripler muǵdarı

qatar kiritilse, ekranǵa juwap sıpatında

Qatardaǵı túrli háripler muǵdarı: 13

qatari shıǵarıladı.

Соседние файлы в предмете Программирование на C++