14-ameliy prezentaciya
.pdf14-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++)