Tajriba ishi №6 Mavzu: Funktorlarning qoʼllanilishi. Standart algoritmlar va iteratorlar. Ishning maqsadi



Yüklə 0,68 Mb.
səhifə1/5
tarix20.05.2022
ölçüsü0,68 Mb.
#58791
  1   2   3   4   5
6-tajriba dasturlashII (4)


Tajriba ishi №6
Mavzu: Funktorlarning qoʼllanilishi. Standart algoritmlar va iteratorlar.
Ishning maqsadi: C++ dasturlash tilida funktorlar va ularning qo’llanilishi, standart algoritmlar, iteratorlar bilan ishlash ko’nikmalarini shakllantirish.
Nazariy qism
Funktorlarning qoʼllanilishi
Funktorlar - bu funksiyalar kabi murojaat qilish (chaqirish) mumkin bo’lgan ixtiyoriy tipdagi obyektlardir. Ya’ni () amali qayta yuklangan obyektlardir.
Funktsiyani yaratish uchun avval sinf yaratiladi. Keyin tur va ism bo'yicha parametr bilan sinfga konstruktor yaratiladi. Buning ortidan sinf a'zosi ob'ektlarini konstruktorga oldindan e'lon qilingan parametr bilan quradigan initsializatorlar ro'yxati e’lon qilinadi. Keyin () operator yuklanadi. Nihoyat yaratilgan sinf yoki tuzilmaning xususiy ob'ektlari e'lon qilinadi:
Funktorga misol1: Juft sonlar yigindisi va toq sonlar yig'indisini aniqlash
#include
#include
using namespace std;
class summator : private vector {
public:
summator(const vector& ini){
for (auto x : ini)
this->push_back(x);
}
int operator()(bool hodisa) {
int sum = 0;
auto i = begin();
if (hodisa) i++;
while (i < end()) {
sum += *i++;
if (i == end()) break;
i++;
}
return sum;
}
};

int main() {


summator sums(vector({ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }));

cout << "Juft sonlar yigindisi = " << sums(true) << endl


<< "toq sonlar yig'indisi = " << sums(false) << endl;
}


Natija:
Juft sonlar yigindisi = 30
toq sonlar yig'indisi = 25
Funktorga misol2:
#include
using namespace std;
class calculate {
char op;
public:
calculate( char op ) : op( op ) {}
int operator()( int op1, int op2 ) {
switch( op ) {
case '+': return op1 + op2;
case '-': return op1 - op2;
case '*': return op1 * op2;
case '/': return op1 / op2;
case '%': return op1 % op2;
case '^': {
int ret = op1;
while( op2-- > 1 ) ret *= op1;
return ret;
}
default:
cout << "bunday amal mavjud emas" << endl;
return 0; } } };
int main( ) {
char oper;
int op1, op2;
do {
cout << "Ifodani kiriting (birinchi ifoda amal ikkinchi ifoda)=: " ;
cin >> op1 >> oper >> op2;
cout << op1 << " " << oper << " " << op2 << " = "
<< calculate( oper )( op1, op2 ) << endl;
} while( true );
return 0;
}

Yüklə 0,68 Mb.

Dostları ilə paylaş:
  1   2   3   4   5




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin