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

14-ameliy prezentaciya

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

14-AMELIY SABAQ

QATARLARDÍ JALǴAW, SALÍSTÍRÍW, BELGILERDI IZLEWGE BAYLANÍSLÍ MÁSELELER SHESHIW.

Jumıstıń maqseti: Qatarlar boyınsha C++ tilinde programma dúziw.

Qatarlardı jalǵaw, salıstırıw hám belgilerdi izlewge baylanıslı máseleler sheshiw.

Teoriyalıq bólim:

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’};

Ámeliy bólim:

Qatarlardı jalǵaw

Qatarlardı jalǵaw (konkatenaciya) ámeli jańa qatarlardı payda etiwde keń qollanıladı. Bul maqsette «string.h» kitapxanasınan strcat() hám strncat() funkciyaları anıqlanǵan.

strcat() funkciyası sintaksisi tómendegi kóriniske iye:

char* strcat(char *str1, const char *str2)

Funkciya islewi nátiyjesinde str2 qatar, funkciya qaytarıwshı qatar – str1 qatar izine jalǵanadı. Funkciyanı shaqırıwdan aldın str1 qatar uzınlıǵı, oǵan str2 qatarı jalǵanıwı ushın jeterli bolıwı esapqa alınǵan bolıwı kerek.

Tómende keltirilgen ámeller izbe-izliginiń orınlanıwı nátiyjesinde qatar qatarına qosımsha qatar jalǵanıwı kórsetilgen:

char qatar[80]; strcpy(qatar, ”bul qatarǵa”);

strcat(qatar, ”qatar astı jalǵanadı.”);

Ámeller izbe-izliginiń orınlanıwı nátiyjesinde qatar kórsetip atırǵan

orında “Bul qatarǵa qatar astı jalǵanadı” qatarı payda boladı.

 

strncat()

funkciyası

strcat()

funkciyasınan

parıqlı

túrde str1 qatarǵa str2 qatarınıń kórsetilgen uzınlıqtaǵı qatar bólegin jalǵaydı. Jalǵanatuǵın qatar bólegi uzınlıǵı funkciyanıń úshinshi parametri sıpatında beriledi.

Funkciya sintaksisi:

char* strncat(char *str1, const char *str2, size_t num)

Tómende keltirilgen programma bóleginde str1 qatarına str2 qatarınıń

baslanǵish 10 belgiden ibarat qatar bólegi jalǵanadı:

char qatar1[80] = ”programmalastırıw tillerine misal bul-“;

char qatar2[80] = ”C++, Pascal, Basic”; strncat(qatar1, qatar2, 10);

cout << qatar1;

Ámeller orınlanıwı nátiyjesinde ekranǵa

programmalastırıw tillerine misal bul-C++, Pascal

qatarı shıǵarıladı.

Másele. Nol-terminator menen tawsılıwshı S, S1 hám S2 qatarlar berilgen. S qatardaǵı S1 qatar astıları S2 qatar astı menen almastırılsın. Máseleni sheshiw ushın tómendegi másele astıların sheshiw zárúr boladı:

1.S qatarında S1 qatar astınıń kiriw ornın anıqlaw;

2.S qatarınan S1 qatar astın óshiriw;

3.S qatarında S1 qatar astı ornına S2 qatar astın ornatıw.

Bul másele astılarınıń sheshimleri C++ tiliniń standart kitapxanalarında funkciyalar kórinisinde bar bolsa da, olardıń kodın qayta jazıw paydalanıwshıǵa bul

ámellerdiń ishki mánislerin túsiniwge imkan beredi. Tómende másele sheshiminiń programma teksti keltirilgen:

#include <iostream.h> #include <string.h> const int n = 80;

int Izlew(char *,char *); void Qırqıw(char *, int, int);

void Jaylastırıw(char *, char *, int); int main()

{

char Qatar[n], Qatar1[n], Qatar2[n]; cout << "Qatardı kiritiń: "; cin.getline(Qatar, n);

cout << "Almastırılatuǵın qatar astın kiritiń: "; cin.getline(Qatar1, n);

cout << Qatar1 << " Qoyılatuǵın qatardı kiritiń: "; cin.getline(Qatar2, n);

int qatar1_uzınlıǵı = strlen(Qatar1); int qatar_astı_ornı;

do

{

qatar_astı_ornı = Izlew(Qatar, Qatar1); if(qatar_astı_ornı != -1)

{

Qırqıw(qatar, qatar_astı_ornı, qatar1_uzınlıǵı); Jaylastırıw(Qatar, Qatar2, qatar_astı_ornı);

}

}while(qatar_astı_ornı != -1);

cout << "Almastırıw nátiyjesi: " << Qatar; return 0;

}

int Izlew(char qatar[], char qatar_astı[])

{

int qatar_parıqı = strlen(qatar) - strlen(qatar_astı); if(qatar_parıqı >= 0)

{

for(int i = 0; i <= qatar_parıqı; i++)

{

bool ústi_ústine = true;

for(int j=0; qatar_astı[j]!=’\0’&&ústi_ústine;

j++)

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