16-AMELIY
.pdf16-ámeliy. Qatarlar hám keńeytilgen belgiler. Qatarlar menen islewshi funkciyalar. Qatarlardı qayta islew.
Jumıstıń maqseti: C++ tiliniń standart <string> kitapxanası usınatuǵın kúshli funkciyalar hám metodlar menen tanısıw. Qatarlar ishinen informaciyanı izlew, olardıń bólimlerin ajıratıp alıw (substring), qatarlardı ózgertiw (qosıw, óshiriw, almastırıw) hám maǵlıwmat túrlerin qatarlarǵa hám kerisinshe aylandırıw boyınsha ámeliy kónlikpelerdi bekkemlew.
Teoriyalıq maǵlıwmatlar:
C++ std::string klası tekstli maǵlıwmatlardı qayta islew ushın júdá kóp qolaylı metodlarǵa iye. Tómende eń jiyi qollanılatuǵınları keltirilgen:
Qatardı izlew metodları:
ofind(sub_str): sub_str qatarınıń birinshi ushırasqan ornınıń indeksin qaytaradı. Eger tabılmasa, string::npos (arnawlı úlken san) mánisin qaytaradı.
orfind(sub_str): Qatardıń aqırınan baslap izleydi hám sub_str-dıń aqırǵı ushırasqan ornınıń indeksin qaytaradı.
ofind_first_of(chars): chars qatarındaǵı belgilerdiń qaysı biri birinshi ushırassa, sonıń indeksin qaytaradı.
Qatardıń bólimin alıw (substring):
osubstr(start_index, length): start_index poziciyasınan baslap length uzınlıqtaǵı jańa qatardı kesip alıp qaytaradı.
Qatardı ózgertiw metodları:
oinsert(index, str): index poziciyasınan baslap str qatarın qosadı.
oerase(start_index, length): start_index poziciyasınan baslap length uzınlıqtaǵı belgilerdi óshiredi.
oreplace(start_index, length, str): start_index poziciyasınan baslap length uzınlıqtaǵı bólimdi str qatarına almastıradı.
oclear(): Qatardıń ishindegi barlıq belgilerdi óshirip, onı bos qatarǵa aylandıradı.
Maǵlıwmat tiplerin aylandırıw (C++11 hám onnan keyingi versiyalarda):
oto_string(number): Sanlı (int, double, float) mánislerdi string tipine aylandıradı.
ostoi(str), stod(str): San jazılǵan qatardı (str) sáykes túrde int hám double tiplerine aylandıradı.
Ámeliy bólim:
1-Mısal: Qatardan sózdi izlew (find) hám onıń bólimin alıw (substr)
Bul mısalda biz berilgen gáp ishinen belgili bir sózdi izleymiz. Eger sóz tabılsa, sol sózden baslanatuǵın gáptiń qalǵan bólimin kesip alıp kórsetemiz.
#include <iostream> #include <string>
using namespace std;
int main() {
string gap = "C++ programmalastırıw tili - kúshli qural."; string izleniwshi_soz = "tili";
//'izleniwshi_soz'diń 'gap' ishinde qaysı indeksten baslanıwın
tabıw
size_t poziciya = gap.find(izleniwshi_soz);
//Eger 'find' funkciyası string::npos qaytarmasa, demae sóz tabılǵan
if (poziciya != string::npos) {
cout << "'" << izleniwshi_soz << "' sózi " << poziciya << "- indekste tabıldı." << endl;
//Tabılǵan poziciyadan baslap gáptiń aqırına shekemgi bólimin
alıw
string qalgan_bolim = gap.substr(poziciya);
cout << "Tabılǵan orınnan baslanatuǵın bólim: \"" << qalgan_bolim << "\"" << endl;
} else {
cout << "'" << izleniwshi_soz << "' sózi gápte tabılmadı." <<
endl;
}
//Tabılmaytuǵın jaǵdaydı tekseriw
poziciya = gap.find("Java"); if (poziciya == string::npos) {
cout << "\n'Java' sózi tabılmaǵanı ushın 'find' funkciyası string::npos qaytardı." << endl;
}
return 0;
}
2-Mısal: Qatardı ózgertiw (insert, erase, replace)
Bul mısalda bir qatardı alıp, onıń ústinde hár túrli ózgertiw ámellerin izbe-iz orınlaymız.
#include <iostream> #include <string>
using namespace std;
int main() {
string tekst = "Bul ápiwayı gáp.";
cout << "Baslanǵısh tekst: " << tekst << endl;
// 1. insert() - Belgili poziciyaǵa sóz qosıw tekst.insert(4, "júdá "); // 4-indeksten baslap "júdá " sózin
qosadı
cout << "insert() ten keyin: " << tekst << endl;
//2. erase() - Qatardıń bir bólimin óshiriw
//"ápiwayı " sózin óshiremiz (indeks 9, uzınlıǵı 8) tekst.erase(9, 8);
cout << "erase() ten keyin: " << tekst << endl;
//3. replace() - Bir sózdi basqasına almastırıw
//"gáp" sózin "mısal" sózine almastıramız
size_t pos = tekst.find("gáp"); if (pos != string::npos) {
tekst.replace(pos, 3, "mısal"); // 'gáp' sóziniń uzınlıǵı 3
}
cout << "replace() ten keyin: " << tekst << endl;
return 0;
}
3-Mısal: Sanlardı qatarǵa aylandırıw (to_string) hám kerisinshe (stoi)
Bul mısalda sanlı maǵlıwmatlardı qatarǵa qosamız hám paydalanıwshı kirgizgen sanlı tekstti esaplawlarda qollanıw ushın sanǵa aylandıramız.
#include <iostream> #include <string>
using namespace std;
int main() {
// Sanlardı qatarǵa aylandırıw int jıl = 2024;
double baha = 15.99;
string xabar = "Búgingi sáne: " + to_string(jıl) + "-jıl. Bahası:
"+ to_string(baha) + " dollar."; cout << xabar << endl;
// Qatardı sanǵa aylandırıw string tuwılgan_jıl_str;
cout << "\nTuwılǵan jılıńızdı kirgiziń: "; cin >> tuwılgan_jıl_str;
try {
int tuwılgan_jıl_int = stoi(tuwılgan_jıl_str); int jas = jıl - tuwılgan_jıl_int;
cout << "Siz shama menen " << jas << " jastasız." << endl;
}catch (const std::invalid_argument& e) {
//Eger paydalanıwshı san emes, tekst kirgizse
cout << "Qáte: Siz durıs jıl kirgizbedińiz!" << endl;
}
return 0;
}
Ámeliy tapsırmalar:
1.Teksttegi sózdi almastırıw: Paydalanıwshıdan bir gáp, almastırılatuǵın sóz hám jańa sózdi kirgiziwdi soraytuǵın programma dúziń. Programma gáptegi eski sózdiń barlıq ushırasqan jerlerin jańa sózge almastırsın. (Kórsetpe: find funkciyasın cikl ishinde paydalanıń. Hár saparı sóz tabılǵanda, replace metodın qollanıp, izlewdi sol orınnan keyin dawam etiń).
2.Veb-sayt domen atın ajıratıw: Paydalanıwshı tárepinen kirgizilgen tolıq veb-sayt adresinen (URL) tek ǵana domen atın ajıratıp alatuǵın programma dúziń. Mısalı:
oKirgizilgen: https://www.google.com/search
oShıǵıwı kerek: www.google.com
(Kórsetpe: // belgilerinen keyingi hám birinshi / belgisine shekemgi aralıqtı find hám substr arqalı tabıń).
3.Login generaciyası: Paydalanıwshıdan atın hám familiyasın sorap, olar tiykarında login jaratatuǵın programma dúziń. Login atınıń birinshi háribinen hám tolıq familiyadan ibarat bolsın, hámmesi kishi háripte.
oKirgizilgen: Atabek, Joldasbaev
oShıǵıwı kerek: ajoldasbaev
(Kórsetpe: tolower funkciyasınan hám qatar biriktiriw ámellerinen paydalanıń).
4.Arifmetikalıq ańlatpanı esaplaw: "15+23" sıyaqlı san+san kórinisindegi qatardı paydalanıwshıdan alıń. Usı qatardı analizlep, arifmetikalıq ámellerdi orınlaytuǵın hám nátiyjeni shıǵaratuǵın programma dúziń. (Kórsetpe: find('+') arqalı operciyanıń ornın tabıń, substr arqalı operciyanıń oń hám shep tárepindegi sanlardı ajıratıp alıń, stoi arqalı olardı sanǵa aylandırıń hám qosıń).
