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

14-ameliy prezentaciya

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

if(qatar[i + j] != qatar_astı[j])

ústi_ústine = false; if(ústi_ústine) return i;

}

}

return -1;

}

void Qırqıw(char qatar[], int orın, int qırqıw_sanı)

{

int qatar_uzınlıǵı = strlen(qatar); if(orın < qatar_uzınlıǵı)

{

if(orın + qırqıw_sanı >= qatar_uzınlıǵı) qatar[orın] = '\0';

else

for(int i = 0; qatar[orın + i - 1] != '\0';

i++)

qatar[orın + i] = qatar[orın + qırqıw_sanı+i];

}

}

void Jaylastırıw(char qatar[], char qatar_astı[], int orın)

{

char waqtınsha[n]; strcpy(waqtınsha, qatar + orın); qatar[orın] = '\0'; strcat(qatar, qatar_astı); strcat(qatar, waqtınsha);

}

Programmada hár bir másele astına sáykes funkciyalar dúzilgen:

1. int Izlew(char qatar[], char qatar_astı[]) – funkciyası qatar qatarına qatar_astı qatarınıń shep tárepinen birinshi kiriwiniń ornın qaytaradı. Eger qatar qatarında qatar_astı ushıramasa -1 mánisin qaytaradı.

2. void Qırqıw(char qatar[], int orın, int qırqıw_sanı) – funkciyası qatar qatarınıń orın ornınan baslap qırqıw_sanı sandaǵı belgilerdi qırqıp taslaydı. Funkciya nátiyjesi qatar qatarında payda boladı.

3. void Jaylastırıw(char qatar[], char qatar_astı[], int orın) – funkciyası qatar qatarına, onıń orın ornınan baslap qatar_astı qatarın jaylastıradı.

Bas funkciyada qatar (S), onda almastırılatuǵın qatar (S1) hám S1 ornına jaylastırılatuǵın qatar (S2) aǵımınan oqıladı. Tákirarlaw operatorı orınlanıwınıń hár bir qádeminde S qatarınıń shep tárepinen baslap S1 qatarı izlenedi. Eger S qatarında S1 qatarı bar bolsa, ol qırqıladı hám sol orınǵa S2 qatarı jaylastırıladı. Tákirarlaw processi Izlew() funkciyası -1 mánisin qaytaraman degenshe dawam etedi.

Qatarlardı salıstırıw

Qatarlardı salıstırıw olardaǵı sáykes orında jaylasqan belgiler kodların ózara salıstırıw menen anıqlanadı. Bunıń ushın «string.h» kitapxanasında standart

funkciyalar bar. strcmp() funkciyası sintaksisi:

int strcmp(const char *str1, const char *str2)

kórinisine iye bolıp, funkciya str1 hám str2 salıstırıw nátiyjesi sıpatında san mánisin qaytaradı hám olar tómendegishe ańlatıladı:

a)i < 0 - eger str1 qatarı str2 qatarınan kishi bolsa; b)i = 0 - eger str1 qatarı str2 qatarına teń bolsa; c)i > 0 - eger str1 qatarı str2 qatarınan úlken bolsa.

Funkciya háriplerdiń registrin parıqlaydı. Bunı mısalda kóriwimiz múmkin:

char qatar1[80] = ”Programmalastırıw tilleri: C++, pascal.“; char qatar2[80] = ”Programmalastırıw tilleri: C++, Pascal.“; int i;

i = strcmp(qatar1, qatar2);

Nátiyjede i ózgeriwshisi oń mánis qabıl etedi, sebebi salıstırılıp atırǵan qatarlardaǵı “pascal” hám “Pascal” qatar bóleklerinde birinshi háripler parıq qıladı. Keltirilgen mısalda i mánisi 32 boladı. Bul parıqlanıwshı háripler kodlarınıń ayırması. Eger funkciyaǵa

i = strcmp(qatar2, qatar1);

kórinisinde múráját etilse, i mánisi teris san -32 boladı.

Eger qatarlardaǵı bas yamasa kishi háriplerdi parıqlamastan salıstırıw ámelin orınlaw zárúr bolsa, bunıń ushın strcmpi() funkciyasınan paydalanıw múmkin.

Joqarıda keltirilgen mısaldaǵı qatarlar ushın

i = strcmpi(satr2, satr1);

ámeli orınlanǵanda i mánisi 0 boladı. strncmp() funkciyası sintaksisi

int strncmp(const char *str1, const char *str2, size_t num);

kórinisinde bolıp, str1 hám str2 qatarlardı baslanǵısh num sanındaǵı belgilerdi salıstıradı. Funkciya háripler registrin itibarǵa aladı. Joqarıdaǵı mısalda anıqlanǵan qatar1 hám qatar2 qatarlar ushın

i = strncmp(qatar1, qatar2, 31);

ámeli orınlanıwında i mánisi 0 boladı, sebebi qatarlar basindaǵı 31 belgiler birdey. strncmpi() funkciyası strncmpi() funkciyasınday orınlanadı, ózgeshe tárepi sonnan

ibarat, salıstırıwda háriplerdiń registri esapqa alınbaydı. Dál usı qatarlar ushın

i=strncmpi(qatar1, qatar2, 32);

ámeli orınlanıwı nátiyjesinde i ózgeriwshi mánisi 0 boladı.

Qatarda belgini izlew funkciyası

Qatarlar menen islewde ondaǵı qandayda bir belgini izlew ushın «string.h» kitapxanasında bir qatar standart funkciyalar bar.

Qanday da bir belginiń berilgen qatarda bar yamasa joq ekenligin anıqlap beriwshi strchr() funkciyasınıń prototipi

char* strchr(const char *string, int c);

kórinisinde bolıp, ol c belgisin string qatarında izleydi. Eger izlew sátli bolsa, funkciya sol belginiń qatardaǵı ornın funkciya nátiyjesi sıpatında qaytaradı, keri jaǵdayda, yaǵnıy belgi qatarda ushıramasa funkciya NULL mánisin qaytaradı. Belgini izlew qatar basınan baslanadı.

Tómende keltirilgen programma bólegi belgini qatardan izlew menen baylanıslı.

char qatar[] = ”0123456789”; char *pQatar;

pQatar = strchr(qatar, ’6’);

Programma islewi nátiyjesinde pQatar kórsetkishi qatar qatarınıń “6” belgisi jaylasqan ornı adresin kórsetedi.

strrchr() funkciyası berilgen belgini berilgen qatar aqırınan baslap izleydi. Eger izlew sátli bolsa, belgini qatarǵa aqırǵı kiriwiniń ornın qaytaradı, keri jaǵdayda NULL mánis qaytaradı.

Mısal ushın

char qatar[] = ”0123456789101112”; char *pqatar;

pqatar = strrchr(qatar,’0’);

ámeller orınlanıwında pqatar kórsetkishi qatar qatarınıń “01112” qatar bóleginiń

baslanıwın kórsetedi.

strspn() funkciyası eki qatardaǵı belgilerdi salıstıradı. Funkciya tómendegishe

size_t strspn(const char *str1, const char *str2);

kórinisine iye bolıp, ol str1 qatarǵa kiriwshi qanday da bir belgini izleydi hám bunday element tabılsa, onıo indeksin funkciya mánisi sıpatında qaytaradı, keri jaǵdayda funkciya qatar uzınlıǵınan bir artıq mánisti qaytaradı.

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