Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <algorithm>
- #include <random>
- #include <ctime>
- using namespace std;
- /*
- II - ე გზა random engine-ით
- */
- int giveMeRandom(){
- // ეს დევაისი დაგჭირდებათ, თუ ერთ და იგივე რიცხვებს გაძლებთ
- random_device dev;
- //აი აქედან იწყება რანდომ რიცხვის შემნდა
- default_random_engine generator(dev());
- // აქ დაწერთ საიდან სადამდე
- uniform_int_distribution<int> range(120000,1000000);
- //აქ დააბრუნებთ რანდომ რიცხვს
- return range(generator);
- }
- /*
- I - ლი გზა rand -ფუნქციის გამოყენებით
- */
- /*
- აქ ხიტრობა არის ის, რომ პრედიკატი ფუნქცია
- არის უბრალოდ bool ტიპის ფუნქცია, მეტი არაფერი
- */
- bool myBoolFunc(int num){
- if(num % 3 == 0){
- return true;
- }
- else {
- return false;
- }
- /*
- შემოკლებული ვარიანტი, ე.წ
- terenary ოპერატორით
- return num % 3 == 0 ? true : false;
- */
- }
- int main(){
- /*
- "seed rand" საჭიროა იმისათვის, რომ
- rand ფუნქციამ ერთი და იგივე რიცხვები
- არ დაგვიბეჭდოს!
- time(NULL) - ამის მეშვეობით ვაძლებთ
- ამ ჟამინდელ დროს რომ პროგრამის შემდგომი
- გამოძახებისას სხვადასხვა რიცხვი მივიღოთ
- */
- srand(time(NULL));
- // შევქმენით მთელი რიცხვების ვექტორი
- vector<int> vec;
- // რიცხვების რაოდენობა ვექტორში
- const int N = 150;
- int randomNumber;
- for (unsigned i = 0; i < N; i++){
- /*
- unsigned - მა არ დაგაბნიოთ,
- ჩათვალეთ ეს არის ნატურალური რიცხვები
- [1, +უსასრულობამდე]
- აქ ვავსებთ ვეტორს
- */
- /*
- rand() - ფუნქცია აბრუნებს
- 0-დან 1-მდე (1-ის გამოკლებით),
- შესაბამისად ამ რიცხვს რომ გავყოფთ 1000000-ზე
- მივიღებთ [0, 999999] შუალედში რიცხვს,
- მაგრამ რადგანაც მინიმალური გვინდა, რომ იყოს 120000
- ამიტომაც ვუმატებთ მას
- */
- randomNumber = rand() % 1000000 + 120000;
- if(randomNumber > 1000000){
- // იმ შემთხვევაში, თუ უფრო დიდი რიცხვი დაგვიგენერირდა
- randomNumber %= 1000000;
- }
- vec.push_back(randomNumber);
- /*
- random engine-თი დაგენერირებული რიცხვი
- */
- //vec.push_back(giveMeRandom());
- }
- // count- ში შევინახოთ 3-ის ჯერადი რიცხვები
- int count = count_if(vec.begin(), vec.end(), myBoolFunc);
- cout << "ვექტორში 3-ის ჯერადი რიცხვების რაოდენობა: " << count << endl;
- /*
- lambda ფუნქციამ არ შეგაშინოთ, მეორე ნაირად, ინლაინ ფუნქციები ჰქვია, ამას იმიტომ ვიყენებთ, რომ ფუნქცია სხვაგან არ გვჭრდება და არ გვინდა, რომ კოდი დავამახინჯოთ,
- სინტაქსი მარტივია
- [ეს აღნიშნავს რომ ლაბდაა] (აქ პარამეტრები){ესეც თქვენი ტანი}
- */
- int countWithLambda = count_if(vec.begin(), vec.end(), [](int num){ return num % 3 == 0 ? true : false;});
- cout << "ესეც თქვენი ლამბდა: " << countWithLambda << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement